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
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.
Hat evtl. jemand eine Idee, wo ich dieses Thema noch adressieren könnte? Siedle selbst ist natürlich wenig hilfsbereit. ;-) Grüße, Jan
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
(Summe 1. bis 7. Byte) & 0xFF und das Ganze negiert... Das Sieht gut aus, ich verifizier das morgen mal. Danke schon mal Vorab, Jan
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.