====== Telegrammaufbau ======
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 "0" ist. Mit dem Startbit zusammen also 10 Bitlängen "0".
Hier eine kleine Übersicht:
==== Polling ====
Das Polling ist die Adresse bei dem das Bit7 gesetzt ist. Das Polling wird vom Busmaster gesendet und mit einem Break beantwortet.
==== Antwort auf Polling ====
Wenn der Busteilnehmer der durch das Polling angesprochen wurde nicht zu senden hat wird das Polling mit der eigenen Adresse und einem Break beantwortet.
==== Telegramme ====
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.
==== 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,len(a)-1):
crc1 = crc1 ^ int(a[i],16)
crc2 = crc1
if crc1 & 0x80: crc1 ^= poly
d = 0
if crc1 & 0x80: d = 1
crc1 = crc1 << 1
crc1 &= 0xfe
crc1 |= d
=> crc2
==== Anfragen ====
Wenn Der Busteilnehmer nach seinem Polling Anfragen an andere Busteilnehmer senden will wird bei der Zieladresse das Bit7 gesetzt. Die angesprochenen Busteilnehmer müssen dann sofort mit einem Telegramm an den Anfragenden antworten.
==== Empfangsbestätigung ====
Wenn Anfragen gesendet wurden werden diese Positiv bestätigt (0x01) oder ein Fehler gemeldet (0x04)
==== Beispiele ====
Polling an an 0x10:\\
''0x90 ''\\
Antwort "Nichts zu senden":\\
'''0x10 '''\\
Abfrage eines anderen Gerätes:
{{:wiki:ems:ems-read.jpg?1000|}}
Setzen eines Wertes:
{{:wiki:ems:ems-write.jpg?1000|}}
==== Busadressen (EMS) ====
Jeder Busteilnehmer hat eine eindeutige Adresse. Auf dem Bus wird in größeren Abständen einmal jede unbekannte Adresse abgefragt. Die Busteilnehmer werden beim Beantworten des Pollings häufiger abgefragt und werden dann auf der RC30/35 mit der Bezeichnung als Busteilnehmer angezeigt.
|<60%>|
|@#dddddd:**Adressen:**||@#dddddd:**Anzahl**|@#dddddd:**Anzeige RC30**|@#dddddd:**Bemerkung**|
|@#dddddd:**von**|@#dddddd:**bis**|@#dddddd:****|@#dddddd:****|@#dddddd:****|
| 0x04 | | | RS232 Gateway | |
| 0x08 | | | MC10 | |
| 0x09 | | | BC10 | |
| 0x0A | | | Handterminal | |
| 0x0B | | | Computer | Serice Key |
| 0x0C | | | Kaskade | |
| 0x0D | | | Modem | KM200 |
| 0x0E | | | Konverter | |
| 0x0F | | | Zeitmodul | |
| 0x10 | | | RC30 / RC35 | |
| 0x11 | | | WM10 | Hydr. Weiche |
| 0x12 | | | ZM EED | Zusatzmodul External Error Detection |
| 0x13 | 0x16 | 4 | Gerät | |
| 0x17 | | | RC20 Heizkreis | |
| 0x18 | 0x1F | 8 | RC20 | HK1 bis HK8 |
| 0x20 | 0x27 | 8 | Mischer | HK1 bis HK8, MM10 |
| 0x28 | 0x2F | 8 | Warmwasser | HK1 bis HK8 |
| 0x30 | 0x37 | 8 | Solar | HK1 bis HK8, SM10 |
| 0x38 | 0x5F | 40 | Gerät | |
==== Busadressen (EMS+) ====
beim EMS-Plus Bus gibt es weitere/andere Adressen:
|<60%>|
|@#dddddd:**Adressen:**||@#dddddd:**Anzahl**|@#dddddd:**Anzeige RC35**|@#dddddd:**Bemerkung**|
|@#dddddd:**von**|@#dddddd:**bis**|@#dddddd:****|@#dddddd:****|@#dddddd:****|
| 0x04 | | | --- | |
| 0x08 | | | UBA 3 | |
| 0x09 | | | MC10 | |
| 0x0A | | | --- | |
| 0x0B | | | Servicekey | |
| 0x0C | | | Kaskade | |
| 0x0D | | | Easycom | Modem |
| 0x15 | | | MMxxx | Mischer HK2 |
| 0x18 | | | RC200 | |
| 0x1E | | | | |
| 0x38 | | | RC100 | |
| 0x48 | | | KM200 | |