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:21] 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 74: | Zeile 108: | ||
<WRAP nopagebreak> | <WRAP nopagebreak> | ||
- | ==== Busadressen (EMS) ==== | + | ==== Busadressen (EMS+) ==== |
beim EMS-Plus Bus gibt es weitere/ | beim EMS-Plus Bus gibt es weitere/ | ||
|< | |< | ||
- | |@# | + | |@# |
|@# | |@# | ||
- | | 0x15 | | + | | 0x04 | |
- | | 0x18 | | + | | 0x08 | |
- | | 0x1E | | + | | 0x09 | |
- | | 0x38 | | + | | 0x0A | |
- | | 0x48 | | + | | 0x0B | |
+ | | 0x0C | | ||
+ | | 0x0D | | ||
+ | | 0x15 | | ||
+ | | 0x18 | | ||
+ | | 0x1E | | ||
+ | | 0x38 | | ||
+ | | 0x48 | | ||
</ | </ |