Подключение по Modbus
Прибор работает по Modbus в двух ролях:
- Мастер — сам опрашивает подключённые устройства и складывает значения регистров в теги. Настраивается в разделе настроек, отдельный алгоритм не нужен.
- Сервер (slave) — отдаёт свои данные стороннему клиенту: ПЛК, SCADA, OPC-серверу. Реализуется алгоритмами EasyLogic — по последовательной линии или по TCP поверх Wi-Fi.
Прибор как Modbus-мастер
Заголовок раздела «Прибор как Modbus-мастер»Подготовка порта
Заголовок раздела «Подготовка порта»Устройства подключаются к RS-485 или к одному из портов RS-232. При подключении RS-485-устройств к порту RS-232 нужен внешний преобразователь интерфейсов. Контакт GND прибора соединяется с «минусом» подключаемого устройства.

Задайте тип периферии, допускающий Modbus:
RS485FN 8 — ModbusRS485FN 9 — ДУТ и ModbusДля RS-232 тип периферии — «Нет». Полный перечень значений RS485FN
— в статье «Датчики уровня топлива».
Все устройства на одной шине должны быть настроены единообразно: 8 бит данных, одинаковые скорость, стоповые биты и контроль чётности, режим передачи RTU, адреса из диапазона 1…247.
Про сам порт RS-485 — распиновку, скорости, совместное использование — читайте в статье «Последовательные порты».
⚙ Открыть настройки цифровых портов
Добавление устройства
Заголовок раздела «Добавление устройства»В разделе настроек откройте Modbus и нажмите «+» — «Добавить устройство». Поддерживается до 10 устройств.
| Поле | Диапазон | Команда |
|---|---|---|
| Порт | RS-232[0], RS-232[1], RS-485 | PORT= |
| Адрес устройства | 1…247 | ADDRESS= |
| Режим | RTU / ASCII | MODE= |
| Скорость | до 921600 бод | SPEED= |
| Биты данных | 5…8 | DATABITS= |
| Стоп-биты | 1 или 2 | STOPBITS= |
| Чётность | нет / нечётная / чётная | PARITY= |
| Таймаут ответа | 10…65535 мс | RES_TIMEOUT= |
| Период опроса | 0…5000 мс, 0 = отключён | INTER_REQ_DELAY= |
Период опроса — минимальный интервал между стартами запросов к этому устройству. Допустимый диапазон — 0…5000 мс. Ноль означает «без задержки»: прибор опрашивает устройство так часто, как позволяет шина.
Не задавайте период опроса больше 5000 мс. Поле ввода сейчас принимает значения до 60000 мс, но прибор такие настройки не примет — устройство останется с прежним периодом.
⚙ Открыть настройки Modbus
Из терминала то же самое делается командой:
MDEV<n> PORT=,ADDRESS=,MODE=,SPEED=,DATABITS=,STOPBITS=,PARITY=,RES_TIMEOUT=,INTER_REQ_DELAY=где <n> — номер слота 0…9. MDEV<n> без параметров возвращает текущие
настройки. Адрес 0 удаляет устройство — вместе с ним удаляются и все
привязанные к нему регистры.
Список настроенных устройств: MDEVLIST — отвечает строками вида
<порт>,<адрес>,<битовая маска регистров>, разделёнными ;.
Регистры
Заголовок раздела «Регистры»На все устройства вместе доступно 64 регистра. Регистр описывается адресом, типом и способом интерпретации данных:
| Поле | Значения | Команда |
|---|---|---|
| Адрес регистра | REGADDR= | |
| Тип регистра | DO (дискретный выход), DI (дискретный вход), AO (аналоговый выход), AI (аналоговый вход) | REGTYPE= |
| Тип данных | бит, int8, int16, int32, float32 | DATATYPE= |
| Знаковый | 0 / 1 | SIGNED= |
| Порядок байтов | 0 / 1 | END= |
| Перестановка слов | 0 / 1 | SWAP= |
| Тег | 0 — не назначен, иначе 1…64 | TAGNUM= |
| Комментарий | до 10 символов | COMMENT= |
Команда:
MDEV<n>R<m> REGADDR=,REGTYPE=,DATATYPE=,SIGNED=,END=,SWAP=,TAGNUM=,COMMENT=<m> — номер слота регистра 0…63. Регистр привязывается к устройству
тем, в контексте какого MDEV<n> он задан.
Чтобы значения уходили на сервер, отметьте назначенные теги Modbus в основном пакете.
⚙ Открыть настройки протокола
Проверка и диагностика
Заголовок раздела «Проверка и диагностика»Состояние устройства:
MDEV<n>STATUSMDEV0STATUS:STATE=0,REQUESTS=1024,ERRORS=3;STATE | Значение |
|---|---|
| 0 | Всё в порядке |
| 1 | Есть ошибки связи либо не созданы регистры |
| 2 | Устройство не отвечает ни на один запрос |
Значения регистров устройства:
MDEV<n>STATEОтвет — список пар <значение>,<код результата> по всем 64 слотам,
разделённых ;; заполнены только слоты, привязанные к этому устройству.
Значения всех типов, кроме int32, передаются умноженными на 100.
Коды результата совпадают с кодами исключений Modbus (см. ниже), плюс внутренние: 30 — внутренняя ошибка, 31 — ошибка CRC, 32 — адрес или код функции в ответе не совпадают с запросом.
Режим реальных данных
Заголовок раздела «Режим реальных данных»Кнопка «Режим реальных данных» переводит выбранное устройство в учащённый опрос, чтобы значения регистров в таблице обновлялись на глазах. Это же делает команда:
MREALTIMEMODE <0|1>,<номер устройства>Режим включается для одного устройства: включение на новом слоте автоматически выключает предыдущий.
Запись в регистр
Заголовок раздела «Запись в регистр»Кнопки «Изм.» / «Отпр.» в таблице регистров записывают значение в устройство. Команда:
SETMREG <слот устройства>,<слот регистра>,<значение>Значение — вещественное число; прибор передаёт его умноженным на 100. Команда ничего не отвечает: результат виден по обновлённому значению регистра.
Произвольный запрос
Заголовок раздела «Произвольный запрос»SENDMCUSTOM PORT=,SPEED=,DATABITS=,STOPBITS=,PARITY=,TIMEOUT=,REQ=Отправляет в порт готовый Modbus-кадр (до 100 символов в REQ=) и
возвращает ответ устройства либо SLAVE ERROR. Скорость — 1200…921600,
биты данных — 7 или 8. Полезно, когда нужно проверить устройство, не
заводя под него слот.
⚙ Открыть терминал команд
Прибор как Modbus-сервер по последовательной линии
Заголовок раздела «Прибор как Modbus-сервер по последовательной линии»Алгоритм отвечает на запросы клиента, подключённого к RS-232[0], RS-232[1] или RS-485, отдавая регистры прибора.
Настройка клиента (RTU)
Заголовок раздела «Настройка клиента (RTU)»- Формат передачи — единый для всей сети Modbus: 8 бит данных, по умолчанию 19200 бит/с, 1 стоповый бит, с контролем чётности;
- режим передачи — RTU;
- адрес сервера (прибора) — из диапазона 1…247.
Настройка прибора (RTU)
Заголовок раздела «Настройка прибора (RTU)»- Тип периферии: для RS-485 — «Отключён», для RS-232 — «Нет». Примените настройки.
- Загрузите алгоритм:
SCRIPT galileosky/modbusSerialServer(либо файлmodbusSerialServer.binв разделе EasyLogic). - Перезагрузите прибор.
Настройки по умолчанию: порт RS-232[0], 19200 бит/с, 1 стоповый бит, контроль чётности; адрес сервера 1, таймаут 1000 мс, межкадровый интервал 50 мс.
На Galileosky 10 и на 7x с прошивки 41 изменённые настройки сохраняются в энергонезависимой памяти и восстанавливаются после перезагрузки. На более ранних прошивках 7x они живут только до перезагрузки — там алгоритм ждёт конфигурационные команды 5 секунд после старта, и постоянные настройки приходится подавать вспомогательным алгоритмом.
Команды MBSS
Заголовок раздела «Команды MBSS»| Команда | Назначение |
|---|---|
MBSS 1,<m> | Режим диагностики: 0 — обычный, 1 — расширенный. Ответ a.diag=<m> |
MBSS 2 | Текущие параметры порта: pn=,br=,sb=,pa= |
MBSS 3,<n>,<b>,<s>,<p> | Задать параметры порта |
MBSS 4 | Текущие настройки сервера: ad=,to=,if= |
MBSS 5,<a>,<t>,<i> | Задать настройки сервера |
MBSS 6 | Состояние: rs= результат последней обработки, cd= код исключения, tm= Unix-время |
Параметры порта: n — 0 (RS-232[0], по умолчанию), 1 (RS-232[1]),
2 (RS-485); b — скорость, по умолчанию 19200; s — 1 или 2 стоповых
бита; p — чётность: 0 без проверки, 1 контроль нечётности, 2 контроль
чётности (по умолчанию).
Настройки сервера: a — адрес 1…247 (по умолчанию 1); t — таймаут
чтения запроса клиента, мс (по умолчанию 1000); i — межкадровый
интервал, мс (по умолчанию 50).
Неверный номер команды даёт ответ cmd?.
Межкадровый интервал по умолчанию выше расчётного по стандарту — так приём стабилен на скорости 19200. Значение
i=0включает расчёт по стандарту, но тогда стабильный приём достигается только на 4800 бит/с и ниже. Межсимвольный интервал рассчитывается автоматически.
Расширенный режим диагностики нагружает прибор — выключайте его сразу после поиска неисправности.
Прибор как Modbus TCP-сервер
Заголовок раздела «Прибор как Modbus TCP-сервер»Алгоритм обслуживает клиентов Modbus TCP по Wi-Fi и одновременно работает шлюзом Modbus TCP → Modbus RTU: запросы с Unit ID 0…247 он перекладывает в последовательный порт, а ответы возвращает клиенту.
Доступно на 7x Wi-Fi Hub с прошивки 44.4 и на Galileosky 10.
Одновременно обслуживается до 3 клиентов; при подключении четвёртого самое старое соединение разрывается.

Настройка клиента (TCP)
Заголовок раздела «Настройка клиента (TCP)»- IP-адрес прибора, полученный по DHCP;
- Unit ID самого прибора — 255;
- Unit ID устройств за шлюзом — 1…247.
Прибор и клиент должны быть в одной сети Wi-Fi. В настройках DHCP точки доступа желательно закрепить за MAC-адресом прибора статический IP; MAC виден в разделе «Устройство».
Настройка прибора (TCP)
Заголовок раздела «Настройка прибора (TCP)»- Настройте Wi-Fi прибора в режиме клиента.
- Тип периферии порта, к которому подключены устройства за шлюзом: для RS-485 — «Фотокамера Galileosky и ДУТ», «Только обработчики RS485 в EasyLogic», «Обработчик фотокамеры в EasyLogic и ДУТ», «Modbus» или «ДУТ и Modbus»; для RS-232 — «Нет».
- Загрузите алгоритм:
SCRIPT galileosky/modbustcpserver(либо файлmodbustcpserver.binв разделе EasyLogic). - Перезагрузите прибор.
Настройки шлюза по умолчанию: RS-485, 19200 бит/с, 1 стоповый бит, контроль чётности, таймаут 1000 мс, межкадровый интервал 50 мс. Изменённые настройки сохраняются в энергонезависимой памяти.
Команды MBTS
Заголовок раздела «Команды MBTS»| Команда | Назначение |
|---|---|
MBTS 1,<m> | Режим диагностики: 0 — обычный, 1 — расширенный |
MBTS 2 | Текущий TCP-порт: tport= |
MBTS 3,<p> | Задать TCP-порт (по умолчанию 502) |
MBTS 4 | Количество подключённых клиентов: cl= |
MBTS 5 | Настройки шлюза: gw=,pn=,br=,sb=,pa=,to=,if= |
MBTS 6,<gw>,<pn>,<br>,<sb>,<pa>,<to>,<if> | Задать настройки шлюза |
MBTS 7 | Идёт ли обмен по последовательной линии: ex= 0 или 1 |
gw — активация шлюза: 0 выключен, 1 включён (по умолчанию). При
выключенном шлюзе все запросы независимо от Unit ID считаются
адресованными самому прибору и в последовательную линию не уходят.
to — время ожидания начала ответа устройства за шлюзом. Остальные
параметры — как у MBSS.
Коды взаимодействия по Modbus
Заголовок раздела «Коды взаимодействия по Modbus»| Код | Значение |
|---|---|
| 1 | Успешно |
| 2 | Получен запрос, адресованный другому устройству |
| −1 | Истекло время ожидания ответа |
| −2 | Ошибка передачи данных |
| −3 | Ошибка входных данных |
| −4 | Получен код исключения |
Коды исключений Modbus
Заголовок раздела «Коды исключений Modbus»| Код | Значение |
|---|---|
| 1 | Код функции не может быть обработан |
| 2 | Адрес регистра недоступен |
| 3 | Недопустимое значение или количество регистров |
| 4 | Невосстанавливаемая ошибка устройства — как правило, нужна его перезагрузка |
| 5 | Устройство приняло запрос и обрабатывает его — возможно, стоит увеличить таймаут |
| 6 | Устройство занято, повторите запрос позже |
| 7 | Ошибка программирования |
| 8 | Ошибка расширенной памяти устройства |
| 10 | Шлюз: путь недоступен, не настроен или перегружен |
| 11 | Шлюз: нет ответа от целевого устройства |
Диагностика алгоритмов
Заголовок раздела «Диагностика алгоритмов»Сообщения видны в разделе «Диагностика» при включённой опции «Диагностика алгоритмов и скриптов».
Обычный режим:
p.Init!— порт инициализирован (MBSS);p.Init?— ошибка инициализации порта: неверные параметры или не хватило памяти. Если параметры верные, перезагрузите прибор. На устаревших прошивках сообщение повторяется постоянно и означает, что прошивку нужно обновить;mbtsrvinit— инициализация TCP-сервера (MBTS);res=<n>,exc=<n>— результат операции и код исключения;gw res=<n>,exc=<n>— то же для обмена с устройствами за шлюзом;w.p?k=<n>— ошибка записи настроек, возможно неисправна энергонезависимая память.
Расширенный режим печатает ход обработки каждого запроса: mbProcRdI
(чтение дискретных входов), mbProcRc (чтение дискретных выходов и
внутренних битов), mbProcRr (чтение аналоговых регистров),
mb r<n>f<n> (чтение количества значений со стартового адреса),
mbProcW1c и mbProcWnC (запись одного и нескольких бит),
mb wc<n>=<n>, mb w<n>f<n>:, mbsSh/mbtSh (вызов обработчика),
mbsSsE/mbtSsE (отправка исключения), mbsSsR/mbtSsR (отправка
ответа). Для TCP дополнительно: mbt_sGr (получение запроса),
con=<n>,h=<n> (обмен с клиентом, h >= 0 — соединение установлено),
no clt, rcv <n> bts, sent <n> bts, mbt_sGrP (обработка запроса
шлюзу), mbsCcr (отправка запроса устройству за шлюзом), mbs_sD
(отправка данных в порт).
⚙ Открыть запись лога
Перечень регистров прибора
Заголовок раздела «Перечень регистров прибора»Когда прибор работает Modbus-сервером, клиент читает его данные по фиксированной карте регистров: координаты, напряжение питания, состояние входов и выходов, показания подключённой периферии. Карта одинакова для последовательного и для TCP-сервера.
Полный перечень регистров — в отдельном справочнике.
См. также: Датчики уровня топлива · Датчики температуры и влажности · Алгоритмы идентификации · Последовательные порты RS-232 и RS-485