Вышла новая версия программы с номером 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 По этому в этом релизе сборок под эти ОС нет. К следующему релизу постараюсь все восстановить.
Здравствуйте, Сергей.
А какой вариант smalltalk Вы используете? Хотел научиться программировать на нём для себя.
В первую очередь большое спасибо Сергею Глушенко за замечательную программу и хотелось бы спросить по самой программе. Если на модуле NodeMcu v3 создать веб интерфейс и там задать имя сети и пароль как поле ввода, то зайдя с мобильного устройства на страничку то можно это все изменить и перезагрузить контроллер, но если там указать переменную то она в веб интерфейсе отразиться НО данные в ней не меняются и не то что бы меняются они вообще исчезают. Вопрос: Это какой то баг или переменную невозможно указывать в веб интерфейсе для ее дальнейшего изменения ?
Глобальную переменную я хотел указать для DTMF блока в которой можно было бы указывать новый номер телефона доступа, но увы переменная не изменяется.
Спасибо.