Для отладки ППО на ПЛК потребовалось настроить симуляцию устройства, которое опрашивается по протоколу Modbus RTU. Все ниже перечисленные программы и действия произведены в ОС Windows.
Для симуляции я использовал связку следующих программ :
Modbus Poll в качестве Modbus-клиента
ModRSsim2 для симуляции Modbus-сервера
VESPE (Virtual Serial Ports Emulator (64 bit) ) ,
У меня была какая то древняя версия VESPE - 1.0.5.443
Первое что нужно сделать , это настроить виртуальный COM-порт. Запускаем VESPE и создаем коннектор:
На том ПК, где я себе ставил симулятор, уже был какой то COM-порт, поэтому на примере будет COM2:
После этого, чтобы подключиться к нему по TCP , необходимо создать TCP-сервер, который откроет порт для обмена поверх TCP:
Выбираем ранее созданный COM-порт и назначаем TCP-порт, через который будем обращаться MOdbus клиентом дял чтения регистров:
Далее запускаем MODRSSIM (у меня он был установлен из пакета ModbusOPCServer demo trial от MPSSoft (это та, что MasterScada выпускает) и настраиваем на MOdbus RS-232 , а также подключаем к COM2:
Заполним холдинг регистры:
Подключаемся ModbusPoll :
Подключение есть, запросы идут, ответы приходят:
Эту статью решил написать для себя как шпаргалку. Верю в то, что таких примеров на просторе сети много. Буду признателен, если в комментариях поделитесь опытом симуляции Modbus RTU, Modbus TCP устройств на базе Linux.
Комментарии (4)
AleksEgorov
24.10.2024 00:10Для эмуляции использую 2 экземпляра TerminalTMB и 2 RS-485/USB переходника
ProgerMan
24.10.2024 00:10В своё время написал собственный эмулятор (на Delphi). Там задавал список устройств, их названия, названия входов и выходов и запускал (настройки каждого предприятия хранились в отдельном xml). В тестируемой программе полностью формировался запрос и посылался в очередь запросов, но при непосредственной передаче он уходил не в COM-порт, а в эмулятор через Socket. Эмулятор его принимал, разбирал и выполнял, посылая соответствующий ответ. В эмуляторе можно было менять состояние устройства вручную как угодно, имитируя всевозможные ситуации: застрявший материал, медленное дозирование, ложное срабатывание датчика, отключение устройства, аварийная остановка и пр.
Скриншоты программы
Программа очень помогла! Потому что до этого эмулятор был физический и, например, приходилось руками растягивать тензодатчик для изменения веса - то ещё "веселье".
Пожалуй, стоит выложить исходники, хотя код вряд ли будет красив и хорошо читаем.
bigbamblbee
Очередная боль в одном месте для тех, кто не желает разобраться в примитивной спецификации протокола modbus. Что это сейчас было? Кто такой ППО? Какие виртуальные порты? Есть библиотека libmodbus, есть qmodbus, есть несколько примеров в библиотеке Qt, где они используют свой QModbus, и в этих примерах есть из коробки простые мастер и слэйв, м помощью которых можно отладить что угодно, и при желании разобраться как программировать modbus на десктопе. А это сейчас я посмотрел что такое? Статья фаната оборудования компании Болид, который узнал о том, что есть Хабр?
magratem Автор
благодарю, разберусь