https://owen.ru/forum/showthread.php?t=13584 не благодарите
https://owen.ru/forum/showthread.php?t=13584 не благодарите
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Судя по коду расчета там CRC не Modbus
У этого устройства нестандартный протокол. modbus.lib тут не поможет. Надо пользоваться SysLibCom.
Последний раз редактировалось Newcomer; 20.05.2021 в 13:41.
Вот на C# код для расчета CRC Modbus, видно что хоть и на C или на чем там у вас, отличается
Код:public static ushort CRC16_Modbus(byte[] msg) { const ushort polinom = 0xa001; ushort code = 0xffff; for (int i = 0, size = msg.Length; i < size; ++i) { code ^= (ushort)(msg[i] << 8); for (uint j = 0; j < 8; ++j) { code >>= 1; if ((code & 0x01) != 0) code ^= polinom; } } return code; }
В любом случае, благодарю.
Согласен про modbus.lib. А вот чтобы убедится что устройство работает надо запрос сделать с КС (верно?)(у меня их два на столе).Зачем тебе считать КС если modbus.lib это сама делает. Тебе надо убедиться, что твое устройство работает по протоколу Modbus RTU.
Capzap, товарищ! (Обратился бы по имени, так всё-таки правильней). Я понял ваш посыл - добиваться своим умом и трудом. Каждый должен быть на своём месте и оттачивать мастерство. Честно, того же мнения. В этом и есть смысл развития...
Эх, сейчас бы машину декомпрессии времени, разобрался бы детальней с задачей.
Ну да ладно. Ухожу на повторный круг образования. По результату сообщу.
Продолжаем разбор.
Как правильно получить контрольную сумму, для модбас? Тренируюсь на МВА.
Скриншот 21-05-2021 174202.jpg
Думал прогнать через проверку CRC и добавить недостающие байты, но ноля не получается.
Скриншот 21-05-2021 174401.jpg
Добавил байты
Скриншот 21-05-2021 174908_2.jpg
Нет ноля.
Скриншот 21-05-2021 174939_2.jpg
Обыкновенно CRC_GEN вычисляет контрольную сумму, которая присоединеняется к оригинальному сообщению. Если теперь снова вычислить контрольную сумму сообщения вместе с присоединенной к нему контрольной суммой, то в результате получится 0.
Последний раз редактировалось Павел_Хабаровск; 21.05.2021 в 11:36.