PDA

Просмотр полной версии : Подсчет контрольной суммы!



Jolly
19.09.2023, 16:11
Всем привет! Необходимо реализовать опрос устройства с нестандартным протоколом по RS 485.
В документации есть такая таблица (во вложении)

В этой таблице байт №23 BCC - это контрольная сумма. Метод ее подсчета написан, но так как я не сталкивался с подобным - не совсем понимаю как это переписать на ST.
Опрос организовать могу, но не могу посчитать контрольную сумму. Если кто сталкивался, подскажите!

МихаилГл
19.09.2023, 16:19
В цикл for i=0 to 22 загони и массив используй.
i это номер байта от 0 до 22, а байт, это само число на этом месте.

Csum[0]=byte[0]
for i=1 to 22 do
Csum[i]=Csum[i-1] xor byte[i]
End_for

melky
19.09.2023, 17:22
0 байт в расчете CS вроде не участвует. или участвует, что-то не догоню...


4.4. BCC generation
The following example shows how the BCC is generated:
BCC = 0, before the first character of a telegram is received (STX)
BCC 0 0 0 0 0 0 0 0
After the first character has been received: BCCnew = BCCold EXOR "first character"
(EXOR = exclusive OR logic operation)
BCCold = 0 0 0 0 0 0 0 0
EXOR
"first character" = 0 0 0 0 0 0 1 0 ( ^ STX)
________________________________________________
BCCnew = 0 0 0 0 0 0 1 0
After each additional character has been received, this is EXOR’d with BCCold EXOR, in order to regenerate
BCCnew, e. g.:
BCCold = 0 0 0 0 0 0 1 0
EXOR
"second character"= 1 1 0 1 0 1 1 0
________________________________________________
BCCnew = 1 1 0 1 0 1 0 0
The result is the BCC after the last net character.

МихаилГл
19.09.2023, 17:28
0 байт в расчете CS вроде не участвует. или участвует, что-то не догоню...

Самая первая строчка, где i=0
Я не искал всс в интернете, взял описание из поста

melky
19.09.2023, 17:30
Извиняйте, из доки по USS протоколу на инглише

Вроде простой XOR байт за байтом, начальный 0-й, стартовый байт 0.

Jolly
19.09.2023, 17:32
Спасибо! Буду пробовать!