Просмотр полной версии : Неправильно считает CRC KUNKIN KL7206
SteroidMan
18.06.2023, 21:03
Приветствую ув. форумчане. Столкнулся с проблемой, прошу помочь.
Купил китайскую нагрузку KUNKIN KL7206 работает по протоколу MODBUS RTU, но в ее ответах CRC идет с перепутанными битами (зеркальными от старшего к младшему). Как лучше поступить в такой ситуации? (проще исправить)
Прикольно, байты CRC местами неправильно стоят. Пишите китайцам по данному поводу, пусть исправляют прошивку.
Это уже второй случай, который вижу от китайцев, где байты CRC изменены местами....
В довесок, примеры Modbus еще не парсятся... в топку такие устройства, или там очередное -- Modbus подобный протокол ?
Страница 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) чтобы не писать полностью руками опрос, если это возможно.
Если дело только в расположении байт CRC то можно взять библиотеку Modbus с открытым кодом и там исправить положение байт. Если это возможно.
Но примеры в документации даны криво или обобщенно, некоторые не поддаются парсингу Modbus даже если поменять CRC
Круто. А ещё удивлялся - кому может понадобиться нечто вроде такого?
[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:
Приветствую ув. форумчане. Столкнулся с проблемой, прошу помочь.
Купил китайскую нагрузку KUNKIN KL7206 работает по протоколу MODBUS RTU, но в ее ответах CRC идет с перепутанными битами (зеркальными от старшего к младшему). Как лучше поступить в такой ситуации? (проще исправить)
Опрашивай как нестандартное устройство через библиотеку.
...Как ..... (проще исправить)
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 - см. рэ и форум
Валенок там если примеры посмотреть, они почему-то не парсятся как Modbus запросы/ответы даже если поменять местами байты CRC....
При этом некоторые парсятся. Возможно просто ошибка в документаци а возможно и отсебятина....
Так ТС сказал "по протоколу MODBUS RTU, но в ее ответах CRC идет с перепутанными" Я пдф не смотрел и верю Вашему п#3. Поэтому и акцентировал - байты или биты ?
Привел простейшую правку для условий когда CRC и отправка и ответа - левые, а биб-ка должна работать и с нормальными модбасами и с кункином одновременно. То что именно "в ... ответах" - то это ТС пусть сам ищет нужную развилку. Принцип показан. Мозги есть, коли нашел про CRC.
"не парсятся как Modbus запросы/ответы" - вот пусть сам код распарсивания напишет, а показать место куда и как - не проблема. Хотя если разберет - сам найдет скорее всего.
И Вы же сказали - "возможно..". TC'а не с ложечки кормить же. Пусть сам и исследует и рез-ты кладет сюда если не знает что дальше.
Валенок байты, я проверял примеры из pdf. В первую очередь да, взять бибку и указать в ней иную установку байт CRC и пробовать. Так как часть примеров проходят парсинг Modbus а часть нет, возможно это просто ошибка в доках.
Если действительно просто перепутыш с CRC то это уже будет второе устройство от китайских товарищей на моей памяти. :)
Если только CRC ну работы же на 3 минуты - MB_UNI_IO, строка 61....
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot