Forum: Mikrocontroller und Digitale Elektronik Siedle Vario Bus Checksummenberechnung "Codeschloss" COM611


von Jan S. (jan_s)


Lesenswert?

Hallo zusammen,

ich habe eine Siedle Codetastatur COM611 am dazugehörigen Controller 
EC602 im Einsatz. An sich eine schöne runde(aber teure) Sache. Da mir 
diese Kiste aber zu beschränkt ist für das viele Geld, habe ich mich ans 
Analysieren des Protokolls gemacht.

Es handelt sich um eine Halbduplex RS485 Multimaster Schnittstelle mit 
9600Bit/s 8n1, also ziemlich gewöhnlich.
Das Protokoll seitens der Codetastatur scheint auch relativ trivial zu 
sein, einzig die Checksumme gibt sich mir widerspenstig. Es scheint eine 
relativ simple Checksumme zu sein, evtl. eine XOR mit Startwert, jedoch 
laufe ich gerade ein wenig gegen die Wand was die Berechnung angeht.
Evtl. hat jemand von euch eine Idee dazu.

Hier mal ein paar Beispiele, das vorletzte Byte beinhaltet wohl die 
Checksumme, der eingegebene Code wird "lesbar" übermittelt, 
Funktion/Code also Bestätigung mit "F" Taste und adressiertes Klingeln 
"Klingel" Taste unterscheiden sich auch nur im dritten Byte.

Code/Funktion
-------------
Code Eingabe "0000 + F" an COM 611
0x02 0xFF 0x15 0x01 0x00 0x00 0xFF 0xFF 0x00 0xED 0x03

Code Eingabe "00000000 + F" an COM 611
0x02 0xFF 0x15 0x01 0x00 0x00 0x00 0x00 0x00 0xEB 0x03

Code Eingabe "1234 + F" an COM 611
0x02 0xFF 0x15 0x01 0x12 0x34 0xFF 0xFF 0x00 0xA7 0x03

Code Eingabe "12345678 + F" an COM 611
0x02 0xFF 0x15 0x01 0x12 0x34 0x56 0x78 0x00 0xD7 0x03

Code Eingabe "0000 + Klingel" an COM 611
0x02 0xFF 0x16 0x01 0x00 0x00 0xFF 0xFF 0x00 0xEC 0x03

Code Eingabe "00000000 + Klingel" an COM 611
0x02 0xFF 0x16 0x01 0x00 0x00 0x00 0x00 0x00 0xEA 0x03


Rückmeldung bei korrektem Code vom EC602
0x02 0x01 0x13 0x40 0x01 0x00 0x1E 0x8D 0x03 0x06
(letztes BYte evtl. ACK von COM611)


Adressiertes Klingeln
---------------------
Code Eingabe "1234 + Klingel" an COM 611
0x02 0xFF 0x16 0x01 0x12 0x34 0xFF 0xFF 0x00 0xA6 0x03

Code Eingabe "12345678 + Klingel" an COM 611
0x02 0xFF 0x16 0x01 0x12 0x34 0x56 0x78 0x00 0xD6 0x03


Türöffner Taste außen
---------------------
Türöffner Taste an COM611
0x02 0xFF 0x17 0x01 0x01 0xE8 0x03

Wie ihr seht scheint die Checksumme eher trivial zu sein, evtl. bin ich 
einfach zu blöd. ;-)


Grüße,
Jan

von Jan S. (jan_s)


Lesenswert?

Ich komme bislang nur so weit, dass wenn ich rechne:

> Code Eingabe "00000000 + F" an COM 611
> 0x02 0xFF 0x15 0x01 0x00 0x00 0x00 0x00 0x00 0xEB 0x03
       0xFF 0x15 0x01 jeweils XOR(00 ist ja ohne Effekt) => EB

allerdings bekomme ich das nicht hiermit in Einklang

> Code Eingabe "0000 + F" an COM 611
> 0x02 0xFF 0x15 0x01 0x00 0x00 0xFF 0xFF 0x00 0xED 0x03

Einziger unterschied sind zweimal 0xFF, was ja genau null Effekt hätte, 
hier aber hat.

von Jan S. (jan_s)


Lesenswert?

Hat evtl. jemand eine Idee, wo ich dieses Thema noch adressieren könnte?
Siedle selbst ist natürlich wenig hilfsbereit. ;-)

Grüße,
Jan

von Achim M. (minifloat)


Lesenswert?

Jan schrieb:
> Code Eingabe "0000 + F" an COM 611
> 0x02 0xFF 0x15 0x01 0x00 0x00 0xFF 0xFF 0x00 0xED 0x03
1
      0xFF+0x15+0x01      +    0xFF+0xFF = 0x313
2
3
      0x313 & 0xFF = 0x13
4
      Zweierkomplement(0x13) = 0xED
Wäre das eine Möglichkeit? Beim zweiten und dritten String funktionierts 
auch.

mfg mf

von Jan S. (jan_s)


Lesenswert?

(Summe 1. bis 7. Byte) & 0xFF und das Ganze negiert...
Das Sieht gut aus, ich verifizier das morgen mal.

Danke schon mal Vorab,
Jan

von Achim M. (minifloat)


Lesenswert?

Es gibt eine ganz billige Rechnung dafür:
Alles was zwischen dem Startmarker 0x02 und dem Endmarker 0x03 kommt in 
eine 8bit-unsigned-Variable aufsummieren. Überlauf ist gewollt! Dann 
diese 8bit-unsigned-Variable auf Null überprüfen é voila...
Kommt nicht 0 raus, wird wohl ein Fehler aufgetreten sein.
mfg mf

von Jan S. (jan_s)


Lesenswert?

Jap, ich verstehe, die Verifikation ist dadurch sehr einfach.
Das Erstellen der Checksumme allerdings auch.

Das Verfahren, passt auch für Antwortpakete des Controllers, wunderbar. 
:-)

Grüße,
Jan

von Jan S. (jan_s)


Lesenswert?

Ich habe im Hausbus Forum eine Referenz abgelegt:
Beitrag "[Referenz] Siedle Vario Bus Protokoll, COM611 Codetastatur"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.