ModLook — сканер регистров ModBus. Отмечаем 20-летие программы

    Сегодня я бы хотел рассказать о программе, с помощью которой я начинал изучать протокол ModBus и ПЛК. Я ей пользуюсь до сих пор, и лично видел её в использовании у нескольких наладчиков. Если кому-то интересна история её создания или исходники прошу под кат.

    image

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

    Первый автор программы тесно связан с АСУ ТП. Появление ПЛК с ModBus в 90-х потребовало какой-то программы для работы с этим протоколом. В те времена чтобы посмотреть содержимое регистров контроллера нужно было либо устанавливать на компьютер среду программирования контроллера, что неудобно, либо покупать какую-то платную программу. Хотелось что-то лёгкое и компактное, что можно таскать на дискете. Это и привело к написанию собственной программы. Прототип программы был написан под DOS на Basic. Прототип, кстати, получился не очень удачным. Позже проект был сконвертирован в Visual Basic. И где-то в начале 2000-х программа была переписана на Delphi. В середине 2000-х исходники попали уже ко мне. Тогда я вынес опрос по ModBus в отдельный поток, и добавил несколько мелких улучшений. Недавно добавил режим опроса ModBus rtu поверх TCP/IP и сконвертировал проект в Lazarus.

    ModLook писался для собственного пользования. Получилось довольно удобно. Все элементы вынесены на главную панель. После измерения параметра не нужно жать ОК, изменения применяются автоматически. Так что программой можно управлять одной рукой (или ногой).

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

    ModLook может опрашивать регистры Coil Status (0ХХХХ), Discrete Inputs (1ХХХХ), Holding Registers (4ХХХХ), Input Registers (3ХХХХ). Можно разрешить или запретить опрос какого-то из этих регистров галочкой «Опрос».

    Ссылка на исходники
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 9

      0
      Что это за тип вещественного числа такой 160?
        0
        16O — величина со знаком на 16 битах, кодируется со сдвигом на 8000h (-32768 кодируется 0. 0 кодируется 8000h, 32767 кодируется FFFFh). Редкий тип.
        0
        С Modbus TCP что-то не так работает.
        При рассмотрении в Wireshark сложилось впечатление, что в транзакции запроса отсутствуют (пропущены) «Transaction Identifier», «Protocol Identifier» и «Length». Как будто заголовок оставлен от Modbus RTU.
        В программке может быть добавить индикатор отсылки/приёма? А то при ошибке всё просто мёртво стоит без изменений и непонятно, когда происходит обмен. Можно в строчке под выбором TCP порта добавить сообщение «отсылка», тогда как минимум будут чередоваться сообщения «отсылка»/«ошибка».
          0
          Так и есть, это ModBus rtu поверх TCP/IP, а не Modbus TCP.
          В программке может быть добавить индикатор отсылки/приёма?

          Конечно добавьте, буду только рад.
          0
          Добротная работа. Какую версию Indy используете для реализации TCP соединения?
          0
          А версии с англоязычным интерфейсом не планируется?
            0

            Зачем?

              0
              Хотел показать коллеге, но он австалиец и специально для этого не будет учить русский язык. В принципе там и так всё понятно для тех кто в теме, просто хотелось бы версию для АСУшников за пределами СНГ.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое