Modbus poll инструкция на русском

Как использовать инструменты тестирования Modbus ModbusPoll и Modbus Slave
1. Введение
Modbus Poll: имитатор главного устройства Modbus, используемый для тестирования и отладки подчиненных устройств Modbus. Программа поддерживает ModbusRTU, ASCII, TCP / IP. Используется для помощи разработчикам в тестировании ведомых устройств Modbus или для тестирования и моделирования других протоколов Modbus. Он поддерживает несколько интерфейсов документов, то есть можно одновременно отслеживать несколько подчиненных устройств / полей данных. Каждое окно просто устанавливает идентификатор подчиненного устройства, функцию, адрес, размер и интервал опроса. Вы можете читать и писать регистры и катушки из любого окна. Если вы хотите изменить один регистр, просто дважды щелкните значение. Или вы можете изменить несколько значений регистров / катушек. Предоставляет несколько форматов данных, таких как числа с плавающей запятой, двойной точности, длинное целое число (можно обмениваться последовательностями байтов).
Modbus Slave: имитатор подчиненного устройства Modbus, который может имитировать 32 подчиненных устройства / поля адреса. Каждый интерфейс обеспечивает поддержку автоматизации OLE для отчетов EXCEL. В основном используется для имитации ведомых устройств Modbus, получения пакетов команд от главной станции и отправки пакетов данных обратно. Помогите разработчикам коммуникационного оборудования Modbus смоделировать и протестировать протокол связи Modbus для моделирования, тестирования и отладки коммуникационного оборудования Modbus. В 32 окнах можно моделировать до 32 подустройств Modbus. Пользовательский интерфейс такой же, как Modbus Poll, поддерживает функции 01, 02, 03, 04, 05, 06, 15, 16, 22 и 23, отслеживая последовательные данные.
Два, использование опроса Modbus
1), установка и регистрация:
После завершения установки вы увидите ярлык ModbusPoll на рабочем столе, дважды щелкните ярлык, чтобы открыть программное обеспечение, и интерфейс после открытия будет таким, как показано на рисунке ниже.

Нажмите «Соединение» -> «Подключиться», появится окно регистрации; откройте файл readme после распаковки сжатого пакета, скопируйте серийный номер ModbusPoll 5A5742575C5D10 и вставьте его в столбец регистрации окна регистрации, как показано на рисунке ниже. Щелкните ОК, чтобы завершить регистрацию.
Введение в главное окно программы Modbus Poll 4.3.4
где: Tx = 4 означает количество кадров данных, отправленных на главную станцию, 4 раза на рисунке; ​​Error = 0 означает количество ошибок связи, 0 раз на рисунке; ​​ID = 1 означает аналоговый Адрес субустройства Modbus, адрес на рисунке 1; F = 03 означает используемый код функции Modbus, а цифра — код функции 03; SR = 1000 мс означает цикл сканирования. Красная часть указывает на текущее состояние ошибки, а «Нет соединения» указывает на неподключенное состояние.
3), настройки параметров:
Нажмите [Чтение / запись определения… F8] в меню [Настройка], чтобы установить параметры, и появится диалоговое окно настройки параметров.


Среди них: A. Slave — это адрес подчиненного устройства Modbus (подчиненного устройства), к которому необходимо получить доступ, соответствующий значению идентификатора в главном окне (главном экране), по умолчанию — 1. B. Функция — это выбор кодов функций регистра. Всего существует четыре типа, и соответствующие отношения следующие:

Код Название Регистр Адрес ПЛК Битовая операция / Словарная операция Количество операций
01 Состояние бита чтения / записи 00001-09999 бит, один или несколько
02 Чтение (ввод) бита 10001–19999 бит, один или несколько
03 Чтение / запись (сохранение) слова 40001–49999 слов, одно или несколько слов
04 Чтение (ввод) слов 30001–39999 слов, написанных одно или несколько
05 Запись одиночной катушки 00001-09999 бит одиночной
06 Запись одного регистра временного хранения 40001–49999 слово, слово, одно слово
15 Запись нескольких катушек 00001-09999 бит, кратный
16 Запись нескольких регистров хранения 40001–49999 слов, несколько слов
C. Адрес — это начальный адрес регистра, по умолчанию он начинается с 0.
D. Длина — это количество последовательных регистров, значение по умолчанию — 10, что соответствует количеству каналов программы настройки.
E. Скорость сканирования — это цикл чтения данных в миллисекундах, по умолчанию — 1000 мс.
После настройки нажмите кнопку ОК, и в окне моделирования отобразится определенный список регистров.
4), настройки отображения:
Настройка режима отображения данных:
По умолчанию режим отображения данных регистра — Подписанный (двоичный код с шестнадцатеричным знаком), а диапазон данных составляет -32768 ~ 32767. Если пользователь хочет отображать другие числовые способы, он может выбрать и установить через меню 【Display】, как показано на рисунке ниже:

Настройка формата адреса: Modbus Slave использует адрес ПЛК по умолчанию, [PLC Addresses (Base 1)] в меню [Display] выбран по умолчанию, а начальный адрес регистра по умолчанию равен 1, это Последовательный порт Modbus и драйвер пересылки данных TCP точки и конфигурационное программное обеспечение одинаковы. Если вам нужно установить начальный адрес, чтобы он начинался с 0 во время теста, вы можете выбрать [Адреса протокола (база 0)]. Как правило, достаточно адреса ПЛК по умолчанию.
Используйте кнопку «Коммуникационный трафик» на панели инструментов для отображения текущих отправленных команд и полученных данных.
5), подключение к последовательному порту:
Нажмите [Подключить … F3] в меню [Подключение], чтобы подключиться к последовательному порту, как показано ниже:

Среди них: Port3, что означает используемый последовательный порт (COM3), выбор другого последовательного порта или TCP / IP для подключения в зависимости от реальной ситуации. Режим означает режим протокола Modbus, действительный при использовании последовательного порта; при использовании TCP / IP это автоматически режим TCP. Время ожидания ответа означает время ожидания чтения.Если ведомое устройство не возвращает данные в течение времени ожидания, считается, что связь не удалась. Задержка между опросами, минимальный интервал времени для каждого сканирования, по умолчанию — 10 мс. Удаленный сервер означает сетевые настройки терминального ведомого устройства в режиме TCP / IP. IP-адрес, представляет собой IP-адрес подчиненной станции в режиме TCP / IP. Порт указывает сетевой порт подчиненной станции в режиме TCP. Пользователь может установить параметры в соответствии со своими потребностями, по умолчанию: последовательный порт 1, скорость передачи 9600, бит данных 8 бит, без бита четности, 1 стоповый бит. После подтверждения настроек нажмите кнопку ОК. Если он подключен и читается правильно, в главном окне будет отображаться информация о регистре чтения.
6), изменение значения регистра:
Дважды щелкните мышью по адресу регистра в главном окне, появится диалоговое окно изменения, как показано на рисунке ниже:

Введите значение в поле ввода «Значение» для подтверждения. Диапазон значений: -32768——32767.
Среди них: Slave — это адрес подчиненного устройства Modbus, к которому необходимо получить доступ, соответствующий значению идентификатора на главном экране, значение по умолчанию — 1. Адрес — это адрес текущего реестра. На рисунке показаны операции с регистром 40001. Использовать функцию — это используемый код функции.Вы можете выбрать код функции 06 или 16. для записи.
7), проверьте фрейм данных связи:
Щелкните [Связь …] в меню [Отображение] или нажмите кнопку [101] на панели инструментов, чтобы вызвать диалоговое окно с информацией о мониторинге фрейма данных для отправки и получения данных через последовательный порт «CommunicationTraffic» для Просматривайте и анализируйте отправленные и полученные фреймы данных. Как показано ниже:

Среди них: первые 6 битов — это порядковый номер кадра данных. Rx представляет полученный кадр данных. Tx представляет отправленный фрейм данных.
8), отключите:
Нажмите [Отключить F4], чтобы отключиться и завершить тест. В это время в главном окне отображается красный значок «Нет подключения», указывающий на отключенное состояние.
Три, использование ведомого устройства Modbus
1), установка и регистрация:
Установите программное обеспечение, после завершения установки дважды щелкните, чтобы запустить ярлык ModbusSlave.
Метод регистрации: нажмите «Соединение» -> «Подключиться», появится окно регистрации; откройте файл readme после распаковки сжатого пакета, скопируйте серийный номер ModbusPoll, вставьте его в столбец регистрации в окне регистрации, нажмите «ОК», Трещина полная. Установка и взлом ModbusSlave аналогичны ModbusPoll, поэтому я не буду повторять его здесь.
2), главное окно:
Главное окно программы показано ниже:

В настоящее время он находится в неподключенном состоянии «Нет соединения». Если вы проверяете только «Регистр удержания выхода 04», вы можете щелкнуть, чтобы перейти к шагу 3. и подключиться напрямую.
3), настройки параметров:
Нажмите «Определение ведомого … F2» в меню «Настройка», чтобы установить параметры, появится следующее диалоговое окно.

Среди них: A. Slave — это адрес ведомого устройства Modbus, соответствующий значению ID на главном экране, по умолчанию — 1.
B. Функция — это выбор кодов функций регистра, всего существует четыре типа, и соответствующие отношения следующие:
Код Название на китайском языке Зарегистрировать адрес ПЛК Битовая операция / Словесная операция Количество операций
01 Чтение статуса катушки 00001-09999 Битовая операция, одиночная или множественная
02 Чтение состояния дискретного входа 10001-19999 Битовая операция Один или несколько
03 Чтение регистра временного хранения 40001-49999 Операция Word Один или несколько
04 Чтение регистра ввода 30001-39999 Операция в виде слова Один или несколько
05 Запись одиночной катушки 00001-09999 Одинарная битовая операция
06 Запись одного регистра временного хранения 40001-49999 Одинарная операция Word
15 Запись нескольких катушек 00001-09999 Несколько битовых операций
16 Запись в несколько регистров хранения 40001–49999 Операция в несколько слов
C. Адрес — это начальный адрес регистра. По умолчанию начинается с 1.
D. Длина — это количество последовательных регистров. По умолчанию — 10.
Нажмите кнопку ОК, в окне моделирования отобразится определенный список регистров:

Среди них: ID представляет адрес устройства моделируемого субустройства Modbus; F представляет код функции.
Щелкните соответствующий регистр, чтобы изменить значение или статус соответствующего регистра. Например, значение регистра 2 изменяется на 9, а значение регистра 9 изменяется на 100.
4), настройки отображения:
Настройка режима отображения данных:
По умолчанию режим отображения данных регистра — Подписанный (шестнадцатеричный беззнаковый двоичный), а диапазон данных составляет -32768——32767. Если пользователь хочет отображать другие числовые способы, он может выбрать и установить через меню «Отображение», как показано на следующем рисунке:

Настройка формата адреса:
Modbus Slave по умолчанию использует адрес ПЛК. «Адреса ПЛК (база 1)» в меню «Дисплей» — это состояние, выбранное по умолчанию. Начальный адрес регистра по умолчанию — 1, что отличается от конфигурации. Программный последовательный порт Modbus и драйвер пересылки данных TCP одинаковы. Если вам нужно установить начальный адрес на 0 во время теста, вы можете выбрать «Адреса протокола (базовый 0)». Как правило, достаточно адреса ПЛК по умолчанию.
5), соединение:
Нажмите «Подключить … F3» в меню «Подключение», чтобы подключиться. Появится диалоговое окно подключения:

Где: Port2 означает используемый последовательный порт (COM2), выберите другой последовательный порт или TCP / IP для подключения в соответствии с реальной ситуацией.
Mode, что означает режим протокола Modbus, действителен при использовании последовательного порта; автоматически в режиме TCP при использовании TCP / IP
Управление потоком, что означает управление потоком, действительное в режиме последовательного порта;
Игнорировать идентификатор устройства, что означает, что недопустимые номера групп игнорируются в режиме TCP.
Пользователи могут установить параметры последовательного порта в соответствии со своими потребностями. Значение по умолчанию: последовательный порт 1, скорость передачи 9600 бод, 8 бит данных, без бита четности и 1 стоповый бит. После подтверждения настроек нажмите кнопку «ОК». В это время красный «Нет соединения» в главном окне указывает, что информация в неподключенном состоянии исчезает, указывая, что ведомое устройство находится в нормальном состоянии соединения.
6), изменение значения регистра:
Дважды щелкните мышью по адресу регистра в главном окне, появится диалоговое окно изменения, как показано на рисунке ниже:

Введите значение в поле ввода для подтверждения. Диапазон значений: -32768——32767.
Среди них: после того, как установлен флажок «Автоинкремент», значение соответствующего регистра может увеличиваться на 1 каждую 1 секунду.
7), проверьте фрейм данных связи:
Нажмите «Связь …» в меню «Дисплей», чтобы вызвать диалоговое окно с информацией о мониторинге фреймов данных отправки и получения последовательного порта для просмотра и анализа отправленных и полученных фреймов данных. Как показано ниже:

Среди них: первые 6 битов — это порядковый номер кадра данных.
Rx: представляет получаемый фрейм данных.
Tx: означает отправку кадра данных.
8), отключите:
Нажмите «Отключить F4», чтобы отключить и завершить тест. В это время в главном окне отображается красный значок «Нет подключения», указывающий на отключенное состояние.
Четыре, программа моделирования ведущего / ведомого устройства Modbus
1) Установите инструмент виртуального последовательного порта vspd. Добавьте два порта COM2 и COM3 через инструмент.

2) Затем откройте установленное программное обеспечение Modbuspoll и Modbus Slave и нажмите «F8», чтобы настроить соответствующую конфигурацию главного и подчиненного терминалов, как показано на рисунке:

В приведенной выше конфигурации идентификатор устройства 10 ведомых счетчиков равен 1, но считываются только данные первых 6 счетчиков, которые можно настроить в соответствии с вашей ситуацией.
2. Затем нажмите «F3» для подключения, обратите внимание на изменение порта интерфейса подключения, главная и подчиненная машины соответственно выбирают наши виртуальные порты com2 и com3, потому что я использую только RTU Mode, поэтому другие параметры, такие как скорость передачи 9600, бит 8, четность 1, без эквивалента и т. Д., Могут оставаться неизменными, а затем нажмите OK для подключения. Во второй строке неподключенного окна появится подсказка.
Когда начинается связь, на стороне хоста отображается: TX = 232, Err = 0, ID = 1, F = 03, SR = 1000 мс. Это означает, что нужно отправить 232 команды, время ошибки, ID ведомого, номер функции, интервал опроса.
Используйте кнопку «Коммуникационный трафик» на панели инструментов для отображения текущих отправленных команд и полученных данных.

MSU44R, DRM88R: Настройка при помощи утилиты "Modbus Poll"

21 мая 2014

Не всегда с первого раза понятно как настроить наши модули с помощью программы «Modbus Poll» и в этой статье я расскажу как это сделать.

Саму программу можно скачать по следующему адресу — http://www.modbustools.com/modbus_poll.asp

Перед запуском программы подключите настраиваемый модуль к преобразователю USB-RS485, а сам преобразователь к компьютеру. В системе должен появиться новый последовательный порт (COM3, например). Подайте питание на модуль и запустите программу.

После запуска программы необходимо произвести настройку соединения, для этого выберете пункт меню «Connection→Connect», настройте соединение как показано на рисунке ниже, изменив только последовательный порт (1):

Для установки ModBus адреса устройства, выберете пункт меню «Functions→Write Single Register», появиться следующее окно, установите значения полей как показано ниже, изменив только поле (1), где укажите новый адрес устройства:

Нажмите кнопку «Send».

Небольшие пояснения: в данном случае мы послали широковещательную команду по шине (это определяется адресом устройства 0, поле Slave ID), на запись в параметры устройства, по смещению 0 (для датчиков MSU24R, MSU34R смещение 128), значения нового адреса устройства.

На широковещательные команды наши модули не отвечают, поэтому, попытка чтения с устройства с адресом 0, ни к чему не приведут!

Теперь необходимо перезапустить модуль, путем пере подключения питания.

После перезапуска модуля, можно настроить программу «ModBus Poll» для чтения данных с модуля.

Для чтения входных каналов, выберете пункт меню «Setup→Read/Write Definition»:

В поле (2) кол-во регистров может быть разное, для MSU44R — 4, а для DRM88R — 8.

Для просмотра настроек модуля, выберете пункт меню «Setup→Read/Write Definition»:

В результате настройки модуля отобразятся в следующем окне:

Время на прочтение
10 мин

Количество просмотров 230K

image

Протокол Modbus довольно распространен как в промышленных системах автоматизации, так и сетях систем типа «Умный дом», автоматизации малых объектов (теплицы и т.п.) и стыковки различного оборудования с домашним компьютером. Появление таких проектов как Arduino и Raspberry Pi значительно повысило интерес к задачам, связанным с робототехникой, автоматикой и автоматизацией. Все это обеспечивает рост популярности Modbus среди любителей и профессионалов. В статье рассмотрен вопрос тестирования и наладки, как отдельных устройств, так и сетей на базе протокола Modbus с позиции требований к программному обеспечению для решения таких задач и обзора существующих инструментов.

Если вы знакомы с архитектурой протокола, то можете смело пролистать пару следующих абзацев и перейти к дальнейшему описанию. Если же нет, то специально для вас ниже приведено небольшое введение в Modbus.

Modbus, краткое введение

Modbus является довольно распространённым протоколом в системах автоматизации на среднем и нижнем (полевом) уровнях. Средний — это уровень контроллеров — устройств, осуществляющих сбор данных и управление технологическим процессом. Нижний или полевой — это уровень взаимодействия датчиков и контроллеров или датчиков напрямую с сервером. Более подробно об уровнях в системах автоматизации можно посмотреть здесь.

Как правило, структура типовой системы автоматизации, использующей в качестве базового протокола Modbus, выглядит так как показано на рисунке в начале статьи. В качестве ”среды” для протокола Modbus может выступать либо RS-485/422/232 (подробно про RS-485 можно прочитать здесь и здесь), поверх него работает Modbus RTU или Modbus ASCII, либо транспортный протокол TCP в TCP/IP сетях, такая версия носит название Modbus TCP. В данной статье будет рассмотрен Modbus RTU.

Протокол Modbus предполагает наличие одного ведущего устройства в сети (оно называется Master или Client) и от 1 до 247 ведомых (они называются Slave или Server). Полное описание можно найти на официальном сайте или в вики.

Master периодически взаимодействует со Slave-устройствами, считывая или записывая в них какую-либо информацию. Этот процесс осуществляется в форме запрос-ответ. Запрос представляет собой последовательность байт, называемую кадром, в котором время между байтами стандартизировано и зависит от скорости передачи данных (напомним, что речь идет о Modbus RTU) и составляет не более длительности интервала, в течение которого может быть передано 1,5 байта данных. Время между кадрами должно быть не меньше времени передачи 3,5 байт.

Формат запроса имеет следующий вид:

image

ID — адрес устройства (1 байт),
FN — Modbus функция (1 байт),
[args] — аргументы функции (N байт, зависит от функции),
CRC — контрольная сумма CRC-16 (2 байта).

Ответ имеет схожий формат:

image

Почти все поля ответного кадра аналогичны кадру запроса, за исключением поля DATA, оно имеет различное наполнение, в зависимости от функции.

Если устройством не поддерживается запрашиваемая функция или аргументы в поле [args] запроса являются некорректными для данного Slave-устройства, то в ответе, в поле FN старший бит будет выставлен в 1 (т.е. на FN наложится маска 0x80), а в поле DATA будет помещена дополнительная информация об ошибке.

Каждое Slave-устройство может иметь определенные области данных и содержать дополнительную специфическую информацию.
Возможные области данных представлены в таблице ниже:

Поле Доступ Размер Описание
Discrete Inputs Только чтение Один бит Данные от системы ввода/вывода
Coils Чтение/Запись Один бит Ячейки могут использоваться по своему усмотрению
Input registers Только чтение 16 бит Данные от системы ввода/вывода
Holding registers Чтение/Запись 16 бит Регистры могут использоваться по своему усмотрению

За более подробной информацией следует обратиться к полному описанию Modbus RTU, доступному в виде спецификации.

Тестирование устройств с поддержкой Modbus RTU в рамках процесса разработки

Как при разработке, так и при наладке устройств с поддержкой протокола Modbus RTU, вам необходимо иметь специализированное программное обеспечение и технические средства. Из технических средств наиболее простой вариант — это преобразователь RS-485/USB, из всех устройств такого типа, по нашему мнению, наилучшим выбором является MOXA UPORT 1130/UPORT 1150, цена вопроса которого составит 5000 — 6000 руб. Существуют различные отечественные решения, например, преобразователи фирмы Fractal или ОВЕН. Конструкция этих устройств достаточно проста, и при определенной сноровке такой преобразователь можно собрать самостоятельно. Более сложными являются решения типа Ethernet/RS-485 (например, NPORT от MOXA).

При разработке устройств с поддержкой Modbus RTU, чаще всего требуется реализовать функцию Slave, так как в основном это различные датчики, управляемые реле, модули ввода/вывода и т.п., Master-устройства создаются реже. В сетях автоматизации в качестве мастера, обычно выступает контроллер, а он, как правило, уже имеет реализацию Modbus-стека, либо OPC Server/SCADA система, укомплектованные Modbus-драйвером.

Вопрос разработки непосредственно Modbus-стека мы не будем рассматривать в этой статье. Единственное, стоит отметить библиотеку FreeMODBUS, на базе которой достаточно просто построить устройство с поддержкой функций Modbus Slave. Пример реализации описан в статье на Хабре.

Вторым важным моментом при разработке Modbus-устройств является тестирование. Здесь всё зависит от стадии разработки и цели тестирования.

На начальных этапах полезным инструментом является Modbus-терминал. С помощью него мы можем вручную сконструировать запрос, послать его и проанализировать ответ. Существуют терминалы в чистом виде, например, SmartTerminal, Access Port, терминалы с поддержкой Modbus RTU — Termite от S2-Team или Pic18 Terminal от Fractal (не обновлялась с 2006 года) и т.п. Последний заточен под оборудование компании Fractal, но позволяет “общаться” с любыми устройствами, у которых в настойках порта выставлена четность None, с другими вариантами он не работает.

В процессе разработки нередко возникает ситуация, когда устройство принимает запрос и отвечает на него (это можно понять либо по светодиодам приема/передачи пакетов, если вы их предусмотрели в конструкции, либо через отладчик, поставив breakpoint в нужном месте), а в терминале или какой-то другой специализированной программе, данные не отображаются. В таком случае вам пригодится сниффер для последовательного порта, желательно, с поддержкой протокола Modbus. В качестве примера можно привести Free Serial Analyzer, COM Port Toolkit. Последний в настоящее время, похоже, прекратил свое развитие.

В дальнейшем, требуется не только проверять работает ли устройство в принципе (т.е. корректно отвечает на запросы), но и определять наработку на отказ с помощью длительного тестирования. Важными аспектами здесь являются поддержка авто-опроса с изменяемой нагрузкой (количество запросов в секунду) и наличие функции логирования. С этими задачами поможет справиться Modbus Poll или Modscan, это ПО платное, но имеется пробный период.

Следует учитывать, что собранные логи нужно будет анализировать, то есть определять количество запросов, на которые устройство не ответило, обнаруживать сбои, например, самопроизвольное изменение данных в ячейках и т.п. Конечно, можно использовать полноценную SCADA-систему, либо самому разработать и написать систему анализа и визуализации логов. Как вариант, рекомендуем обратить внимание на MasterSCADA от Insat. Она имеет встроенный Modbus-драйвер и версия до 32 точек является бесплатной, довольно проста в освоении (на сайте производителя есть хорошая документация и видео уроки).

В конце данной статьи мы определим список функций “идеального” инструмента для тестирования и наладки устройств/систем на базе протокола Modbus, а также сделаем небольшой обзор существующих инструментов.

Наладка систем автоматизации, использующих Modbus устройства

Людей, занимающихся наладкой систем автоматизации и просто пытающихся “подружиться” с каким-либо устройством, на борту которого находится Modbus, в разы больше чем, тех, кто эти устройства разрабатывает. Исходя из специфики задачи, требования к соответствующему ПО будут немного отличаться.

Если необходимо соединить контроллер и одиночное Slave-устройство, то прежде всего, нужно установить с ним связь с помощью преобразователя интерфейсов RS-485/USB, ПК и специализированного программного обеспечения либо терминала. В таком случае, логика работы и набор инструментов ничем не отличается от тех, что применяются при разработке Slave-устройства на стадии тестирования. На этом этапе не требуется длительное тестирование с последующим анализом большого количества лог-файлов.

В случае, когда у вас уже есть готовая сеть устройств, можно выделить следующие задачи:

  • проверка работоспособности всех устройств в сети (опрос каждого устройства в отдельности и проверка корректности ответа);
  • нагрузочное тестирование (опрос устройств в сети в течение длительного времени). Желательно сделать несколько экспериментов с различной частотой опроса, а после провести анализ собранных данных на наличие отказов, не ответов, порчи данных и т.п.

В этом случае, понадобится либо терминал с возможностью создания списка запросов, либо специализированный инструмент типа Modbus Poll, который позволяет опрашивать несколько устройств в рамках одного проекта.

Modbus-устройства могут иметь определенные настройки интерфейса RS-485: количество бит данных, четность и количество стоп бит. Устройства с различными настройками не могут работать в одной сети с одним и тем же мастером. Тестирование и конфигурирование таких устройств удобно проводить, применяя терминальные программы, имеющие возможность быстрого переключения между предустановленными профилями настроек портов или работающие с несколькими линиями одновременно.

Реже возникает задача организации обмена данными с устройством, протокол которого отличается от стандартной спецификации Modbus RTU. Нам приходилось встречаться с ситуацией, когда протокол Slave-устройства логически повторяет Modbus (структура пакета, таймауты и т.п.), но использует функции вне стандарта. В таком случаем возможна работа с использованием Modbus Poll, он позволяет строить произвольные запросы, или терминала, обладающего сходным функционалом. Стандартная SCADA-система, обычно, в такой ситуации бессильна, и работа с подобным оборудованием осуществляется через специальный OPC сервер.

Требования к ПО для работы с Modbus-устройствами в режиме мастера

Описав различные задачи, которые возникают при разработке, настройке и наладке устройств с протоколом Modbus, составим список требований к специализированному программному обеспечению.

  1. Поддержка настроек COM-порта (номер, скорость, четность, количество бит данных и стоп бит)
  2. Настройка таймаутов (время ожидания приема ответа на запрос, время между символами и кадрами)
  3. Поддержка стандартного Modbus
  4. Поддержка нестандартного Modbus
  5. Авто-опрос одного/нескольких устройств
  6. Настройка авто-опроса
  7. Логирование сессии / настройка логирования
  8. Создание профилей для быстрого переключения между настройками порта
  9. Работа в режиме сниффер
  10. Лицензия продукта
  11. Сопровождение продукта разработчиком

Обзор ПО для работы с Modbus протоколом

Modbus Poll

Начнем с классического приложения и довольно известного в наших “узких” кругах — Modbus Poll от Witte Software.

image

Эта программа является симулятором мастера в Modbus-сети. Интерфейс Modbus Poll интуитивно понятен. Если вы представляете себе логику работы протокола, то разобраться с программой труда не составит.

Функция Наличие Комментарий
Поддержка настроек COM-порта +
Настройка таймаутов + Доступны: время ожидания ответа
Поддержка стандартного Modbus + Список функций ограничен
Поддержка нестандартного Modbus +
Авто-опрос одного / нескольких устройств + / +
Настройка авто-опроса + Доступно: время между запросами
Логирование сессии / настройка логирования + / +
Создание профилей для быстрого переключения между настройками порта
Работа в режиме сниффер
Лицензия продукта ПО платное Есть пробный период 30 дней
Сопровождение продукта +

Достоинства: хорошая система логирования, достаточное количество поддерживаемых функций (во всяком случае, наиболее востребованные присутствуют), большое количество настроек внешнего вида.

Недостатки: цена (одна лицензия $ 129.00), нестандартный Modbus поддерживается как опциональная функция, нет профилей для быстрого переключения портов — приходится каждый раз перенастраивать соединение.

Modscan32/64

Следующим ПО в нашем обзоре будет Modscan от WinTECH. Внешне эта программа очень похожа на Modbus Poll, но функционалом она обладает значительно меньшим.

image

У Modscan есть одна уникальная особенность для программ данного типа — это возможность создания форм (своего рода мнемосхем). Пока ее функционалу далеко до реальных SCADA-систем, но наличие такого бонуса радует. На сегодняшний день это достаточно скудный, по своим возможностям инструмент (имеется ввиду редактор форм), но будем надеяться, что со временем, разработчики доведут его до хорошего уровня.

Функция Наличие Комментарий
Поддержка настроек COM-порта +
Настройка таймаутов + Доступны: время ожидания ответа
Поддержка стандартного Modbus + Список функций ограничен
Поддержка нестандартного Modbus
Авто-опрос одного / нескольких устройств + / +
Настройка авто-опроса + Доступно: время между запросами
Логирование сессии / настройка логирования + / —
Создание профилей для быстрого переключения между настройками порта
Работа в режиме сниффер
Лицензия продукта ПО платное Есть пробный период
Сопровождение продукта +

Достоинства: возможность создания собственных форм для просмотра данных, поддержка MMI & OLE Automation.

Недостатки: цена (одна лицензия $ 84.95), нет поддержки нестандартного Modbus, нет профилей для быстрого переключения портов, ненастраиваемая система логирования, малое количество поддерживаемых Modbus-функций.

Termite

Следующим в нашем списке будет терминал Termite от S2-Team. Termite является специализированный Modbus терминалом. Это означает, что он сам будет считать за вас CRC, распознавать сообщения об ошибках в ответах и т.д., ваша задача заключается в том, чтобы ввести корректное тело запроса в поле команды.

image

Функция Наличие Комментарий
Поддержка настроек COM-порта +
Настройка таймаутов + Доступны: время ожидания ответа,
время между символами и кадрами
Поддержка стандартного Modbus +
Поддержка нестандартного Modbus +
Авто-опрос одного / нескольких устройств + / +
Настройка авто-опроса + Доступно: время между запросами
Логирование сессии / настройка логирования + / —
Создание профилей для быстрого переключения между настройками порта +
Работа в режиме сниффер
Лицензия продукта Есть платная и
бесплатная версии
Бесплатная версия обладает
ограниченным функционалом
(на количество каналов,
одновременно ведомых лог файлов и
количество разных запросов в авто-опросе)
Сопровождение продукта +

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

Недостатки: PRO версия платная (одна лицензия $ 10), в текущем релизе нет возможности гибко настраивать логирование.

AccessPort

Программа из разряда “чистых” терминалов. Она не поддерживает Modbus, поэтому при её использовании будьте готовы считать CRC для ваших кадров самостоятельно. Несомненным плюсом является то, что в неё встроен сниффер последовательного порта.

image

Функция Наличие Комментарий
Поддержка настроек COM-порта +
Настройка таймаутов +
Поддержка стандартного Modbus
Поддержка нестандартного Modbus
Авто-опрос одного / нескольких устройств + / —
Настройка авто-опроса + Доступно: время между запросами
Логирование сессии / настройка логирования + / —
Создание профилей для быстрого переключения между настройками порта
Работа в режиме сниффер +
Лицензия продукта ПО бесплатное
Сопровождение продукта Не поддерживается Крайняя версия продукта
была выпущена 2012-04-23

Достоинства: наличие сниффера порта, ПО бесплатное, настраиваемое представление данных, возможность передачи файлов.

Недостатки: не поддерживает Modbus вообще, нет возможность создавать профили, в режиме авто-опрос можно работать только с одним устройством, в настоящее время ПО не развивается.

В заключение хотелось бы добавить, что в сети достаточно большое количество программ для работы с последовательным портом, но если есть необходимость работать именно с Modbus протоколом, то его поддержка в таком ПО крайне желательна. Одна из основных причин — это расчет CRC, в ручную это делать накладно, также важно, чтобы программа могла уметь разделять кадры, иначе все превращается в сплошную мешанину байтов, ну и если есть авто-опрос, то это сильно упрощает жизнь.

Хочется дополнить список ПО и библиотек для работы с Modbus, тем, что было переставлено в комментариях.
SCADA
FreeSCADA
Modbus TCP/RTU
Advanced TCP/IP Data Logger
Ardsoft Эмулятор Modbus
PortMon
MODBUS FOR WINDOWS
PeakHMI
Modpoll Modbus Master Simulator
QModMaster
modbus_tk
pymodbus
libmodbus

Благодарю всех, кто помог улучшить статью!

Спасибо за внимание!

В одной из статей мы писали о том, как работать с цифровыми датчиками посредством программы Simply Modbus. Помимо вышеописанной утилиты предлагаем вашему вниманию еще одну программу для работы с нашими устройствами – Modbus Poll. Для правильного использования функций программы в начале надо подключить наш интеллектуальный датчик, поддерживающий протокол передачи данных RS-485, посредством стороннего контроллера или же преобразователя интерфейсов. Далее необходимо зайти в Диспетчер устройств>>Контроллер USB выбрать соответствующее устройство. В нашем случае это ZETSENSOR USB (рис. 1), открыть его свойства и во вкладке Дополнительно выставить галочку напротив «Загрузить VCP» (рис.2).

Связь цифровых датчиков со сторонними системами
Рисунок 1

Связь цифровых датчиков со сторонними системами
Рисунок 2

Далее необходимо выключить и включить заново контроллер/преобразователь интерфейса к ПК.

Только после проделанных выше операций следует запускать программу Modbus Poll.

После запуска программы необходимо ее настроить должным образом. Для этого зайти в верхнее менюConnection, выбрать пункт Connect…, т.е. подключение к контроллеру, который преобразует USB в COM-порт. Если программа в бесплатном режиме, сперва откроется окно с просьбой ввести регистрационный ключ, следует пропустить данную операцию посредством нажатия кнопки ОК. Далее откроется окно с возможностью выбора устройства (рис.2). Настройте как показано на рисунке 2.

В поле (рис 3.) идет опрос модуля, сканирование любого цифрового датчика (RS-485) ZET 70XX. Как видно на рисунке – имеется ошибка Timeout Error, которая возникает из-за того, что опрашивается устройство с адресом 1, нам же нужно выставить адрес существующего модуля. Узнать адрес модуля можно с помощью программы ZETLAB>>Время ZETServer, предварительно необходимо в Modbus Poll выполнить Disconnect, на рисунке показано, где отображается адрес устройства в ZETLAB.

Связь цифровых датчиков со сторонними системами
Рисунок 3

Связь цифровых датчиков со сторонними системами
Рисунок 4

Связь цифровых датчиков со сторонними системами
Рисунок 5

Возвращаемся вновь к программе Modbus Poll, выполняем Connection>>Connect. Далее следует выставить адрес модуля и другие настройки в окне Setup>>Read/Write Definition как показано на рисунке 6. В ячейке Address выставляем значение, указанное в таблице, в нашем случае используется датчик абсолютного давления ZET 7012 и его адрес «20».

Чтобы получать данные в нужном формате, также необходимо выставить ряд настроек. Необходимо зайти «Display» и выбрать тип переменных, в нашем случае это Float CD AB.

Если устройств несколько, то для каждого устройства следует открыть свое окно посредством функции New из меню File и выполнить все вышеописанные настройки для опроса модуля. В результате после все настроек в окне программы вы сможете увидеть данные, поступающие с интеллектуального датчика и убедиться в корректности его работы.

В результате после все настроек в окне программы вы сможете увидеть данные, поступающие с цифрового датчика и убедиться в корректности его работы.

Связь цифровых датчиков со сторонними системами
Рисунок 6

Связь цифровых датчиков со сторонними системами
Рисунок 7

Связь цифровых датчиков со сторонними системами
Рисунок 8

Про Модбас написано огромное количество статей и снято множество видео: казалось бы, настроить его и принимать по нему нужные данные не составит большого труда, но на практике оказывается не совсем так. Безусловно все это очень помогает, но все же есть несколько нюансов, способных сильно затормозить работу для новичка, впервые столкнувшего с этим, о чем я и хочу поведать на конкретном примере. Имеется измерительный преобразователь тока Е854ЭЛ c RS485 на борту и поддержкой протокола Modbus RTU (здесь и далее разговор ведется только за этот формат). Моя задача писать данные с токового трансформатора, подключенного к этому преобразователю, на удаленный сервер, у которого уже установлена и настроена программа для приема и записи сигналов, и у нее вроде как есть возможность подключения по Модбасу, но опыта настройки этого вида связи нет. Ну что же, будем пробовать. 

Для начала было бы интересно попробовать подключиться к прибору со своего компа, чтобы просто разобраться что и как там вообще работает. Для этого подойдет уже имеющийся в наличии адаптер USB to RS485. Подключаем адаптер USB кабелем к компу, и он конечно же требует драйвера: скачиваем их, устанавливаем и снова подключаем — в диспетчере устройств появляется новый COM порт. Это хорошо, все идет по плану. Теперь нужно запитать сам прибор и присоединить двумя проводами к адаптеру.

Уже тут появляется первый нюанс: на приборе RS485 обозначен клеммами A и B, а на адаптере обозначен как DATA+ и DATA-, всего два варианта подключения, но если не угадать, то можно потом долго мучиться почему нет связи с прибором. Мне повезло — я подключил сразу правильно A на +, B на — (уже позже проверил, поменяв местами, связи не будет)

После того как подключил прибор и подал на него питание, нужно пробовать законнектиться к нему. На сайте производителя скачал инструкцию к измерителю и программу конфигуратор для него. Пытаюсь открыть программу, но она ругается на отсутствие библиотеки. Конечно это не критично, несколько минут гугления и скачивания недостающих компонентов и программа успешно запустилась, но это еще один небольшой затуп в копилку (UPD лезть в инет не нужно было, внутри архива был установщик библиотек, но он валялся среди кучи других файлов и не сразу его разглядел). В программе выставил свой порт, и заодно узнал, что по умолчанию настройки порта у прибора 9600-N-2 (скорость 9600, контроля четности нет, и 2 стоповых бита). Кстати в инструкции об этом нет ни слова.

Дальше выполняется подключение к прибору в программе и при считывании конфигурации удалось увидеть номер измерителя такой же, как и на его морде — значит соединение есть и все работает. Хотя нет, не все — нет уверенности что прибор может показывать ток, так как на табло в программе стоят нули. Интересно теперь подключить трансформатор тока, пропустить через него провод и подключить нагрузку, чтобы глянуть что покажет прибор. Соответственно сооружается розетка-удлинитель, в которую планируется воткнуть чайник на 1,5 кВт у которого ток потребления будет примерно 6,8-6,5 Ампер (зависит от напряжения в сети). Самое забавное, что даже на этом шаге произошел затуп: чайник который был под рукой оказался нерабочим и пришлось идти за другим. Но в итоге подключив чайник к своей розетке удалось увидеть то что хотелось (здесь ток 0,11 так как трансформатор преобразует в отношении 300/5, соответственно умножив 0,11 на 60, получим ожидаемые 6,6):

Теперь для собственного развития интересно побаловаться с модбасом, чтобы понять как он работает. Для этого хорошо подходит бесплатная программа-терминал Termite. В ней можно на выбранный порт отправлять команды модбаса (причем что удобно — есть подсказка-расшифровка команд), а контрольная сумма считается автоматически. В инструкции к прибору написано, что показания частоты берутся из регистра с адресом 0014 — вот их-то и попробуем получить. Получается, что наша команда должна выглядеть как 01 03 00 14 00 02 — то есть 01 адрес устройства, 03 — это запрос холдинг регистра, 0014 – адрес, как и говорилось, 0002 — количество запрашиваемых регистров

И вот тут снова случился затуп, так как не внимательно читал инструкцию. Я очень долго пытался получить что-то кроме ошибок в ответ, запрашивая не 2 регистра, а всего один, при этом пытался поиграться запрашиваемыми регистрами (не 03, а 04 или даже 01-02) — везде возвращались ошибки, но это был очень хороший знак, т.е. ошибки приходили от самого прибора и в ответе контрольная сумма CRC была OK. Нужно отдать мне должное что методом научного тыка я-таки смог получить заветные нули в ответ при отключенной нагрузке, запросив 2 холдинг регистра (то есть то что видно на скрине выше). Уже позже в очередной раз столкнувшись с какой-то другой проблемой, изучил инструкцию доскональней, я увидел что запрашивается именно 2 регистра (про регистры хранения Holding Registers похоже читал в другой инструкции не к этому прибору):

Можно увидеть на предыдущем скрине что вторым запросом после включения чайника запрашивалась так же частота (0014 адрес), но в ответ пришел текущий ток (если его перевести в формат float Mid-Little Endian). Вообще все 3 адреса возвращают ток, а при запросе таких же данных в другом формате (0024 адрес, например) возвращает ошибку Illegal Data Address. И да, очень повезло опять же что формат адреса в инструкции указан в HEX (но об этом не сказано что это HEX), так как запрашивая 14 регистр в десятичном формате — ничего не выйдет, с этим тоже позже возник затуп.

Я уже написал очень много, а к поставленной цели приблизился совсем немного — есть подключенный и настроенный прибор, есть какое-то понимание протокола, видно что прибор в рабочем состоянии и отзывается на запросы как ожидается, но вот удаленно принимать данные на нужную программу я все еще не могу. Под рукой есть адаптер MOXA nport 5230 и теперь буду настраивать его — установив на компьютер программу Nport Administrator можно добавить в систему виртуальный com-порт, который будет работать через сетевую карту — в общем через Ethernet можно управлять устройствами RS485. И уже на этом этапе снова появляются нюансы: у мохи было не 2 клеммы, а 5 для подключения 485 интерфейса: одна пара T+ и T-, вторая R+/D и R-/D и еще GND. Мне почему-то показалось что логичнее подключать на T+T-, а надо было на пару R+/D и R-/D. Этот маневр обошёлся мне в несколько часов безуспешных попыток соединиться тупо пытаясь настроить порты в МОХЕ, несколько раз сбрасывая ее в заводским установкам и пробуя заново. После прочтения инструкции и правильного подключения все заработало как и ожидалось. После этого протестировал режим TCP сервера — прикольная штука, но нужно двигаться дальше.

Программа для сбора сигналов — это старая версия IBA PDA — работает на 32 битных машинах. Чтобы не ломать сервак экспериментами, нужно ставить на 32 битную виртуалку Ибу, и там все это проворачивать еще раз. Проблема в пробросе портов на виртуалку, но Nport  Administrator вроде как решил проблему, хотя и не без танцев с бубном. Самая мякота начинается тут: снова методом тыка (но с IBA PDA я знаком хорошо, поэтому это нормально) вроде как настраиваю все как надо, есть соединение с прибором, но в ответ ничего не приходит. Нагуглил классную программу Virtual Serial Ports Emulator — там можно разделить порт на несколько абонентов, и отслеживать запросы и ответы к этому виртуальному порту (где галочка появляются подключенные абоненты и по каждому можно смотреть входящие и исходящие запросы):

Для начала я погонял запросы в терминале и понял как это работает, а потом включил отслеживание запросов Ибы и все сразу встало на свои места: запрос выглядел следующим образом: 01 03 00 0E 00 02 A5 C8 то есть запрос не 14 регистра а регистра E что является 14 в hex формате. Перевел 14 в десятичный формат, поставил его в настройках ибы — и все заработало)) На скрине решил запрашивать не 14 регистр, а 12 (18 в dec) — разницы нет, зато первый по списку:

Вот теперь, пожалуй, и все. В заключении хочу сказать спасибо всем, кто дочитал до конца, а еще отдельное спасибо авторам программ по Модбасу, а в особенности Termite и VSPEmulator — очень приятные в работе и реально полезные)

PS вдруг кому-то пригодится: частота сети в формате Mid-Little Endian (F1032 — в инструкции, что показывает порядок следования байт первый-нулевой-третий-второй) запрашивается по 0x0010 регистру (причем как оказалось без разницы 03 — holding, или 04 — input это же касается и токов во всех других регистрах — это к слову о том почему в инструкции об этом не было написано — нет необходимости уточнять). Чтобы получить ток в формате Little Endian (F0123) нужно запрашивать адрес 0x0018, а Big Endian (F3210) адрес 0x001a . И как справедливо заметили в комментарии автор сам дурак что не увидел формат записи 0x — что в принципе и означает шестнадцатеричное представление адреса. Но опять же это не отменяет того факта что впервые столкнувшись с таким в инструкции новичок сразу же сможет сообразить что вообще к чему и почему именно так.

Понравилась статья? Поделить с друзьями:

Новое и полезное:

  • Modbus master tool инструкция на русском
  • Mocute 054 инструкция на русском
  • Mocute 050 инструкция на русском для андроид
  • Mocute 032 инструкция на русском
  • Mobvoi ticwatch pro 3 gps инструкция

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии