- Описание функциональных характеристик системы
- Поддержание жизненного цикла
- Установка PromUC
- Настройка сервисов
- Обновление PromUC
- Резервное копирование и восстановление базы данных Promuc FrameWork
- Рекомендации по безопасности
- Руководство по эксплуатации и администрированию
- Module GIS
- Конфигурирование правил и сценариев
- Module Framework
- Module Interface
- Технологии проекта
- Эксплуатация КТС
- Единый сервис аутентификации
- Информация о релизах
ModbusRTU¶
Rulechain.cpp:
else if (node_type == "ModbusRTU")
{
value set;
set["chain"] = value::string(this->name);
set["command"] = value::string("Create");
set["datatype"] = value::string("ModbusRTU");
if(!_node.has_object_field("settings"))
throw std::invalid_argument(ErrorMsgStart + " нет поля settings (object)");
if(!_node["settings"].has_string_field("csv"))
Modbus RTU — это протокол связи, используемый для передачи данных между устройствами в промышленных сетях. Является частью стандарта Modbus, который был разработан для обеспечения простого и эффективного способа связи между электронными устройствами.
Modbus RTU использует последовательный интерфейс (например, RS-485 или RS-232) для передачи данных. Вследствие использования этих интерфейсов он лучше подходит для более коротких расстояний и меньшего количества устройств, хотя современные реализации могут охватывать и большие расстояния.
Работает на физическом и канальном уровнях модели OSI. Передает данные в двоичном формате, используя стартовые и стоповые биты, а также контрольные суммы для обеспечения целостности данных.
Из преимуществ - обычно дешевле и проще в реализации чем ModbusTCP, так как использует более простое оборудование для последовательной связи.
Узел опроса устройств по протоколу Modbus RTU.¶
Конфигурация узла¶
Загрузка настроек из файла .csv
port -
boudrate -
byte-size -
flow -
stop-bit -
device-name -
device-id -
period -
name -
function -
address -
quantity -
type -
scale -
Пример файла с настройками csv:
port;boudrate;byte-size;flow;stop-bit;device-name;device-id;period;name;function;address;quantity;type;scale
/dev/pts/3;115200;8;N;1;pol-467;1;5000;di-1;FC03;0;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;di-2;FC03;1;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;di-3;FC03;2;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;di-4;FC03;3;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;di-5;FC03;4;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;do-1;FC03;5;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;do-2;FC03;6;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;on-do-2;FC03;7;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;ai-2;FC03;0;2;float32;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;ai-3;FC03;1;2;float32;1
port |
boudrate |
byte-size |
flow |
stop-bit |
device-name |
device-id |
period |
name |
function |
address |
quantity |
type |
scale |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/dev/pts/3 |
115200 |
8 |
N |
1 |
pol-467 |
1 |
5000 |
di-1 |
FC03 |
0 |
1 |
bool |
1 |
/dev/pts/3 |
115200 |
8 |
N |
1 |
pol-467 |
1 |
5000 |
di-2 |
FC03 |
1 |
1 |
bool |
1 |
/dev/pts/3 |
115200 |
8 |
N |
1 |
pol-467 |
1 |
5000 |
di-3 |
FC03 |
2 |
1 |
bool |
1 |
/dev/pts/3 |
115200 |
8 |
N |
1 |
pol-467 |
1 |
5000 |
di-4 |
FC03 |
3 |
1 |
bool |
1 |
/dev/pts/3 |
115200 |
8 |
N |
1 |
pol-467 |
1 |
5000 |
di-5 |
FC03 |
4 |
1 |
bool |
1 |
/dev/pts/3 |
115200 |
8 |
N |
1 |
pol-467 |
1 |
5000 |
do-1 |
FC03 |
5 |
1 |
bool |
1 |
/dev/pts/3 |
115200 |
8 |
N |
1 |
pol-467 |
1 |
5000 |
do-2 |
FC03 |
6 |
1 |
bool |
1 |
/dev/pts/3 |
115200 |
8 |
N |
1 |
pol-467 |
1 |
5000 |
on-do-2 |
FC03 |
7 |
1 |
bool |
1 |
/dev/pts/3 |
115200 |
8 |
N |
1 |
pol-467 |
1 |
5000 |
ai-2 |
FC03 |
0 |
2 |
float32 |
1 |
/dev/pts/3 |
115200 |
8 |
N |
1 |
pol-467 |
1 |
5000 |
ai-3 |
FC03 |
1 |
2 |
float32 |
1 |
Пример использования¶
По сути, ModbusRTU схож по использованию с ModbusTCP.
Загружаем наш файл и проверяем на наличие ошибок