Segozerskaya_Weintek/nodered/flows_10_1_3_120.json

647 lines
26 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[
{
"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",
"b26409848ae18772",
"da876dc86734b4e5"
]
]
},
{
"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') || 40;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 40 ? 30 : 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') || 40;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 40 ? 20 : 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": 640,
"y": 700,
"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": 640,
"y": 760,
"wires": [
[],
[]
]
},
{
"id": "074962eb71d9e17b",
"type": "function",
"z": "e970d5dc70d18347",
"name": "increment register",
"func": "// Получаем текущее состояние, по умолчанию 0\nlet state = flow.get('WS_RESERVE2') || 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_RESERVE2', state);\n\n// Жёстко привязываем payload к state (только 0 или 1)\n// Жёсткое условие через if/else\nif (state === 0) {\n msg.payload = 1;\n} else {\n msg.payload = 0;\n}\n\nreturn msg;\n\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 410,
"y": 760,
"wires": [
[
"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": 600,
"y": 880,
"wires": []
},
{
"id": "402b15cf9cc8430d",
"type": "modbus-write",
"z": "e970d5dc70d18347",
"name": "СОП. Дискретные сигналы водяной станции",
"showStatusActivities": false,
"showErrors": false,
"showWarnings": true,
"unitid": "1",
"dataType": "HoldingRegister",
"adr": "1118",
"quantity": "1",
"server": "dca8f54c186084c0",
"emptyMsgOnFail": false,
"keepMsgProperties": false,
"delayOnStart": false,
"startDelayTime": "",
"x": 720,
"y": 820,
"wires": [
[],
[]
]
},
{
"id": "b26409848ae18772",
"type": "function",
"z": "e970d5dc70d18347",
"name": "increment register",
"func": "// Получаем текущее состояние, по умолчанию 0\nlet state = flow.get('WS_RESERVE1') || 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_RESERVE1', 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": 410,
"y": 700,
"wires": [
[
"a35cf32802b244bd"
]
]
},
{
"id": "da876dc86734b4e5",
"type": "function",
"z": "e970d5dc70d18347",
"name": "increment register",
"func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_DSC1') || 0;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 15 ? 0 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_DSC1', 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;\n\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 410,
"y": 820,
"wires": [
[
"402b15cf9cc8430d",
"2382660d4ddd0147"
]
]
},
{
"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
}
]