Выход новой версии программы FLProg.

Вышла новая версия программы с номером 8.0.0.

Основные изменения в программке связаны с реализацией Modbus.

В процессе работы с программой, а также при разработке контроллеров была выявлена необходимость расширении возможностей реализации modbus. Сделать это в лайтовом режиме (только модернизацией программы FLProg) не представлялось возможным. Пришлось для начала переносить всю логику работы модбаса во внешнюю библиотеку. Это потянуло за собой необходимость изучать язык C++, а также вопросы создания библиотек. Ранее необходимости в этом не было. После создания библиотеки пришлось ломать практически всю архитектуру основной программы связанную с модбас, и создавать новую. Именно с этим связан большой перерыв между выходами версий программы. Объём работ оказался неожиданно большим.

Новые возможности модбаса:

Возможно одновременное создание  нескольких экземпляров модбас мастера, модбас слейва и мостов. Для слейвов так же есть возможность создание нескольких интерфейсов подключения в пределах одного слейва.

Рассмотрим поподробнее эти возможности.

Несколько мастеров – это бывает необходимо, когда одно устройство опрашивает несколько линий связи (например, по ТСР и RTU, и, например по ТСР устройства двух типов TCP и RTUoverTCP).  Теперь можно создать три экземпляра модбас мастера для каждого типа соединения.

 

Так же несколько мастеров на одном интерфейсе (это касается только ТСР соединения) полезно в том случае если требуется опрашивать несколько серверов, при этом возможны их отключения. В случае использования для опроса одного мастера отключение одного из серверов приведёт к задержке опроса других на время таймаута, в случае нескольких мастеров, опрос ведётся параллельно, и задержек в опросе работающих серверов нет.

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

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

Насчет мостов – всё просто, можно создавать необходимое количество мостов, на сколько хватит RTU интерфейсов.

Должен предупредить – поскольку это бэта версия и изменений было внесено много – возможны ошибки как в самой программе, так и в библиотеке модбас (это мой первый опыт в С++, поскольку я всё-таки смолтолкер, и так же первый опыт в создании библиотек на этом языке). Библиотека является Open Sourse и находится на гитхабе(https://github.com/Totuin ). Для работы с модбасом необходимы все три библиотеки.  Скачать архив с библиотеками можно здесь: https://flprog.ru/downloads/additionalFiles/FLProgLibraries.zip .

Желающие могут проверить код, и предложить изменения. Так же остались несколько вопросов с которыми я пока не справился. Во-первых, при подключении библиотек примеры из них не появляются в Arduino IDE. Во-вторых, я не понимаю почему при компиляции, компилятор проверяет ВСЕ файлы в папке библиотеки, а не только те, которые подключаются через include.

И ещё, в ближайшие несколько дней не смотрите используйте файлы примера для модбас мастера (*.ino), там будут вносится изменения!

 

P.S. К сожалению у меня умер один из винтов и вместе с ним ушли виртуалки на WinXP и Linux64 По этому в этом релизе сборок под эти ОС нет. К следующему релизу постараюсь все восстановить.

 


2

Автор публикации

не в сети 3 дня

Сергей Глушенко

782
Комментарии: 15Публикации: 391Регистрация: 04-02-2018

3 комментария к “Выход новой версии программы FLProg.”

  1. В первую очередь большое спасибо Сергею Глушенко за замечательную программу и хотелось бы спросить по самой программе. Если на модуле NodeMcu v3 создать веб интерфейс и там задать имя сети и пароль как поле ввода, то зайдя с мобильного устройства на страничку то можно это все изменить и перезагрузить контроллер, но если там указать переменную то она в веб интерфейсе отразиться НО данные в ней не меняются и не то что бы меняются они вообще исчезают. Вопрос: Это какой то баг или переменную невозможно указывать в веб интерфейсе для ее дальнейшего изменения ?
    Глобальную переменную я хотел указать для DTMF блока в которой можно было бы указывать новый номер телефона доступа, но увы переменная не изменяется.

    0

Оставьте комментарий

Войти с помощью: