Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
wiki:ems:ems-telegramme [2014/12/19 16:18] ingof |
wiki:ems:ems-telegramme [2019/06/09 12:10] (aktuell) ingof |
||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| ====== Telegrammaufbau ====== | ====== Telegrammaufbau ====== | ||
| - | Es gibt mehrere Telegrammtypen auf dem Bus. hier eine kleine Übersicht: | + | Es gibt mehrere Telegrammtypen auf dem Bus. Jedes Telegramm wird mit einem Break beendet. Dieses Break ist ein 0-Byte bei dem das Stopbit auch auf " |
| + | |||
| + | Hier eine kleine Übersicht: | ||
| </ | </ | ||
| Zeile 22: | Zeile 24: | ||
| Die Telegramme werden nach dem Polling gesendet. Der Busmaster kann dann Telegramme selber an alle Busteilnehmer senden. Wenn keine Telegramme mehr gesendet werden sollen wird das Polling beantwortet. | Die Telegramme werden nach dem Polling gesendet. Der Busmaster kann dann Telegramme selber an alle Busteilnehmer senden. Wenn keine Telegramme mehr gesendet werden sollen wird das Polling beantwortet. | ||
| Dabei ist das Bit7 der Zieladresse nicht gesetzt. | Dabei ist das Bit7 der Zieladresse nicht gesetzt. | ||
| + | </ | ||
| + | |||
| + | <WRAP nopagebreak> | ||
| + | ==== CRC ==== | ||
| + | |||
| + | Die CRC ist eine XOR-Verknüpfung mit Rotation. Wenn der Datenwert größer als 0x7f ist wird der Wert mit 0x12 zusätzlich mit XOR verknüpft: | ||
| + | Hier ein Beispiel-Code zur CRC-Berechnung: | ||
| + | < | ||
| + | poly = 12 | ||
| + | crc1 = 0x00 | ||
| + | |||
| + | for i in range(0, | ||
| + | crc1 = crc1 ^ int(a[i], | ||
| + | crc2 = crc1 | ||
| + | if crc1 & 0x80: crc1 ^= poly | ||
| + | |||
| + | d = 0 | ||
| + | if crc1 & 0x80: d = 1 | ||
| + | crc1 = crc1 << 1 | ||
| + | crc1 &= 0xfe | ||
| + | crc1 |= d | ||
| + | |||
| + | => crc2 | ||
| + | </ | ||
| </ | </ | ||
| Zeile 36: | Zeile 62: | ||
| ==== Beispiele ==== | ==== Beispiele ==== | ||
| + | |||
| + | Polling an an 0x10:\\ | ||
| + | '' | ||
| + | |||
| + | Antwort " | ||
| + | ''' | ||
| + | |||
| + | Abfrage eines anderen Gerätes: | ||
| {{: | {{: | ||
| - | Abfrage eines anderen Gerätes | ||
| + | |||
| + | Setzen eines Wertes: | ||
| {{: | {{: | ||
| - | Setzen eines Wertes | ||
| </ | </ | ||
| Zeile 65: | Zeile 99: | ||
| | 0x13 | 0x16 | 4 | Gerät | | 0x13 | 0x16 | 4 | Gerät | ||
| | 0x17 | | | RC20 Heizkreis | | | | 0x17 | | | RC20 Heizkreis | | | ||
| - | | 0x18 | | + | | 0x18 | |
| | 0x20 | 0x27 | 8 | Mischer | HK1 bis HK8, MM10 | | | 0x20 | 0x27 | 8 | Mischer | HK1 bis HK8, MM10 | | ||
| - | | 0x28 | | + | | 0x28 | |
| | 0x30 | 0x37 | 8 | Solar | HK1 bis HK8, SM10 | | | 0x30 | 0x37 | 8 | Solar | HK1 bis HK8, SM10 | | ||
| - | | 0x38 | <wrap help>0x5f</ | + | | 0x38 | <wrap help>0x5F</ |
| </ | </ | ||
| <WRAP nopagebreak> | <WRAP nopagebreak> | ||
| - | ==== Busadressen (EMS) ==== | + | ==== Busadressen (EMS+) ==== |
| beim EMS-Plus Bus gibt es weitere/ | beim EMS-Plus Bus gibt es weitere/ | ||
| |< | |< | ||
| - | |@# | + | |@# |
| |@# | |@# | ||
| - | | | + | | |
| - | | | + | | |
| - | | 0x48 | | + | | 0x09 | |
| + | | 0x0A | | ||
| + | | 0x0B | | ||
| + | | 0x0C | | ||
| + | | 0x0D | | ||
| + | | 0x15 | | ||
| + | | 0x18 | | ||
| + | | | ||
| + | | | ||
| + | | 0x48 | | ||
| </ | </ | ||