The release of a new version of the FLProg program.

A new version of the program with the number 8.0.0 has been released.
The main changes in the program are related to the implementation of Modbus.
In the process of working with the program, as well as in the development of controllers, the need to expand the possibilities of modbus implementation was identified. It was not possible to do this in light mode (only by upgrading the FLProg program). I had to first transfer all the logic of the modbus to an external library. This entailed the need to learn the C ++ language, as well as the issues of creating libraries. Previously, there was no need for this. After creating the library, I had to break almost the entire architecture of the main program associated with modbus, and create a new one. It is with this that the big break between the releases of the program versions is connected. The amount of work was surprisingly large.
New modbus features:
It is possible to simultaneously create multiple instances of modbus master, modbus slave and bridges. For slaves, it is also possible to create several connection interfaces within one slave.
Let’s take a closer look at these possibilities.
Several masters – this is necessary when one device polls several communication lines (for example, via TCP and RTU, and, for example, via TCP devices of two types TCP and RTUoverTCP). Now you can create three instances of the modbus master for each type of connection.

Also, several masters on the same interface (this applies only to the TCP connection) is useful if you need to poll several servers, while they can be turned off. If one master is used for polling, shutting down one of the servers will delay polling others for the timeout period, in the case of several masters, polling is carried out in parallel, and there are no delays in polling running servers.
If the device is planned to be polled from several places, then two options are possible.
The first is multiple slaves, in the case where different sets of data are provided for each polling device. The second one is when one data set is used for all polling devices – in this case one slave and several connection interfaces are created.

As for bridges, everything is simple, you can create the required number of bridges, as long as the RTU interfaces are enough.
I must warn you – since this is a beta version and a lot of changes have been made – there may be errors both in the program itself and in the modbus library (this is my first experience in C ++, since I’m still a smoltalker, and also the first experience in creating libraries in this language). The library is Open Source and is located on github ( All three libraries are required to work with modbus. You can download the archive with libraries here: .
Those who wish can check the code and suggest changes. There are also a few questions that I haven’t dealt with yet. Firstly, when libraries are included, examples of them do not appear in the Arduino IDE. Secondly, I do not understand why, when compiling, the compiler checks ALL files in the library folder, and not just those that are connected via include.
And yet, in the next few days, do not look, use the example files for the modbus master (*.ino), changes will be made there!

P.S. Unfortunately, one of the screws died, and the WinXP and Linux64 virtual machines left with it. Therefore, there are no assemblies for these OSes in this release. I’ll try to restore everything for the next release.


Publication author

Comments: 15Publics: 389Registration: 04-02-2018

3 thoughts on “The release of a new version of the FLProg program.”

  1. Здравствуйте, Сергей.

    А какой вариант smalltalk Вы используете? Хотел научиться программировать на нём для себя.

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


Leave a Comment

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