Рекомендуется ознакомиться с усовершенствованной версией функции RXD_CRC
Функция выполняет расчет контрольной суммы (настройка Тип) по RXD буферу, начиная с index
до (index + size - 1)
. Рассчитанная контрольная сумма сравнивается со значением, хранящемся в RXD буфере на позиции с индексом value_index
.
Результат сравнения передается на выход valid
.
В меню функций | На схеме |
---|---|
![]() |
![]() |
Название | Тип значения | Описание |
---|---|---|
index |
int32 | Позиция в RXD буфере, начиная с которой производится расчет контрольной суммы |
size |
int32 | Длина массива данных для расчета контрольной суммы |
value_index |
int32 | Позиция значения в RXD буфере, с которым будет сравниваться рассчитанная контрольная сумма |
Название | Тип значения | Описание |
---|---|---|
valid |
bool | Результат проверки контрольной суммы. Если True, то расчетное значение контрольной суммы совпадает со значением в RXD буфере, расположенном по индексу value_index . |
Название | Описание |
---|---|
Тип | Алгоритм расчета контрольной суммы: CRC-16 (Modbus) - Стандартный алгоритм CRC-16 Modbus. CRC-8 (Maxim/Dallas) - Стандартный алгоритм CRC-8 Maxim/Dallas. XOR (8 bits) - Последовательная операция XOR. Сумма (8 bits) - Последовательное сложение элементов. |
Порядок байт | Только если Тип = CRC-16 (Modbus) Порядок байт, для дальнейшего выполнения преобразований контрольной суммы (для примера считаем, что расчетное значение = 0x0201 ):Младшим вперед - Далее будет использовано значение 0x0102 .Старшим вперед - Далее будет использовано значение 0x0201 . |
Инвертировать | Если флаг установлен, то перед следующей операцией значение будет побитово инвертировано. Например, если было 0x0201 , то будет 0xFDFE . |
Добавить 1 | Если флаг установлен, то перед записью в буфер значение будет увеличено на 1 .Например, если было 0x0201 , то будет 0x0202 . |
Операции "Порядок байт", "Инвертировать", "Добавить 1" выполняются после расчета контрольной суммы по очереди в порядке перечисления и влияют на финальное значение, используемое при сравнении.