2015-12-09 11 views
0

Я пытаюсь расшифровать протокол, используемый для связи RS485 между несколькими контроллерами HVAC. Я смог идентифицировать отдельные сообщения, как вы можете видеть в приведенном ниже списке.Какой алгоритм используется для вычисления контрольной суммы?

00020003400012A9 
00030103400012A7 

00010303400012A7 
2001030A400012010104FFFFFFFF7E 

00010303400016A3 
200103094000160C0C010400441C 

000103074100000024A003ED 
2001030A4100000024A0030895BA73 

0001032A90020030000200310700013000020131070002300002023107060330000203310700043000FF053000FF1F 
2001030290004A 

00020003400012A9 
00030103400012A7 

00010302D10227 
20010312D140200100002101000022010000230100002F 

00020003400012A9 
00030103400012A7 

00010302D20226 
20010302D240C8 

00020003400012A9 
00030103400012A7 

00010302D10227 
20010312D140200100002101000022010000230100002F 

00020003400012A9 
00030103400012A7 

00010302D20226 
20010302D240C8 

00020003400012A9 
00030103400012A7 

00010302D20226 
20010302D240C8 

00020003400012A9 
00030103400012A7 

00010302D20226 
20010302D240C8 

00020003400012A9 
00030103400012A7 

00010302D20226 
20010302D240C8 

Каждая строка содержит одно полное сообщение в шестнадцатеричном формате. Я думаю, что последний байт (последние два шестнадцатеричных символа) является контрольной суммой предыдущих данных, но это только предположение обо мне.

Какой алгоритм используется для расчета этой контрольной суммы?

ответ

0

Теперь я открыл алгоритм. Его единственное суммирование данных и построение своего рода 2-го дополнения. Вот пример:

data: 0x20010312D14020010000210100002201000023010000 

binary sum: 1 1101 0001 (0x1D1) 
last byte: 1101 1110 (0xD1) 
invert:  0010 1110 (0x2E) 
add 1:  0010 1111 (0x2F) 
use only last byte of calculated CS 

CS: 0x2F