Раз уж тема Тензо-м уже есть подскажите никто не писал код в CoDeSys 2.3 для обмена по протоколу Тензо-м (нестандартному)?
Особенно интересно не написал ли кто кода для расчёта CRC по предложенному алгоритму?

И сразу попрошу, если кто-нибудь может, переведите на ST вот этот код:
(Ибо я ни бельмеса не понимаю в этой арабской вязи)

Ниже приведен пример формирования CRC в виде ассемблерной вставки для C++
BYTE CDeviceTestDlg::CRCMaker(BYTE b_input, BYTE b_CRC)
{
__asm
{
mov al,b_input
mov ah,b_CRC
mov cx,8
mod1: rol al,1
rcl ah,1
jnc mod2
xor ah,69h
mod2: dec cx
jnz mod1
mov b_CRC,ah
}
return b_CRC;
При формировании CRC используется примитивный неприводимый порождающий полином в 8-й степени
P(X)-101101001b (младшая часть 69h). На передающей стороне в конце массива используется нулевой байт (00h).
Подставляя в переменную b_input байты массива, включая нулевой байт, вычисляется CRC код с помощью
подпрограммы CRCMaker. При передаче массива нулевой байт заменяется вычисленным байтом CRC. На
принимающей стороне вычисляют CRC, подставляя в b_input байты принятого массива, включая принятый CRC
код. Если вычисленный CRC будет равен нулю, то массив принят правильно. Вначале приема/передачи перед
вычислением CRC в переменную b_CRC записывается ноль. По вставленному и выброшенному FEh CRC не
вычисляется.

ссылка на документ:
http://www.tenso-m.ru/pdf/tv19protocol.pdf