[ { "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": "aa6c3b71da0ea2b8", "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 } ]