chenged panel from cMT3072 to MT8121XE3
This commit is contained in:
parent
d9fd05e616
commit
d96d40cd41
BIN
01. Перечень сигналов.xlsx
Normal file
BIN
01. Перечень сигналов.xlsx
Normal file
Binary file not shown.
Binary file not shown.
BIN
cmtp/MT8121XE3/EBProject1_MT8121XE3.emtp
Normal file
BIN
cmtp/MT8121XE3/EBProject1_MT8121XE3.emtp
Normal file
Binary file not shown.
58
diagrams/PlantUML/package.puml
Normal file
58
diagrams/PlantUML/package.puml
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
@startuml
|
||||||
|
title Подсистемы АСУ ГА для главного меню
|
||||||
|
|
||||||
|
package "АСУ ГА" {
|
||||||
|
package "ГА (общие)" as GA
|
||||||
|
package "ГБ + АРЗ" as GB
|
||||||
|
package "НА" as NA
|
||||||
|
package "ТУРБ" as TURB
|
||||||
|
package "МУЛ" as MUL
|
||||||
|
package "ГЕН" as GEN
|
||||||
|
package "ПЧ" as PCC
|
||||||
|
package "КРУ" as KRU
|
||||||
|
}
|
||||||
|
|
||||||
|
package "Вспомогательные системы" {
|
||||||
|
package "СМС" as SMS
|
||||||
|
package "СОП" as SOP
|
||||||
|
package "ТВС" as TVS
|
||||||
|
package "СОГ" as VENT
|
||||||
|
package "СТВ (тормоз)" as SH
|
||||||
|
package "ПРОТ (протечки)" as LEAK
|
||||||
|
}
|
||||||
|
|
||||||
|
package "Инфраструктура" {
|
||||||
|
package "ПИТ (эл.питание)" as PS
|
||||||
|
package "G51 (dc-dc)" as G51
|
||||||
|
}
|
||||||
|
|
||||||
|
package "Служебные данные" {
|
||||||
|
package "АСУ (алгоритмы/команды)" as ASU
|
||||||
|
package "ДИАГ" as DIAG
|
||||||
|
package "РУЧН (кнопки/переключатели)" as MAN
|
||||||
|
package "СТАТ (статистика)" as STAT
|
||||||
|
}
|
||||||
|
|
||||||
|
GA -- NA
|
||||||
|
GA -- TURB
|
||||||
|
GA -- MUL
|
||||||
|
GA -- GEN
|
||||||
|
GA -- PCC
|
||||||
|
GA -- KRU
|
||||||
|
|
||||||
|
GA -- SMS
|
||||||
|
GA -- SOP
|
||||||
|
GA -- TVS
|
||||||
|
GA -- VENT
|
||||||
|
GA -- SH
|
||||||
|
GA -- LEAK
|
||||||
|
|
||||||
|
GA -- PS
|
||||||
|
GA -- G51
|
||||||
|
|
||||||
|
GA -- ASU
|
||||||
|
GA -- DIAG
|
||||||
|
GA -- MAN
|
||||||
|
GA -- STAT
|
||||||
|
|
||||||
|
@enduml
|
||||||
BIN
export/HMI_new.xls
Normal file
BIN
export/HMI_new.xls
Normal file
Binary file not shown.
609
nodered/flows_10_1_3_120.json
Normal file
609
nodered/flows_10_1_3_120.json
Normal file
@ -0,0 +1,609 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "e970d5dc70d18347",
|
||||||
|
"type": "tab",
|
||||||
|
"label": "СОП",
|
||||||
|
"disabled": false,
|
||||||
|
"info": "",
|
||||||
|
"env": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "e62ac17e6b1c9dfc",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "СОП. Температура в баке",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1110",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 660,
|
||||||
|
"y": 340,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "508420e43be333ce",
|
||||||
|
"type": "function",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_T_TANK') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_T_TANK', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1100; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 410,
|
||||||
|
"y": 340,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"e62ac17e6b1c9dfc"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2d17db7509e196c3",
|
||||||
|
"type": "inject",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "tick",
|
||||||
|
"props": [],
|
||||||
|
"repeat": "1",
|
||||||
|
"crontab": "",
|
||||||
|
"once": true,
|
||||||
|
"onceDelay": 1,
|
||||||
|
"topic": "",
|
||||||
|
"x": 210,
|
||||||
|
"y": 340,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"508420e43be333ce",
|
||||||
|
"f6c0bd60f7ccd6ef",
|
||||||
|
"db13f2e72e433d76",
|
||||||
|
"4ab024b1aff02ed1",
|
||||||
|
"56c8dc122932bed2",
|
||||||
|
"3a020fc62ad49e57",
|
||||||
|
"074962eb71d9e17b",
|
||||||
|
"d6138c7ab7ea1ab2"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "7e1660490b2d2753",
|
||||||
|
"type": "modbus-server",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "",
|
||||||
|
"logEnabled": true,
|
||||||
|
"hostname": "0.0.0.0",
|
||||||
|
"serverPort": 10502,
|
||||||
|
"responseDelay": 100,
|
||||||
|
"delayUnit": "ms",
|
||||||
|
"coilsBufferSize": 10000,
|
||||||
|
"holdingBufferSize": 10000,
|
||||||
|
"inputBufferSize": 10000,
|
||||||
|
"discreteBufferSize": 10000,
|
||||||
|
"showErrors": true,
|
||||||
|
"showStatusActivities": true,
|
||||||
|
"x": 200,
|
||||||
|
"y": 120,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "9be14f7aeb1445fc",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "СОП. Температура после т/об",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1111",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 670,
|
||||||
|
"y": 400,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "f6c0bd60f7ccd6ef",
|
||||||
|
"type": "function",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_T_OUT') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_T_OUT', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1111; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 410,
|
||||||
|
"y": 400,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"9be14f7aeb1445fc"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "7c0b98f0d6da4d67",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "СОП. Температура внешнего контура",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1112",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 700,
|
||||||
|
"y": 460,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "db13f2e72e433d76",
|
||||||
|
"type": "function",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_T_REC') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_T_REC', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1112; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 410,
|
||||||
|
"y": 460,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"7c0b98f0d6da4d67"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4fed1bc2370508fb",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "СОП. Давление после насоса",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1113",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 670,
|
||||||
|
"y": 520,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4ab024b1aff02ed1",
|
||||||
|
"type": "function",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_P_PUMP') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_P_PUMP', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1113; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 430,
|
||||||
|
"y": 520,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"4fed1bc2370508fb"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "126135a5c0a3e97b",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "СОП. Давление в контуре",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1114",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 660,
|
||||||
|
"y": 580,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "56c8dc122932bed2",
|
||||||
|
"type": "function",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_P_OUT') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_P_OUT', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1114; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 430,
|
||||||
|
"y": 580,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"126135a5c0a3e97b"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "7254c3bb1d448b39",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "СОП. Уровень в баке",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1115",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 640,
|
||||||
|
"y": 640,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3a020fc62ad49e57",
|
||||||
|
"type": "function",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_L') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_L', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1115; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 430,
|
||||||
|
"y": 640,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"7254c3bb1d448b39"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a35cf32802b244bd",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "СОП. WS_RESERVE1",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "Coil",
|
||||||
|
"adr": "1116",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 660,
|
||||||
|
"y": 800,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3271b1ce681c99a9",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "СОП. WS_RESERVE2",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "Coil",
|
||||||
|
"adr": "1117",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 660,
|
||||||
|
"y": 880,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "074962eb71d9e17b",
|
||||||
|
"type": "function",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее состояние, по умолчанию 0\nlet state = flow.get('WS_DSC1') || 0;\n\n// Гарантируем, что state — это строго 0 или 1 (на случай мусора в контексте)\nstate = (state === 1) ? 1 : 0;\n\n// Переключаем 0 <-> 1\nstate = (state === 0) ? 1 : 0;\n\n// Сохраняем новое состояние\nflow.set('WS_DSC1', state);\n\n// Жёстко привязываем payload к state (только 0 или 1)\n// Жёсткое условие через if/else\nif (state === 0) {\n msg.payload = 0;\n} else {\n msg.payload = 1;\n}\n\nreturn msg;\n\n",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 350,
|
||||||
|
"y": 960,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"402b15cf9cc8430d",
|
||||||
|
"2382660d4ddd0147",
|
||||||
|
"a35cf32802b244bd",
|
||||||
|
"3271b1ce681c99a9"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6138c7ab7ea1ab2",
|
||||||
|
"type": "function",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('LIION_U') || 60;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 60 ? 40 : v + 2);\n\n// Сохраняем обновленное значение в поток\nflow.set('LIION_U', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1100; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v*10];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 410,
|
||||||
|
"y": 260,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"4f8c16d6f02ebe0c"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4f8c16d6f02ebe0c",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "LIION_U",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "91",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 560,
|
||||||
|
"y": 160,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ca4aa3c10d91cadf",
|
||||||
|
"type": "inject",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "",
|
||||||
|
"props": [
|
||||||
|
{
|
||||||
|
"p": "payload"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"p": "topic",
|
||||||
|
"vt": "str"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"repeat": "",
|
||||||
|
"crontab": "",
|
||||||
|
"once": false,
|
||||||
|
"onceDelay": 0.1,
|
||||||
|
"topic": "",
|
||||||
|
"payload": "0",
|
||||||
|
"payloadType": "num",
|
||||||
|
"x": 990,
|
||||||
|
"y": 760,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"d6b2b79bd3900995"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6b2b79bd3900995",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "1",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "Coil",
|
||||||
|
"adr": "1118",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 1230,
|
||||||
|
"y": 760,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "e4c8d4dd168e0307",
|
||||||
|
"type": "inject",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "",
|
||||||
|
"props": [
|
||||||
|
{
|
||||||
|
"p": "payload"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"p": "topic",
|
||||||
|
"vt": "str"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"repeat": "",
|
||||||
|
"crontab": "",
|
||||||
|
"once": false,
|
||||||
|
"onceDelay": 0.1,
|
||||||
|
"topic": "",
|
||||||
|
"payload": "1",
|
||||||
|
"payloadType": "num",
|
||||||
|
"x": 990,
|
||||||
|
"y": 840,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"045d9a6b99355d8f"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "045d9a6b99355d8f",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "1",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "Coil",
|
||||||
|
"adr": "1118",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 1230,
|
||||||
|
"y": 840,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2382660d4ddd0147",
|
||||||
|
"type": "debug",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "debug 3",
|
||||||
|
"active": true,
|
||||||
|
"tosidebar": true,
|
||||||
|
"console": false,
|
||||||
|
"tostatus": false,
|
||||||
|
"complete": "false",
|
||||||
|
"statusVal": "",
|
||||||
|
"statusType": "auto",
|
||||||
|
"x": 560,
|
||||||
|
"y": 1200,
|
||||||
|
"wires": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "402b15cf9cc8430d",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "e970d5dc70d18347",
|
||||||
|
"name": "СОП. Дискретные сигналы водяной станции",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "Coil",
|
||||||
|
"adr": "1118",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "dca8f54c186084c0",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 740,
|
||||||
|
"y": 960,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dca8f54c186084c0",
|
||||||
|
"type": "modbus-client",
|
||||||
|
"name": "",
|
||||||
|
"clienttype": "tcp",
|
||||||
|
"bufferCommands": true,
|
||||||
|
"stateLogEnabled": false,
|
||||||
|
"queueLogEnabled": false,
|
||||||
|
"failureLogEnabled": true,
|
||||||
|
"tcpHost": "0.0.0.0",
|
||||||
|
"tcpPort": "10502",
|
||||||
|
"tcpType": "DEFAULT",
|
||||||
|
"serialPort": "/dev/ttyUSB",
|
||||||
|
"serialType": "RTU-BUFFERD",
|
||||||
|
"serialBaudrate": "9600",
|
||||||
|
"serialDatabits": "8",
|
||||||
|
"serialStopbits": "1",
|
||||||
|
"serialParity": "none",
|
||||||
|
"serialConnectionDelay": "100",
|
||||||
|
"serialAsciiResponseStartDelimiter": "0x3A",
|
||||||
|
"unit_id": 1,
|
||||||
|
"commandDelay": 1,
|
||||||
|
"clientTimeout": 1000,
|
||||||
|
"reconnectOnTimeout": true,
|
||||||
|
"reconnectTimeout": 2000,
|
||||||
|
"parallelUnitIdsAllowed": true,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"showLogs": true
|
||||||
|
}
|
||||||
|
]
|
||||||
541
nodered/flows_149_154_66_246.json
Normal file
541
nodered/flows_149_154_66_246.json
Normal file
@ -0,0 +1,541 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "80472c6f5ab0ceb1",
|
||||||
|
"type": "tab",
|
||||||
|
"label": "СОП",
|
||||||
|
"disabled": false,
|
||||||
|
"info": "",
|
||||||
|
"env": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "82fa300ca05c4568",
|
||||||
|
"type": "function",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_T_TANK') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_T_TANK', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1100; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 410,
|
||||||
|
"y": 340,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"791aea74bb391beb",
|
||||||
|
"782ffc62b6685ef5"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "72ede930ebd8e9ae",
|
||||||
|
"type": "inject",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "tick",
|
||||||
|
"props": [],
|
||||||
|
"repeat": "1",
|
||||||
|
"crontab": "",
|
||||||
|
"once": true,
|
||||||
|
"onceDelay": 1,
|
||||||
|
"topic": "",
|
||||||
|
"x": 210,
|
||||||
|
"y": 340,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"82fa300ca05c4568",
|
||||||
|
"0ea8a7cec8595723",
|
||||||
|
"18284d5de921917f",
|
||||||
|
"503edbe326920db4",
|
||||||
|
"a00a9797429ad64e",
|
||||||
|
"8656df9f506874b5",
|
||||||
|
"0600f89cbbef760f",
|
||||||
|
"233784632d9af852",
|
||||||
|
"3368d6dd4d245c14",
|
||||||
|
"b70f9de01e3737a7"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "782ffc62b6685ef5",
|
||||||
|
"type": "debug",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "debug 3",
|
||||||
|
"active": true,
|
||||||
|
"tosidebar": true,
|
||||||
|
"console": false,
|
||||||
|
"tostatus": false,
|
||||||
|
"complete": "false",
|
||||||
|
"statusVal": "",
|
||||||
|
"statusType": "auto",
|
||||||
|
"x": 860,
|
||||||
|
"y": 260,
|
||||||
|
"wires": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0ea8a7cec8595723",
|
||||||
|
"type": "function",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_T_OUT') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_T_OUT', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1111; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 410,
|
||||||
|
"y": 400,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"3e733d4f4f7c7eca"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "18284d5de921917f",
|
||||||
|
"type": "function",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_T_REC') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_T_REC', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1112; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 410,
|
||||||
|
"y": 460,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"66749e276ed8f774"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "503edbe326920db4",
|
||||||
|
"type": "function",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_P_PUMP') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_P_PUMP', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1113; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 430,
|
||||||
|
"y": 520,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"0ae0d2efc3157ffb"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a00a9797429ad64e",
|
||||||
|
"type": "function",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_P_OUT') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_P_OUT', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1114; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 430,
|
||||||
|
"y": 580,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"16fefaf576d59dad"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8656df9f506874b5",
|
||||||
|
"type": "function",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_L') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_L', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1115; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 430,
|
||||||
|
"y": 640,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"45f23a96185e8194"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0600f89cbbef760f",
|
||||||
|
"type": "function",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_RESERVE1') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_RESERVE1', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 5; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1116; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 430,
|
||||||
|
"y": 700,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"f0817ef1fe6a7c7b"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "233784632d9af852",
|
||||||
|
"type": "function",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_RESERVE2') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_RESERVE2', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 5; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1117; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 430,
|
||||||
|
"y": 760,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"f8997f5372daf09b"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3368d6dd4d245c14",
|
||||||
|
"type": "function",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_DSC1') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_DSC1', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 5; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1118; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 430,
|
||||||
|
"y": 820,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"c1298450172d3598"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "791aea74bb391beb",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "СОП. Температура в баке",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1110",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 660,
|
||||||
|
"y": 340,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3e733d4f4f7c7eca",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "СОП. Температура после т/об",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1111",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 670,
|
||||||
|
"y": 400,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "66749e276ed8f774",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "СОП. Температура внешнего контура",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1112",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 700,
|
||||||
|
"y": 460,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0ae0d2efc3157ffb",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "СОП. Давление после насоса",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1113",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 670,
|
||||||
|
"y": 520,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "16fefaf576d59dad",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "СОП. Давление в контуре",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1114",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 660,
|
||||||
|
"y": 580,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "45f23a96185e8194",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "СОП. Уровень в баке",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "1115",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 640,
|
||||||
|
"y": 640,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "f0817ef1fe6a7c7b",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "СОП. WS_RESERVE1",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "Coil",
|
||||||
|
"adr": "1116",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 640,
|
||||||
|
"y": 700,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "f8997f5372daf09b",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "СОП. WS_RESERVE2",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "Coil",
|
||||||
|
"adr": "1117",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 640,
|
||||||
|
"y": 760,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "c1298450172d3598",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "СОП. Дискретные сигналы водяной станции",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "Coil",
|
||||||
|
"adr": "1118",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 720,
|
||||||
|
"y": 820,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "95b003fc392fcadd",
|
||||||
|
"type": "modbus-server",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "",
|
||||||
|
"logEnabled": true,
|
||||||
|
"hostname": "0.0.0.0",
|
||||||
|
"serverPort": 10502,
|
||||||
|
"responseDelay": 100,
|
||||||
|
"delayUnit": "ms",
|
||||||
|
"coilsBufferSize": 10000,
|
||||||
|
"holdingBufferSize": 10000,
|
||||||
|
"inputBufferSize": 10000,
|
||||||
|
"discreteBufferSize": 10000,
|
||||||
|
"showErrors": true,
|
||||||
|
"showStatusActivities": true,
|
||||||
|
"x": 200,
|
||||||
|
"y": 120,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5c728bfa2fcb05c1",
|
||||||
|
"type": "modbus-write",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "xxx. LIION_U",
|
||||||
|
"showStatusActivities": false,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"unitid": "1",
|
||||||
|
"dataType": "HoldingRegister",
|
||||||
|
"adr": "91",
|
||||||
|
"quantity": "1",
|
||||||
|
"server": "aa6c3b71da0ea2b8",
|
||||||
|
"emptyMsgOnFail": false,
|
||||||
|
"keepMsgProperties": false,
|
||||||
|
"delayOnStart": false,
|
||||||
|
"startDelayTime": "",
|
||||||
|
"x": 630,
|
||||||
|
"y": 180,
|
||||||
|
"wires": [
|
||||||
|
[],
|
||||||
|
[]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b70f9de01e3737a7",
|
||||||
|
"type": "function",
|
||||||
|
"z": "80472c6f5ab0ceb1",
|
||||||
|
"name": "increment register",
|
||||||
|
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('LIION_U') || 60;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 60 ? 40 : v + 2);\n\n// Сохраняем обновленное значение в поток\nflow.set('LIION_U', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n value: v,\n register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6; // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1; // Идентификатор устройства\nmsg.address = 1100; // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v*10];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"initialize": "",
|
||||||
|
"finalize": "",
|
||||||
|
"libs": [],
|
||||||
|
"x": 410,
|
||||||
|
"y": 240,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"5c728bfa2fcb05c1"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "aa6c3b71da0ea2b8",
|
||||||
|
"type": "modbus-client",
|
||||||
|
"name": "",
|
||||||
|
"clienttype": "tcp",
|
||||||
|
"bufferCommands": true,
|
||||||
|
"stateLogEnabled": false,
|
||||||
|
"queueLogEnabled": false,
|
||||||
|
"failureLogEnabled": true,
|
||||||
|
"tcpHost": "0.0.0.0",
|
||||||
|
"tcpPort": "10502",
|
||||||
|
"tcpType": "DEFAULT",
|
||||||
|
"serialPort": "/dev/ttyUSB",
|
||||||
|
"serialType": "RTU-BUFFERD",
|
||||||
|
"serialBaudrate": "9600",
|
||||||
|
"serialDatabits": "8",
|
||||||
|
"serialStopbits": "1",
|
||||||
|
"serialParity": "none",
|
||||||
|
"serialConnectionDelay": "100",
|
||||||
|
"serialAsciiResponseStartDelimiter": "0x3A",
|
||||||
|
"unit_id": "1",
|
||||||
|
"commandDelay": "1",
|
||||||
|
"clientTimeout": "1000",
|
||||||
|
"reconnectOnTimeout": true,
|
||||||
|
"reconnectTimeout": "2000",
|
||||||
|
"parallelUnitIdsAllowed": true,
|
||||||
|
"showErrors": false,
|
||||||
|
"showWarnings": true,
|
||||||
|
"showLogs": true
|
||||||
|
}
|
||||||
|
]
|
||||||
BIN
out/diagrams/PlantUML/package/package.png
Normal file
BIN
out/diagrams/PlantUML/package/package.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 70 KiB |
Binary file not shown.
Loading…
Reference in New Issue
Block a user