Плагин Modbus

Программная платформа для систем автоматизации.
Диспетчеризация, Умный дом.
gis
Сообщения: 61
Зарегистрирован: 14 дек 2018, 17:29

Re: Плагин Modbus

Сообщение gis » 04 июн 2019, 05:01

Спасибо! Буду ждать результат.

gis
Сообщения: 61
Зарегистрирован: 14 дек 2018, 17:29

Re: Плагин Modbus

Сообщение gis » 28 июн 2019, 16:44

Есть ли результат по плагину modbus-rtu?
Пытаюсь считать показания тепловычислителя: ТМК-Н130. Подсоединен через преобразователь интерфейсов Ethernet/RS-232. Всё что поступает через Ethernet отправляется на интерфейс RS-232 тепловычислителя. modpoll работает нормально:
Пример опроса (Количество тепловой энергии Q1), считываем регистр хранения 30018 (целая часть) и 30020 (дробная часть).
В регистрах счетчика данные хранятся в формате little-endian.
e:\Ivan\Проекты\modbus\soft\modpoll.3.4\win32>modpoll -m enc -a 0 -c 1 -r 17 -t 3:int -1 -0 -i -f -p 45016 77.244.70.15
[17]: 1087
e:\Ivan\Проекты\modbus\soft\modpoll.3.4\win32>modpoll -m enc -a 0 -c 1 -r 19 -t 3:float -1 -0 -i -f -p 45016 77.244.70.15
[19]: 0.831155

С плагином modbus-tcp работать не хочет, лог выдает:

Код: Выделить всё

8.06 19:36:36.138 IH: Run /var/lib/intrahouse-c/plugins/modbus/modbus.js modbus2
28.06 19:36:36.609 modbus2: Plugin modbus2 has started.
28.06 19:36:36.632 modbus2: Connecting options { port: 45016, host: '77.244.70.15' }
28.06 19:36:36.697 modbus2: Connected to 77.244.70.15:45016
28.06 19:36:36.699 modbus2: READ unitid=1 FC=3 address=30018 (0x7542) length=2
28.06 19:36:36.906 modbus2: Network ERROR: ETIMEDOUT
28.06 19:36:36.914 IH: Plugin exit with code 1
28.06 19:36:36.914 IH: restart timer 5
28.06 19:36:42.164 IH: Run /var/lib/intrahouse-c/plugins/modbus/modbus.js modbus2
28.06 19:36:42.640 modbus2: Plugin modbus2 has started.
28.06 19:36:42.662 modbus2: Connecting options { port: 45016, host: '77.244.70.15' }
28.06 19:36:42.747 modbus2: Connected to 77.244.70.15:45016
28.06 19:36:42.749 modbus2: READ unitid=1 FC=3 address=30018 (0x7542) length=2
28.06 19:36:42.957 modbus2: Network ERROR: ETIMEDOUT
28.06 19:36:42.964 IH: Plugin exit with code 1
28.06 19:36:42.965 IH: restart timer 5
В чем может быть проблема?

intrapro
Сообщения: 441
Зарегистрирован: 13 дек 2016, 09:14

Re: Плагин Modbus

Сообщение intrapro » 28 июн 2019, 18:18

gis писал(а):
28 июн 2019, 16:44
Есть ли результат по плагину modbus-rtu?
Пытаюсь считать показания тепловычислителя: ТМК-Н130. Подсоединен через преобразователь интерфейсов Ethernet/RS-232. Всё что поступает через Ethernet отправляется на интерфейс RS-232 тепловычислителя. modpoll работает нормально:
Пример опроса (Количество тепловой энергии Q1), считываем регистр хранения 30018 (целая часть) и 30020 (дробная часть).
В регистрах счетчика данные хранятся в формате little-endian.
e:\Ivan\Проекты\modbus\soft\modpoll.3.4\win32>modpoll -m enc -a 0 -c 1 -r 17 -t 3:int -1 -0 -i -f -p 45016 77.244.70.15
[17]: 1087
e:\Ivan\Проекты\modbus\soft\modpoll.3.4\win32>modpoll -m enc -a 0 -c 1 -r 19 -t 3:float -1 -0 -i -f -p 45016 77.244.70.15
[19]: 0.831155

С плагином modbus-tcp работать не хочет, лог выдает:
В чем может быть проблема?
Если это простой преобразователь интерфейса, то пакеты RTU передаются в TCP сокет без преобразования. То есть это не Modbus-TCP, а Modbus RTU over TCP

Попробуйте скачать новый релиз плагина v0.0.9 с github: https://github.com/intrahouseio/intraHo ... s/releases
В нем добавлен этот транспорт. Не выкладываем для обновления, так как протестировано пока только на одном виде оборудования.

gis
Сообщения: 61
Зарегистрирован: 14 дек 2018, 17:29

Re: Плагин Modbus

Сообщение gis » 01 июл 2019, 04:38

Скачал плагин v0.0.9 с github. Показания не считываются, выдает вот такой лог:

Код: Выделить всё

01.07 07:32:51.201 modbus2: Plugin modbus2 has started.
01.07 07:32:51.220 modbus2: config=[ { id: 'ch1',
    vartype: 'uint16',
    unit: 'modbus2',
    usek: false,
    ks: 100,
    ks0: 0,
    gr: false,
    pollp: true,
    desc: 'AI',
    chan: 'ch1',
    kh0: 0,
    address: '30018',
    fcr: '3',
    useactions: false,
    actions: [ [Object] ],
    kh: 100,
    unitid: 0,
    inv: false,
    inv_out: false,
    prop: '',
    op: '',
    value: '',
    calc_out: '',
    dn: 'T',
    calc: '',
    nofb: false } ]
01.07 07:32:51.225 modbus2: polls=[ { length: 1,
    unitid: 0,
    desc: 'AI',
    fcr: '3',
    address: 30018,
    ref: [ [Object] ] } ]
01.07 07:32:51.300 modbus2: Connected to 77.244.70.15:45016
01.07 07:32:51.301 modbus2: sendNext item={ length: 1,
  unitid: 0,
  desc: 'AI',
  fcr: '3',
  address: 30018,
  ref: [ { id: 'ch1', vartype: 'uint16le', widx: 0 } ] }
01.07 07:32:51.302 modbus2: READ unitid=0 FC=3 address=30018 (0x7542) length=1
01.07 07:32:51.355 modbus2: ERROR: Error: Modbus exception 2
    at TelnetPort.<anonymous> (/var/lib/intrahouse-c/plugins/modbus/node_modules/modbus-serial/index.js:288:42)
    at emitOne (events.js:115:13)
    at TelnetPort.emit (events.js:210:7)
    at TelnetPort._emitData (/var/lib/intrahouse-c/plugins/modbus/node_modules/modbus-serial/ports/telnetport.js:154:10)
    at Socket.onData (/var/lib/intrahouse-c/plugins/modbus/node_modules/modbus-serial/ports/telnetport.js:100:22)
    at emitOne (events.js:115:13)
    at Socket.emit (events.js:210:7)
    at addChunk (_stream_readable.js:264:12)
    at readableAddChunk (_stream_readable.js:251:11)
    at Socket.Readable.push (_stream_readable.js:209:10)
01.07 07:32:51.364 IH: Plugin exit with code 1
01.07 07:32:51.365 IH: restart timer 5

intrapro
Сообщения: 441
Зарегистрирован: 13 дек 2016, 09:14

Re: Плагин Modbus

Сообщение intrapro » 01 июл 2019, 07:34

gis писал(а):
01 июл 2019, 04:38
Скачал плагин v0.0.9 с github. Показания не считываются, выдает вот такой лог:

Код: Выделить всё

01.07 07:32:51.302 modbus2: READ unitid=0 FC=3 address=30018 (0x7542) length=1
01.07 07:32:51.355 modbus2: ERROR: Error: Modbus exception 2
Не указан Unit ID (адрес устройства на шине).
Проверьте, пожалуйста, в настройке канала

gis
Сообщения: 61
Зарегистрирован: 14 дек 2018, 17:29

Re: Плагин Modbus

Сообщение gis » 01 июл 2019, 12:20

Спасибо! Согласно инструкции на тепловычислитель, если используется подключение RS232 (а оно используется через преобразователь интерфейсов), то адрес устройства = 0. Я такой адрес и установил в настройках плагина. Следует ли использовать адрес устройства =1?

gis
Сообщения: 61
Зарегистрирован: 14 дек 2018, 17:29

Re: Плагин Modbus

Сообщение gis » 01 июл 2019, 15:49

Поставил адрес устройства =1 Аналогичная картина:

Код: Выделить всё

01.07 18:48:17.041 modbus2: sendNext item={ length: 1,
  unitid: 1,
  desc: 'AI',
  fcr: '3',
  address: 30018,
  ref: [ { id: 'ch1', vartype: 'uint16le', widx: 0 } ] }
01.07 18:48:17.042 modbus2: READ unitid=1 FC=3 address=30018 (0x7542) length=1
01.07 18:48:17.092 modbus2: ERROR: Error: Modbus exception 2
Что означает ERROR: Error: Modbus exception 2

intrapro
Сообщения: 441
Зарегистрирован: 13 дек 2016, 09:14

Re: Плагин Modbus

Сообщение intrapro » 01 июл 2019, 16:18

gis писал(а):
01 июл 2019, 15:49
Поставил адрес устройства =1 Аналогичная картина:

Код: Выделить всё

01.07 18:48:17.042 modbus2: READ unitid=1 FC=3 address=30018 (0x7542) length=1
01.07 18:48:17.092 modbus2: ERROR: Error: Modbus exception 2
Что означает ERROR: Error: Modbus exception 2
Сейчас подключение у Вас произошло. 2 - это стандартная ошибка адресации уровня Modbus:

Modbus exception 2 - Illegal Data Address. The data address received in the query is not an allowable address for the slave

Попробуйте адресоваться внутри таблицы, как в modpoll - адрес 17

gis
Сообщения: 61
Зарегистрирован: 14 дек 2018, 17:29

Re: Плагин Modbus

Сообщение gis » 01 июл 2019, 19:59

Похоже проблема с адресаций. Поставил 17 ошибок не выдает:

Код: Выделить всё

1.07 22:52:17.171 modbus2: sendNext item={ length: 2,
  unitid: 0,
  desc: 'AI',
  fcr: '3',
  address: 17,
  ref: [ { id: 'ch1', vartype: 'int32le', widx: 0 } ] }
01.07 22:52:17.172 modbus2: READ unitid=0 FC=3 address=17 (0x11) length=2
01.07 22:52:17.220 IH: set {"T":{"aval":0,"err":0}}
01.07 22:52:17.221 modbus2: {"type":"Buffer","data":[0,0,0,0]}
01.07 22:52:17.721 modbus2: sendNext item={ length: 2,
  unitid: 0,
  desc: 'AI',
  fcr: '3',
  address: 17,
  ref: [ { id: 'ch1', vartype: 'int32le', widx: 0 } ] }
01.07 22:52:17.723 modbus2: READ unitid=0 FC=3 address=17 (0x11) length=2
01.07 22:52:17.770 IH: set {"T":{"aval":0,"err":0}}
01.07 22:52:17.771 modbus2: {"type":"Buffer","data":[0,0,0,0]}
Но значение =0
modpoll при этом выдает значение 1160.

intrapro
Сообщения: 441
Зарегистрирован: 13 дек 2016, 09:14

Re: Плагин Modbus

Сообщение intrapro » 02 июл 2019, 04:28

gis писал(а):
01 июл 2019, 19:59
Похоже проблема с адресаций. Поставил 17 ошибок не выдает:
Но значение =0
modpoll при этом выдает значение 1160.
Можно для эксперимента соседние адреса почитать.

Ответить