Для отладки ППО на ПЛК потребовалось настроить симуляцию устройства, которое опрашивается по протоколу Modbus RTU. Все ниже перечисленные программы и действия произведены в ОС Windows.

Для симуляции я использовал связку следующих программ :

  • Modbus Poll в качестве Modbus-клиента

  • ModRSsim2 для симуляции Modbus-сервера

  • VESPE (Virtual Serial Ports Emulator (64 bit) ) ,

У меня была какая то древняя версия VESPE - 1.0.5.443

Первое что нужно сделать , это настроить виртуальный COM-порт. Запускаем VESPE и создаем коннектор:

Виртуальный COM.
Виртуальный COM.

На том ПК, где я себе ставил симулятор, уже был какой то COM-порт, поэтому на примере будет COM2:

Виртуальный COM-порт
Виртуальный COM-порт

После этого, чтобы подключиться к нему по TCP , необходимо создать TCP-сервер, который откроет порт для обмена поверх TCP:

Тип вирутального устройства - TCP сервер
Тип вирутального устройства - TCP сервер

Выбираем ранее созданный COM-порт и назначаем TCP-порт, через который будем обращаться MOdbus клиентом дял чтения регистров:

COM-порт и TCP-сервер настроены на ПК
COM-порт и TCP-сервер настроены на ПК

Далее запускаем MODRSSIM (у меня он был установлен из пакета ModbusOPCServer demo trial от MPSSoft (это та, что MasterScada выпускает) и настраиваем на MOdbus RS-232 , а также подключаем к COM2:

Заполним холдинг регистры:

Подключаемся ModbusPoll :

Подключение есть, запросы идут, ответы приходят:

Эту статью решил написать для себя как шпаргалку. Верю в то, что таких примеров на просторе сети много. Буду признателен, если в комментариях поделитесь опытом симуляции Modbus RTU, Modbus TCP устройств на базе Linux.

Комментарии (4)


  1. bigbamblbee
    24.10.2024 00:10

    Очередная боль в одном месте для тех, кто не желает разобраться в примитивной спецификации протокола modbus. Что это сейчас было? Кто такой ППО? Какие виртуальные порты? Есть библиотека libmodbus, есть qmodbus, есть несколько примеров в библиотеке Qt, где они используют свой QModbus, и в этих примерах есть из коробки простые мастер и слэйв, м помощью которых можно отладить что угодно, и при желании разобраться как программировать modbus на десктопе. А это сейчас я посмотрел что такое? Статья фаната оборудования компании Болид, который узнал о том, что есть Хабр?


    1. magratem Автор
      24.10.2024 00:10

      благодарю, разберусь


  1. AleksEgorov
    24.10.2024 00:10

    Для эмуляции использую 2 экземпляра TerminalTMB и 2 RS-485/USB переходника


  1. ProgerMan
    24.10.2024 00:10

    В своё время написал собственный эмулятор (на Delphi). Там задавал список устройств, их названия, названия входов и выходов и запускал (настройки каждого предприятия хранились в отдельном xml). В тестируемой программе полностью формировался запрос и посылался в очередь запросов, но при непосредственной передаче он уходил не в COM-порт, а в эмулятор через Socket. Эмулятор его принимал, разбирал и выполнял, посылая соответствующий ответ. В эмуляторе можно было менять состояние устройства вручную как угодно, имитируя всевозможные ситуации: застрявший материал, медленное дозирование, ложное срабатывание датчика, отключение устройства, аварийная остановка и пр.

    Скриншоты программы

    Программа очень помогла! Потому что до этого эмулятор был физический и, например, приходилось руками растягивать тензодатчик для изменения веса - то ещё "веселье".

    Пожалуй, стоит выложить исходники, хотя код вряд ли будет красив и хорошо читаем.