Главная  /  On-line руководство  /  Инициализация устройства в режиме работы по протоколу «MODBUS»

Инициализация устройства
в режиме работы по протоколу «MODBUS»


Содержание

Общие данные
Действие «modbus_Start()»
Настройка устройства для работы по протоколу «Modbus TCP»
Настройка устройства для работы по протоколу «Modbus RTU»
Информация о текущем состоянии



Общие данные

Для работы по протоколу «MODBUS», необходимо выполнить инициализацию устройства. Инициализация осуществляется при помощи «Программы Настройки».



Действие «modbus_Start()»

Для задания режимов работы, необходимо, на вкладке «Действия» создать действие «modbus_Start()» (обмен данными по протоколу MODBUS, см. рис. ниже).


Smacont. Действие modbus_Start()     Smacont. Действие modbus_Start()

Действие «modbus_Start()»

Действие «modbus_Start()» ВЫПОЛНЯЕТСЯ АВТОМАТИЧЕСКИ, при перезагрузке или при подаче питания на устройство.

При изменении параметров, для того чтобы они вступили в силу, НЕОБХОДИМО перезагрузить устройство или выполнить действие в ручном режиме (нажать символ «►» на вкладке «Действия»).



Настройка устройства для работы по протоколу «Modbus TCP»

«Modbus TCP/IP» или «Modbus TCP» – вариант Modbus, используемый для связи по сетям TCP/IP, подключающийся через порт 502. Это не требует вычисления контрольной суммы, поскольку нижние уровни уже обеспечивают защиту контрольной суммы. Подробнее можно ознакомиться в разделе «Описание протокола Modbus TCP».

В WiFi-сети, адресом устройства является его IP-адрес. Обычно устройства находятся в одной подсети, где IP адреса отличаются последними цифрами 192.168.1.20 при использовании самой распространённой маски подсети 255.255.255.0. Интерфейсом является WiFi-сеть, протоколом передачи данных – TCP/IP.


Смаконт. Варианты подключения в режиме «MODBUS TCP»

Варианты подключения в режиме «MODBUS TCP»


Смаконт. Действие «modbus_Start()»

Действие «modbus_Start()»


«Режим работы TCP»

Прошивка «Smacont-ESP» поддерживает работу в следующих режимах:
MODBUS TCP Slave - устройство выступает в роли ведомого (slave, server). Обмен с устройством осуществляется через WiFi-сеть. Одновременной с этим, устройство может работать как «MODBUS RTU Slave» или «MODBUS RTU Master»;
MODBUS TCP Master - устройство выступает в роли ведущего (master, client). Обмен с устройством осуществляется через WiFi-сеть. Одновременной с этим, устройство может работать как «MODBUS TCP Slave» или «MODBUS TCP Master»;
MODBUS TCP<->RTU шлюз - устройство выступает в роли шлюза между «MODBUS TCP Slave» и «MODBUS RTU Master». Обмен с устройством осуществляется через WiFi-сеть и по последовательному интерфейсу. Другие режимы работы недоступны.


«Номер порта»

По умолчанию, в режиме «Modbus TCP» используется порт 502 для связи через TCP/IP. Это важно, если данные должны пройти через систему сетевой защиты. Большое количество пользователей использует этот порт для передачи данных через протокол прикладного уровня (MBAP). При необходимости, номер порта можно изменить.

Номер порта задается при помощи констант «CONST». Для этого необходимо:

1. На вкладке «CONST», для одной из констант, присвоить необходимое значение номера порта.


Смаконт. Вкладка «CONST»

Вкладка «CONST»

2. На вкладке «Действия», открыть действие инициализации «modbus_Start()» и выбрать для параметра «Номер порта» константу, которая содержит значение номера порта.


Смаконт. Вкладка «CONST»

Вкладка «CONST»


«Режим «RTU поверх TCP»

Modbus по протоколу TCP/IP («Режим «RTU поверх TCP», Modbus over TCP или Modbus RTU/IP) – вариант, который отличается от Modbus TCP тем, что контрольная сумма включена в полезную нагрузку, как в случае с Modbus RTU.



Настройка устройства для работы по протоколу «Modbus RTU»

При работе по протоколу Modbus RTU, данные передаются в двоичном формате, разделителем пакетов служит отсутствие данных в течение времени при котором можно передать более 3,5 байт. Протокол предназначен для шин: RS-485, RS-422, RS-232.


Смаконт. Варианты подключения в режиме «MODBUS RTU»

Варианты подключения в режиме «MODBUS RTU»


Смаконт. Действие «modbus_Start()»

Действие «modbus_Start()»


«Режим работы RTU»

Прошивка «Smacont-ESP» поддерживает работу в следующих режимах:
MODBUS RTU Slave - устройство выступает в роли ведомого (slave, server). Обмен с устройством осуществляется по последовательному интерфейсу UART или RS485. Одновременной с этим, устройство может работать как «MODBUS TCP Slave» или «MODBUS TCP Master»;
MODBUS RTU Master - устройство выступает в роли ведущего (master, client). Обмен с устройством осуществляется по последовательному интерфейсу UART или RS485. Одновременной с этим, устройство может работать как «MODBUS TCP Slave» или «MODBUS TCP Master»;


«Интрефейс»

Параметр «Интрефейс» определяет номер UART, через который будет осуществляться работа по протоколу «MODBUS RTU».
• UART0 - RX (MISO) = GPIO3 (WeMos D1 mini: pin RX); TX (MOSI) = GPIO1 (WeMos D1 mini: pin TX);
• UART2 - RX (MISO) = GPIO13 (WeMos D1 mini: pin D7); TX (MOSI) = GPIO15 (WeMos D1 mini: pin D8).

Для работы по протоколу «MODBUS RTU», НЕОБХОДИМО РАЗРЕШИТЬ работу UART при помощи действия «serial_SetParam()».


«Скорость обмена, бод (бит/с)»

Допустимые значения: 1200; 2400; 4800; 9600 (default); 19200; 38400; 57600; 115200.


«Количество стоповых битов»

Допустимые значения: 1; 2 (default).


«Бит четности»

Допустимые значения: нет бита четности (none) (default); нечетный; четный.


«Тайм-аут ожидания ответа»

Задает время ожидания ответа от Slave-устройства, по истечении которого выдается предупреждение. Допустимые значения: 1 сек.; 2 сек.; 3 сек.; 5 сек.


«Порядок следования байт CRC16»

Задает порядок следования байт при передаче контрольной суммы CRC16. Допустимые значения:
• Low : Hi (default) (big-endian (0x 11H 22L));
• Hi : Low (little-endian (0x 22L 11H)).


«Номер GPIO управляющего сигнала RX/TX»

Управляющий сигнал используется ТОЛЬКО при работе по ИНТЕРФЕЙСУ RS485.

RS-485 представляет собой асинхронный интерфейс последовательной связи, не требующий для своей работы импульсов синхронизации. Для передачи двоичных данных от одного устройства к другому интерфейс использует дифференциальный сигнал. RS-485 работает в полудуплексном режиме — приём и передача идут по одной паре проводов с разделением по времени — один говорит, остальные слушают. Передатчиком может выступать любое устройство в сети.

Для большинства микросхем и готовых модулей RS485, при работе по интерфейсу требуется использования следующих сигналов:
• /RE - управление приемом (инверсный): низкий уровень - разрешение приема; высокий уровень - запрет приема;
• DE - управление передачей: низкий уровень - запрет передачи; высокий уровень - разрешение передачи;

Как правило, эти два вывода соединены между собой.

Существуют микросхемы и готовые модули RS485 с автоматическим управлением направления приемом/передачей.

Параметр «Номер GPIO управляющего сигнала RX/TX» определяет номер GPIO, который будет использоваться для определения направления приемом/передачей.

Также необходимо задать тип GPIO в качестве «UART RTS» при помощи действия «gpioN_SetParam()» (см. рис. ниже).


Смаконт. Действие «gpioN_SetParam()»

Действие «gpioN_SetParam()»


«Номер устройства в сети»

Параметр используется только для режимов «MODBUS RTU Slave» и «MODBUS TCP<->RTU шлюз».

Адрес ведомого устройства которому адресован пакет запроса, или от которого отправлен пакет ответа. Ведомые устройства могут иметь адреса от 1 до 247. Пакет запроса отправленный с АДРЕСОМ 0 является ШИРОКОВЕЩАТЕЛЬНЫМ, он адресован ВСЕМ ВЕДОМЫМ на шине, ОНИ ОБЯЗАНЫ ВЫПОЛНИТЬ ЗАПРОС, но НЕ ДОЛЖНЫ НА НЕГО ОТВЕЧАТЬ.


«Время перед отправкой ответа на Master»

Параметр используется только для режима «MODBUS RTU Slave».

Устройства работают по стандарту, поэтому отвечают master-устройству через 3.5 символа после конца кадра запроса. Но некоторые сторонние master-устройства могут не соблюдать стандарт и после отправки запроса продолжают удерживать приемопередатчик в режиме отправки некоторое время. Данный параметр позволяет настроить время ответа slave-устройства в миллисекундах. Нужное значение подбирается опытным путём.



Информация о текущем состоянии

Параметр определяет переменную «Vx», в которой будет отображаться код текущего состояния работы по протоколу «Modbus RTU» и «Modbus TCP».


Коды текущего состояния работы по протоколу «Modbus RTU» и «Modbus TCP»


21 – Принятый код функции не может быть обработан (Illegal Function);
22 – Адрес данных, указанный в запросе, недоступен (Illegal Data Address);
23 – Значение, содержащееся в поле данных запроса, является недопустимой величиной (Illegal Data Value);
24 – Невосстанавливаемая ошибка имела место, пока ведомое устройство пыталось выполнить затребованное действие (Server Device Failure);
25 – Ведомое устройство приняло запрос и обрабатывает его, но это требует много времени. Этот ответ предохраняет ведущее устройство от генерации ошибки тайм-аута (Acknowledge);
26 – Ведомое устройство занято обработкой команды. Ведущее устройство должно повторить сообщение позже, когда ведомое освободится (Server Device Busy);
27 – Ведомое устройство не может выполнить программную функцию, заданную в запросе. Этот код возвращается для неуспешного программного запроса, использующего функции с номерами 13 или 14. Ведущее устройство должно запросить диагностическую информацию или информацию об ошибках от ведомого (Negative Acknowledge);
28 – Ведомое устройство при чтении расширенной памяти обнаружило ошибку паритета. Ведущее устройство может повторить запрос, но обычно в таких случаях требуется ремонт (Memory Parity Error);
30 – Шлюз неправильно настроен или перегружен запросами;
31 – Slave устройства нет в сети или от него нет ответа;

52 – tcp slave: ошибка, TCP отключен;
54 – tcp slave: закрыто соединение с сервером;
55 – tcp slave: ошибка, контрольная сумма не совпала;
56 – tcp slave: ошибка, неверный protocolID или lengthID;
59 – tcp slave: ошибка, принято мало байт;
60 – tcp slave: ошибка, принято много байт (переполнение буфера приемника);

72 – tcp master: ошибка, не удалось подключиться к Server (Slave);
74 – tcp master: ошибка, таймаут ожидания ответа от Server (Slave);

91 – tcp <-> rtu: успешно;
92 – tcp <-> rtu: ошибка, RTU master отключен;
94 – tcp <-> rtu: ошибка, таймаут ожидания ответа от Server (Slave);
99 – tcp <-> rtu: ошибка, принято мало байт;
100 – tcp <-> rtu: ошибка, принято много байт (переполнение буфера приемника);

111 – ini: успешно;
112 – ini: ошибка, UART0 отключен;
113 – ini: ошибка, UART1 отключен;
114 – ini: ошибка, UART2 отключен;
115 – ini: ошибка, UART3 отключен;
117 – ini: ошибка, заданы не все параметры;

131 – rtu slave: успешно;
135 – rtu slave: ошибка, контрольная сумма не совпала;
136 – rtu slave: slave-адрес не совпал;
139 – rtu slave: ошибка, принято мало байт;
140 – rtu slave: ошибка, принято много байт (переполнение буфера приемника);

151 – rtu master: успешно;
152 – rtu master: ошибка, невозможно отправить данные по RTU, т.к. включен TCP<–>RTU шлюз;
154 – rtu master: ошибка, таймаут ожидания ответа от Slave (Server);
155 – rtu master: ошибка, контрольная сумма не совпала;
156 – rtu master: ошибка, адрес данных, указанный в запросе, недоступен;
157 – rtu master: ошибка, заданы не все параметры;
158 – rtu master: ошибка, неизвестный код функции;
159 – rtu master: ошибка, принято мало байт;
160 – rtu master: ошибка, принято много байт (переполнение буфера приемника);
161 – rtu master: количество регистров не соответствует количеству байт.



Программы

Прошивка «Smacont-ESP»:
скачать

«Программа Настройки»:
запусить (только браузер Firefox)
скачать zip-архив

Телеграм канал

Новости

Энергонезависимая память (EEPROM)

Переменные «Vx» (карта переменных «Vx»)

WEB-интерфейс

Действие «wifi_CheckConn()». После подключения к WiFi-сети, выполнить действие с задержкой

Обмен данными. Open Monitoring

Датчики температуры и влажности AHT10/AHT15/AHT20/AHT21/AHT25

Датчик температуры и влажности SHT30 (SHT31/SHT35)

Действие «valueToVx()», «valueToArrVx()». Отслеживание заданного уровня в диапазоне значений

Действие «termostat()». Термостат

ESP-NOW. Датчик температуры и влажности с питанием от батареек

Последовательные интерфейсы (UART, I2C, SPI)

Управление одноканальным модулем реле

Протокол MQTT

Обмен данными. NarodMon

Обмен данными. ioControl



Программы для модулей ESP     Программы     Применения     Справочник         Контакты     SMACONT. Напишите нам smacont@ya.ru