Плагин Modbus
-
@intrapro Таймаут стоит 5000 мс. Использую RTU. Подозреваю, что проблема в китайском релейном модуле или моих кривых руках.
-
@intrapro Добавил один канал DO, вроде всё настроил. Запускаю отладчик и вылазит эта ошибка. Через Modbus poll тоже проблема, не читает модуль.
-
Вот что мне выдает отладчик
06.08 17:14:50.039 modbus1: undefined
06.08 17:14:50.164 modbus1: READ: unitId = 1, FC = 3, address = 0x01 (0x1), length = 1
06.08 17:14:50.183 IH: get [ { id: 'ch1', value: 0 } ]
set { LAMP_2_1: { dval: 0, err: 0 } }
06.08 17:14:50.383 modbus1: READ: unitId = 1, FC = 3, address = 0x01 (0x1), length = 1
06.08 17:14:50.402 IH: get [ { id: 'ch1', value: 0 } ]
set { LAMP_2_1: { dval: 0, err: 0 } }
-
@konia74 В отладчике все нормально, снимается значение 0. Можно увеличить интервал между запросами - сейчас у Вас 200 мс, для RTU можно сделать пореже. А в чем проблема? Команда на запись не уходит?
-
@intrapro Проблема в том, что не отвечает.
data:
[ { chan: 'ch1',
id: 'ch1',
vartype: 'int8',
usek: false,
ks: 100,
ks0: 0,
gr: false,
pollp: true,
desc: 'DO',
kh0: 0,
address: '0x01',
fcr: '3',
useactions: false,
kh: 100,
unitid: 1,
value: 1,
nofb: false,
command: 'on' } ] }
06.08 18:22:37.895 modbus1: Command to send: [ { chan: 'ch1',
id: 'ch1',
vartype: 'int8be',
usek: false,
ks: 100,
ks0: 0,
gr: false,
pollp: true,
desc: 'DO',
kh0: 0,
address: 1,
fcr: '3',
useactions: false,
kh: 100,
unitid: 1,
value: 1,
nofb: false,
command: 'on' } ]
06.08 18:22:37.896 modbus1: WRITE: unitId = 1, FC = 6, address = 1 (0x1), value = 1
06.08 18:22:37.897 modbus1: writeSingleRegister: address = 1 (0x1), value = 1
06.08 18:22:37.916 modbus1: Write result: { address: 1, value: 1 }
06.08 18:22:37.918 modbus1: READ: unitId = 1, FC = 3, address = 0x01 (0x1), length = 1
06.08 18:22:42.924 modbus1: Network ERROR: ETIMEDOUT
06.08 18:22:43.125 modbus1: READ: unitId = 1, FC = 3, address = 0x01 (0x1), length = 1
06.08 18:22:43.144 IH: get [ { id: 'ch1', value: 0 } ]
set { LAMP_2_1: { dval: 0, err: 0 } }
-
@konia74 Что интересно, команда проходит и в ответ на команду проходит ответ.
06.08 18:22:37.897 modbus1: writeSingleRegister: address = 1 (0x1), value = 1
06.08 18:22:37.916 modbus1: Write result: { address: 1, value: 1 } - через 20 мсек пришел ответ, что команда на запись выполненаНо что-то мешает устройству переключиться, при этом оно виснет на некоторое время. Но потом опять начинает отвечать. Возможно, проблема в схеме подключения?
-
@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 } ]