ModbusRTU ========= Rulechain.cpp: .. code:: 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, так как использует более простое оборудование для последовательной связи. .. raw:: html
Узел опроса устройств по протоколу Modbus RTU. ---------------------------------------------- |image0| |image1| Конфигурация узла ----------------- Загрузка настроек из файла **.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 .. csv-table:: Table :header: "port", "boudrate", "byte-size", "flow", "stop-bit", "device-name", "device-id", "period", "name", "function", "address", "quantity", "type", "scale" :widths: 15, 10, 10, 10, 10, 15, 10, 10, 15, 15, 10, 10, 15, 10 "/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" .. raw:: html
Пример использования -------------------- По сути, ModbusRTU схож по использованию с ModbusTCP. |image2| Загружаем наш файл и проверяем на наличие ошибок |image3| .. |image0| image:: ../../_img/input-modbusrtu.png .. |image1| image:: ../../_img/input-modbusrtu-settings.png .. |image2| image:: ../../_img/modbusRTU_example_chain.png .. |image3| image:: ../../_img/modbusRTU_example_settings.png