Просмотр полной версии : Подсчет контрольной суммы!
Всем привет! Необходимо реализовать опрос устройства с нестандартным протоколом по 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
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
Я не искал всс в интернете, взял описание из поста
Извиняйте, из доки по USS протоколу на инглише
Вроде простой XOR байт за байтом, начальный 0-й, стартовый байт 0.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot