1

Тема: опрос по Modbus протоколу

Добрый день, в своём проекте для контроллера Canny gamma мне необходимо опросить подключенную к контроллеру панель оператора Weintek(MT8050iE) по протоколу Modbus RTU, т.е. считать нажатые кнопки управления из панели и передать их в программу контроллера Canny Gamma для включения необходимых выходов, также необходимо будет передать в панель оператора значения датчиков подключенные к контроллеру для отображения их состояния. Какой протокол передачи мне использовать в программном обеспечении контроллера Canny Gamma Modbus-Master или Modbus-Slave если мне нужно и передавать состояния датчиков и опрашивать состояния кнопок из панели? Панель оператора в описании может работать в режимах RTU Master,Slave.

2

Re: опрос по Modbus протоколу

Какой протокол передачи мне использовать в программном обеспечении контроллера Canny Gamma Modbus-Master или Modbus-Slave если мне нужно и передавать состояния датчиков и опрашивать состояния кнопок из панели? Панель оператора в описании может работать в режимах RTU Master,Slave.

Если панель будет работать в режиме RTU Master, то контроллер должен работать в режиме  RTU Slave.
Если панель будет работать в режиме RTU Slave, то контроллер должен работать в режиме  RTU Master.

3

Re: опрос по Modbus протоколу

Добрый день! Подскажите пожалуйста, при обмене по протоколу modbus rtu в режиме контроллер(Slave) другое устройство (Master), как описать в конфигурации контроллера Canny Gamma адрес регистра который необходимо прочитать Master устройству. В примере из справочника как я понял описывается регистры D3:D2 D5:D4 UART для записи уже подготовленного значения, но я не нашёл где описывается конфигурация для настройки адреса передаваемого в опрос регистра. В примере посылке <- 20 03 02 FA FA C6 A0 ,
20 адрес слейв устройства(контроллер Canny)
03 - код функции опроса регистров
02 - количество байт данных
FA - младший байт регистра данных
FA - старший байт регистра данных
A0 - контрольная сумма.
По идее FA FA как я думаю это и есть адрес регистра для опроса мастером, но куда тогда данные надо складывать? Если записывать данные в параметры "Рег.уст.сообщ.UART D3:D2" и "Рег.уст.сообщ.UART D5:D4" , то компилятор выдаёт ошибку, потому что в эти регистры уже записана конфигурация "0xFA02" и "0x00FA", тогда в какие регистры записывать данные?

4

Re: опрос по Modbus протоколу

Для удобства следует рассматривать примеры MASTER и SLAVE совместно, т.к. приведенный в примере SLAVE ответ как раз является результатом получения соответствующего запроса из примера MASTER.
Более детально с форматом команд MODBUS можно познакомиться, например, тут: https://ipc2u.ru/articles/prostye-reshe … analog_out
В примере MASTER запрашивает данные 1го регистра, начиная с адреса 0x0001. SLAVE, получив запрос, проверяет адрес узла, к которому обращается MASTER, определяет команду MODBUS, получает информацию о том с какого адреса регистра происходит чтение и сколько регистров читается. В примере SLAVE это выполняется с помощью блоков Равенство №7 (D0=0x20 - адрес узла; D1=0x03 - команда на чтение регистров), Равенство №11 (D2:D3=0x0001 - адрес первого регистра чтения) и Равенство №4 (D4:D5=0x0001 - количество запрашиваемых регистров).
Если MASTER может запрашивать данные с нескольких разных адресов, то, учитывая что регистры записи на диаграмме могут быть только в одном экземпляре, нужно подготавливать ответ, для формирования сообщения от SLAVE, например с помощью коммутаторов N-в-1, например как в примере №5 драйвера CAN (https://canny.ru/docs/c72gamma/can/#sec … an-primery).

5

Re: опрос по Modbus протоколу

Правильно я понял, что D0=0x20 адрес слейв устройства, который в данном в данном случае является адресом контроллера Canny?
D2:D3 = 0x0001 адрес опрашиваемого регистра в котором находится значение FAFA регистров D3:D4?

Дело в том что в формате опроса мастером, который будет опрашивать контроллер Canny указан такой порядок 3х-7#5, где 3х - код функции модбаса, 7-адрес устройства (контроллер PLC), 5- адрес опрашиваемого регистра где находится значение.

Из документации конечно не очень понятно, где адрес опрашиваемого регистра значения.

6

Re: опрос по Modbus протоколу

Пока не удалось получить данные с контроллера Canny по Modbus протоколу.
Сделал тестовый проект с подключением такого же master устройства к программному эмулятору Slave устройства в программе Modbus Pool данные в мастер устройство получил. Посмотрите, в прикреплённом файле ниже выслал протокол обмена может он поможет понять вам , смогу ли с мастер устройства опросить контроллер Canny .

Вложений в сообщении

Иконка вложения logCom_Modbus.PNG 84.78 кб, скачивался 26 раз, последний раз 2022-11-14 

7

Re: опрос по Modbus протоколу

Обратите внимание, что на скриншоте адрес Slave-узла указан в десятичном формате равным 20, что соответствует 0x14 в шестнадцатеричном формате, что и отражено в окне лога на скришоте.
Также обратите внимание, что при работе с интерфейсом RS-485 может использоваться специальная конфигурация UART4 (https://canny.ru/docs/c72gamma/uart/#se … ime-rs-485), позволяющая подключаться к RS-485 с помощью специальных выделенных контактов разъема X1 контроллера (https://canny.ru/img/docs/ru/c72gamma/i … ndex_2.png).