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