Skip to main content

Documentation

Datenaufbau

 

Byte Richtung Abkürzung Beschreibung
1 -> QQ Quelladresse
2 -> ZZ Zieladresse
3 -> PB Primärbefehl
4 -> SB Sekundärbefehl
5 -> NN Zahl der folgenden Bytes
6 bis 5 + NN -> Data Datenbytes
6 + NN -> CRC Prüfziffer
7 + NN <- ACK Positive Bestätigung des Empfängers (ab hier nicht bei Broadcast-Nachrichten)
8 + NN <- NN2 Datenlänge der Antwort
9 + NN bis 8 + NN + NN2 <- Data Daten vom Slave an den Master
9 + NN + NN2 <- CRC Prüfziffer
10 + NN + NN2 ->

ACK

 
11 + NN + NN2 -> SYN Kennung, dass Bus wieder bereit ist für andere Teilnehmer

Service/Befehl => Kombination von Pimär und Sekundärbefehl => Darstellung als HEX-Wert

z.B. Primärbefehl 07 (Systemdatenbefehle) + Sekundärbefehl 00 (Datum/Zeit Meldung eines Masters) = Service 0700

Vaillant AddressesCRC

MasterMuss mit expandiertem Datenstring erfolgen (https://ebus-wiki.org/doku.php/ebus/ebuscrc)

    
////////////////////////////////////////////////////////////////////////// // // CRC-Berechnung aus http://www.mikrocontroller.net/topic/75698 //
AdressDescription
10hMain////////////////////////////////////////////////////////////////////////// Control#ifdef Unit:
USE_CRC_TAB const UCHAR CRC_Tab8Value[256] ''/********************************************************************************************************/ /** VRS620Function for CRC-calculation with tab operations */ /********************************************************************************************************/ UCHAR crc8(UCHAR data, UCHAR crc_init) { UCHAR crc; crc '' (auroMATIC 620)
3FBurner

Slave

data);return(crc);}#else/********************************************************************************************************//**slower,butlessmemory
AdressDescription
23h 
25h 
26hOutside temperature sensorUCHAR) (includingCRC_Tab8Value[crc_init] DCF77^ clock)
50h  
ECh  
*/ /********************************************************************************************************/ unsigned char crc8(unsigned char data, unsigned char crc_init) { unsigned char crc; unsigned char polynom; int i; crc '' crc_init; for (i '' 0; i < 8; i++) { if (crc & 0x80) { polynom '' (unsigned char) 0x9B; } else { polynom '' (unsigned char) 0; } crc '' (unsigned char)((crc & ~0x80) << 1); if (data & 0x80) { crc '' (unsigned char)(crc | 1) ; } crc '' (unsigned char)(crc ^ polynom); data '' (unsigned char)(data << 1); } return (crc); } #endif UCHAR CalculateCRC( UCHAR**Data, int DataLen ) { UCHAR Crc '' 0; for( int i '' 0 ; i < DataLen ; ++i, ++Data ) { Crc '' crc8(**Data, Crc ); } return Crc; }