Плагин Modbus
-
@intrapro Спасибо! Где нужно ковырять, куда кидаться?
-
@konia74 а сколько устррйств/параметров на шлейфе?
-
Пользователь @kostinanton написал в Плагин Modbus:
@konia74 а сколько устррйств/параметров на шлейфе?
Один релейный модуль (16 реле)
-
@konia74 думаю надо время опроса увеличить... Из расчёта 20 мс/параметр... Т.е. 400м/с на канал... Что покажет?
-
Пользователь @kostinanton написал в Плагин Modbus:
@konia74 думаю надо время опроса увеличить... Из расчёта 20 мс/параметр... Т.е. 400м/с на канал... Что покажет?
Выставлены параметры:
Ожидание ответа на запрос 7500мс
Интервал между запросами 1000мс
Мах кол-во слов при чтении 350
-
@konia74 а то такое СЛОВО в intra?
-
Пользователь @kostinanton написал в Плагин Modbus:
@konia74 а то такое СЛОВО в intra?
Есть там такой пункт. Я его не трогал
-
@konia74 четыре устройства опрашиваются без проблем с такими вводными...
-
Пользователь @kostinanton написал в Плагин Modbus:
@konia74 четыре устройства опрашиваются без проблем с такими вводными...
Спасибо, попробую.
-
Здравствуйте Уважаемые профессионалы. Опять прошу помощи. Устройство вроде как отвечает но не включает. Может где ошибка в настройках или еще что-то?
22.08 14:13:16.321 IH: command [ { dn: 'ACTOR1', prop: 'on' } ]
22.08 14:13:16.322 IH: send { type: 'act',
data:
[ { chan: 'ch1',
id: 'ch1',
vartype: 'int16',
usek: false,
ks: 100,
ks0: 0,
gr: true,
pollp: true,
desc: 'DO',
kh0: 0,
address: '0x0001',
fcr: '3',
useactions: false,
kh: 100,
unitid: 1,
value: 1,
nofb: true,
command: 'on' } ] }
22.08 14:13:16.326 IH: get [ { id: 'ch1', value: 0 } ]
set { ACTOR1: { dval: 0, err: 0 } }
22.08 14:13:16.326 modbus1: Command to send: [ { chan: 'ch1',
id: 'ch1',
vartype: 'int16be',
usek: false,
ks: 100,
ks0: 0,
gr: true,
pollp: true,
desc: 'DO',
kh0: 0,
address: 1,
fcr: '3',
useactions: false,
kh: 100,
unitid: 1,
value: 1,
nofb: true,
command: 'on' } ]
22.08 14:13:16.342 modbus1: WRITE: unitId = 1, FC = 6, address = 1 (0x1), value = 1
22.08 14:13:16.342 modbus1: writeSingleRegister: address = 1 (0x1), value = 1
22.08 14:13:16.362 modbus1: Write result: { address: 1, value: 1 }
22.08 14:13:16.364 modbus1: READ: unitId = 1, FC = 3, address = 0x0001 (0x1), length = 1
22.08 14:13:16.384 IH: get [ { id: 'ch1', value: 0 } ]
set { ACTOR1: { dval: 0, err: 0 } }
22.08 14:13:16.403 modbus1: READ: unitId = 1, FC = 3, address = 0x0001 (0x1), length = 1
22.08 14:13:16.423 IH: get [ { id: 'ch1', value: 0 } ]
-
Вот настройки
-
Вот документация по модулю
-
Навскидку, без изучения документации - очень маленький интервал между запросами 20 мсек
22.08 14:13:16.342 modbus1: WRITE: unitId = 1, FC = 6, address = 1 (0x1), value = 1
22.08 14:13:16.342 modbus1: writeSingleRegister: address = 1 (0x1), value = 1
22.08 14:13:16.362 modbus1: Write result: { address: 1, value: 1 }
Запись произошла успешно с точки зрения плагина
Прошло всего 20 мсек 342+20=362 - и отправляется команда на чтение
22.08 14:13:16.364 modbus1: READ: unitId = 1, FC = 3, address = 0x0001 (0x1), length = 1Поставьте для начала Интервал между запросами 2000 - то есть 2 секунды
-
Пользователь @intrapro написал в Плагин Modbus:
Навскидку, без изучения документации - очень маленький интервал между запросами 20 мсек
22.08 14:13:16.342 modbus1: WRITE: unitId = 1, FC = 6, address = 1 (0x1), value = 1
22.08 14:13:16.342 modbus1: writeSingleRegister: address = 1 (0x1), value = 1
22.08 14:13:16.362 modbus1: Write result: { address: 1, value: 1 }
Запись произошла успешно с точки зрения плагина
Прошло всего 20 мсек 342+20=362 - и отправляется команда на чтение
22.08 14:13:16.364 modbus1: READ: unitId = 1, FC = 3, address = 0x0001 (0x1), length = 1Поставьте для начала Интервал между запросами 2000 - то есть 2 секунды
set { ACTOR1: { dval: 0, err: 0 } }
22.08 17:20:30.118 IH: command [ { dn: 'ACTOR1', prop: 'on' } ]
22.08 17:20:30.119 IH: send { type: 'act',
data:
[ { chan: 'ch1',
id: 'ch1',
vartype: 'int16',
usek: false,
ks: 100,
ks0: 0,
gr: true,
pollp: true,
desc: 'DO',
kh0: 0,
address: '0x0001',
fcr: '3',
useactions: false,
kh: 100,
unitid: 1,
value: 1,
nofb: false,
command: 'on' } ] }
22.08 17:20:30.121 modbus1: Command to send: [ { chan: 'ch1',
id: 'ch1',
vartype: 'int16be',
usek: false,
ks: 100,
ks0: 0,
gr: true,
pollp: true,
desc: 'DO',
kh0: 0,
address: 1,
fcr: '3',
useactions: false,
kh: 100,
unitid: 1,
value: 1,
nofb: false,
command: 'on' } ]
22.08 17:20:30.363 modbus1: WRITE: unitId = 1, FC = 6, address = 1 (0x1), value = 1
22.08 17:20:30.364 modbus1: writeSingleRegister: address = 1 (0x1), value = 1
22.08 17:20:30.385 modbus1: Write result: { address: 1, value: 1 }
22.08 17:20:30.387 modbus1: READ: unitId = 1, FC = 3, address = 0x0001 (0x1), length = 1
22.08 17:20:30.408 IH: get [ { id: 'ch1', value: 0 } ]
-
Всем спасибо. Разобрался сам.
-
Пользователь @konia74 написал в Плагин Modbus:
Всем спасибо. Разобрался сам.
Поделитесь. В чем была проблема?
-
@intrahouse проблема была в команде. Данному релейному модулю из поднебесной нужна команда 0x0100 на включение и 0x0200 на отключение и адресация в dex формате. Но так как я вообще не программист, а электромонтажник я этого не знал и вообще далек от этого. В связи с этим мне потребовалось 2 дня, чтобы это изучить и вникнуть, параллельно с mqtt воевал. Только ещё до конца mqtt не победил, в другой ветке форума задал вопрос (состояние на схеме не меняется). Как-то так.![0_1598302198062_15983021691365734504111748559465.jpg](Загрузка 88%)
-
Добрый день, у меня проблема с рекуператором, в режиме bool (чтение), значение 1- вкл. IH принимает а 0- когда компрессор выключен то передает "-".
-
Возможно ли из сценария редактировать список каналов в плагине ?
Например, при ошибке какого либо датчика исключать его из списка (или приостанавливать опрос).
-
@fanagor, есть вариант легче. Я делаю так:
const dt_ext = Device("SensorA", "Датчик уличной температуры"); const dt_ext_rez = Device("SensorA", "Датчик уличной температуры (резервный)"); script({ sensor_ext: '', check() { //Проверка работоспособности датчика уличной температуры //При его неисправности - работаем по резервному датчику if(!dt_ext.isError()) this.sensor_ext = dt_ext; else this.sensor_ext = dt_ext_rez; //Проверка основных условий },
В основной программе к sensor_ext обращаемся как к обычному датчику:
//Если температура на улице меньше уставки if(this.sensor_ext.value < this.sensor_ext.setpoint) { }