Плагин 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 секунды
-
Пользователь @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) { }
-
Пользователь @fanagor написал в Плагин Modbus:
Возможно ли из сценария редактировать список каналов в плагине ?
Например, при ошибке какого либо датчика исключать его из списка (или приостанавливать опрос).В версии Cherry такой возможности нет. В V5, думаю, получится добавить такой функционал.
@Alex_Jet , вероятно, нужно решить проблему тормозов при опросе по последовательному интерфейсу (Modbus RTU). Если датчик не отвечает, переход к опросу следующего канала происходит через таймаут, и так в каждом цикле.
-
Это сообщение удалено!
-
Подскажите пожалуйста, как можно вывести окно для ввода команд устройству рядом с самим устройством , куда можно оперативно прописать команды ( например смена адреса устройства и т.п )
-
Как получить удобоваримое число?
-
@alekscrow
Вероятно, ваш девайс использует другой порядок байт для Float, по умолчанию идет Big-Endian, swap B1B2B3B4 => B3B4B1B2Для изменения порядка на вкладке Параметры плагина поставьте галочку Настроить порядок байт. Внизу откроется список для настройки. Нужно изменить Порядок байтов для 4-байтовых значений.
Начните с первого варианта Big-Endian, B1B2B3B4 => B1B2B3B4. После сохранения параметров нужно перезагрузить плагин.