PDA

Просмотр полной версии : Неправильно считает CRC KUNKIN KL7206



SteroidMan
18.06.2023, 21:03
Приветствую ув. форумчане. Столкнулся с проблемой, прошу помочь.

Купил китайскую нагрузку KUNKIN KL7206 работает по протоколу MODBUS RTU, но в ее ответах CRC идет с перепутанными битами (зеркальными от старшего к младшему). Как лучше поступить в такой ситуации? (проще исправить)

melky
19.06.2023, 08:58
Прикольно, байты CRC местами неправильно стоят. Пишите китайцам по данному поводу, пусть исправляют прошивку.
Это уже второй случай, который вижу от китайцев, где байты CRC изменены местами....

В довесок, примеры Modbus еще не парсятся... в топку такие устройства, или там очередное -- Modbus подобный протокол ?

melky
19.06.2023, 09:22
Страница 14

Load return data: 01 03 30 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13
D14 D15 D16 D17 D18 CRCH CRCL - каким надо быть, чтобы старший байт CRC поставить первым в Modbus, то есть уже не соответствует стандарту.

SteroidMan
19.06.2023, 11:18
Китайцем написал, но не факт что от них получится что-либо получить...
А так да Modbus подобный протокол, но вот решил подключить ее к Codesys 3,5 и возникли проблемы. Хочу совета как проще исправить (соответственно не устройство, а Codesys) чтобы не писать полностью руками опрос, если это возможно.

melky
19.06.2023, 11:36
Если дело только в расположении байт CRC то можно взять библиотеку Modbus с открытым кодом и там исправить положение байт. Если это возможно.
Но примеры в документации даны криво или обобщенно, некоторые не поддаются парсингу Modbus даже если поменять CRC

imaex
19.06.2023, 15:00
Круто. А ещё удивлялся - кому может понадобиться нечто вроде такого?

[MODBUS]DoCRC

Enables or disables the Modbus Cyclic Redundancy Check (CRC), a communications check. The MODBUS driver does a CRC on incoming data and provides a CRC remainder in outgoing data blocks. In some limited cases, such as the testing of “slave” drivers, it may be necessary to disable the CRC.

:eek:

IVM
19.06.2023, 17:10
Приветствую ув. форумчане. Столкнулся с проблемой, прошу помочь.

Купил китайскую нагрузку KUNKIN KL7206 работает по протоколу MODBUS RTU, но в ее ответах CRC идет с перепутанными битами (зеркальными от старшего к младшему). Как лучше поступить в такой ситуации? (проще исправить)

Опрашивай как нестандартное устройство через библиотеку.

Валенок
21.06.2023, 21:05
...Как ..... (проще исправить)
1.Делаешь копию modbus.lib. Например modbus_with_kunkin.lib
2.Добавляешь туда глобальную переменную fucking_kunkin
3.Открываешь MB_CRC
4.Добавляешь в конце

MB_CRC := sel(fucking_kunkin, MB_CRC, rol(MB_CRC, 8)); //или чего там - байты таки или биты зеркально?
5.Сохраняешь либу
6.Открываешь проект и меняешь modbus на modbus_with_kunkin
7.ФБ с обращением к kunkin обрамляешь:

fucking_kunkin := true;
..(...); //ФБ с обращением к kunkin
fucking_kunkin := false;
8. Спрашиваешь куда перевести благодарность


PS
работа с modbus.lib - см. рэ и форум

melky
22.06.2023, 08:39
Валенок там если примеры посмотреть, они почему-то не парсятся как Modbus запросы/ответы даже если поменять местами байты CRC....
При этом некоторые парсятся. Возможно просто ошибка в документаци а возможно и отсебятина....

Валенок
22.06.2023, 10:07
Так ТС сказал "по протоколу MODBUS RTU, но в ее ответах CRC идет с перепутанными" Я пдф не смотрел и верю Вашему п#3. Поэтому и акцентировал - байты или биты ?

Привел простейшую правку для условий когда CRC и отправка и ответа - левые, а биб-ка должна работать и с нормальными модбасами и с кункином одновременно. То что именно "в ... ответах" - то это ТС пусть сам ищет нужную развилку. Принцип показан. Мозги есть, коли нашел про CRC.

"не парсятся как Modbus запросы/ответы" - вот пусть сам код распарсивания напишет, а показать место куда и как - не проблема. Хотя если разберет - сам найдет скорее всего.

И Вы же сказали - "возможно..". TC'а не с ложечки кормить же. Пусть сам и исследует и рез-ты кладет сюда если не знает что дальше.

melky
22.06.2023, 10:10
Валенок байты, я проверял примеры из pdf. В первую очередь да, взять бибку и указать в ней иную установку байт CRC и пробовать. Так как часть примеров проходят парсинг Modbus а часть нет, возможно это просто ошибка в доках.
Если действительно просто перепутыш с CRC то это уже будет второе устройство от китайских товарищей на моей памяти. :)

Валенок
22.06.2023, 14:47
Если только CRC ну работы же на 3 минуты - MB_UNI_IO, строка 61....