Плагин Modbus
-
@intrapro пасибо, все заработало!
-
@kostinanton А в чем была причина? Чтобы ваши последователи были в курсе
-
@intrapro дело в том, что лучше, когда работаешь с float, не забывать перед выводом в любой протокол его преобразовывывать в integer с увеличением разрядности, т. к. каждое оборудование/софт себя по разному ведет (в своём случае я вначале значение датчиков dht22 и 18b22 перед передачей в протокол умножил на 100, чтобы на выходе получить два знака после запятой), а уже на конечной скаде вернуть обратно (в своём случае - в интре в настройках плагин modbus в обработке параметра датчика выполнил value/100 )... В плагине в настройках канала устройства - аналоговый вход, uint16, fc4-read... Вроде все)))
И ещё - при работе с modbus надо не забывать про типы используемых регистров, конечно же))
-
@kostinanton понятно, спасибо
-
Новая итерация плагина стабильнее. Не уходит в стоп, в случае не ответа какого-либо устройства. Спасибо.
-
А у меня последняя версия плагина дважды теряла соединение с модбас устройством.
Помогает перезапуск плагина руками.
Все версии до этого работали стабильно.
-
@Erik согласно просмотренным логам, ни одного обрыва после установления соединения у мня не было...
-
У меня останавливается в среднем раз в неделю.
Сегодня утром обнаружил очередной сбой.08.03 07:03:37.165 IH: get [ { id: 'TPSuStatus', value: 0 } ] set { ACTORA34: { aval: 1, err: 0 } } 08.03 07:03:37.168 modbus1: undefined 08.03 07:03:40.443 modbus1: READ: unitId = 1, FC = 3, address = 4166 (0x1046), length = 1 08.03 07:03:43.826 IH: get [ { id: 'TPKuMin', value: 250 } ] set { ACTORA24: { aval: 25, err: 0 } } 08.03 07:03:47.235 modbus1: READ: unitId = 1, FC = 3, address = 4167 (0x1047), length = 1 08.03 07:03:52.063 IH: get [ { id: 'TPKuMax', value: 270 } ] set { ACTORA25: { aval: 27, err: 0 } } 08.03 07:03:54.400 modbus1: READ: unitId = 1, FC = 3, address = 4174 (0x104e), length = 1 08.03 07:03:57.734 IH: get [ { id: 'Sdvig.RO.Ku', value: 10 } ] set { ACTORA76: { aval: 1, err: 0 } } 08.03 07:04:01.220 modbus1: READ: unitId = 1, FC = 3, address = 4176 (0x1050), length = 1 08.03 07:04:04.775 IH: get [ { id: 'TKuOFF', value: 50 } ] set { ACTORA21: { aval: 5, err: 0 } } 08.03 07:04:08.128 modbus1: READ: unitId = 1, FC = 3, address = 4186 (0x105a), length = 1 08.03 07:04:11.523 IH: get [ { id: 'TKuComf', value: 230 } ] set { ACTORA19: { aval: 23, err: 0 } } 08.03 07:04:16.348 modbus1: READ: unitId = 1, FC = 3, address = 4187 (0x105b), length = 1 08.03 07:04:19.667 IH: get [ { id: 'TKuEco', value: 100 } ] set { ACTORA20: { aval: 10, err: 0 } } 08.03 07:04:22.850 modbus1: READ: unitId = 1, FC = 3, address = 4188 (0x105c), length = 1 08.03 07:04:26.271 IH: get [ { id: 'RezKu', value: 0 } ] set { ACTORA4: { aval: 0, err: 0 } } 08.03 07:04:31.082 modbus1: READ: unitId = 1, FC = 3, address = 4189 (0x105d), length = 1 08.03 07:04:34.644 IH: get [ { id: 'TKuTreb', value: 230 } ] set { ACTORA26: { aval: 23, err: 0 } }
перезапуск плагина помогает.
-
Зависает. Плагин не в стопе. Лог плагина пишет : Network error: ETIMEDOUT.
Перезапуск плагина помогает. Начинает работать.
-
Из темы про сценарии
Пользователь @intrapro написал в Сценарии - новая версия API:
@Erik
Спасибо за тестирование, действительно, есть проблема с записью отрицательных целых значений в библиотеке modbus-serial.
В новой версии библиотеки эта проблема исправлена. Проверим у себя и на следующей неделе выпустим новый релиз плагинаНе получилось, или забыли?
-
Пользователь @Erik написал в Плагин Modbus:
Не получилось, или забыли?
Не забыли. Нашли еще баг в плагине. Надо с ним разобраться.
-
Сегодня утром опять все актуаторы обновляемые по модбас были в ошибках.
Запустил отладчик. Он сначала тупил (очень медленно выдавал инфу), а потом вдруг сам справился с ситуацией и начал работать. Без перезагрузки плагина.20.03 07:53:55.531 IH: get [ { id: 'GK.T.Obr', value: 255 } ] set { ACTORA56: { aval: 25.5, err: 0 } } 20.03 07:53:59.666 modbus1: undefined 20.03 07:53:59.667 modbus1: Port is not open! TRY RECONNECT 20.03 07:53:59.667 modbus1: Connecting options = { port: 502 } 20.03 07:54:03.821 modbus1: READ: unitId = 1, FC = 3, address = 0431 (0x1af), length = 1 20.03 07:54:11.471 IH: get [ { id: 'Tobr', value: 258 } ] set { ACTORA2: { aval: 25.8, err: 0 } } 20.03 07:54:19.019 modbus1: READ: unitId = 1, FC = 3, address = 434 (0x1b2), length = 1 20.03 07:54:26.545 IH: get [ { id: 'GK.Stup1', value: 0 } ] set { ACTORA54: { aval: 0, err: 0 } } 20.03 07:55:16.572 IH: Plugin exit with code null 20.03 07:55:16.575 IH: restart timer 5 20.03 07:55:22.137 IH: Run /var/lib/intrahouse-c/plugins/modbus/modbus.js modbus1 20.03 07:55:22.889 modbus1: Modbus Master plugin has started. 20.03 07:55:22.896 modbus1: Received params... 20.03 07:55:22.906 modbus1: Received 72 channels... 20.03 07:55:22.914 modbus1: Requested channels update. Get channels: no 20.03 07:55:22.929 modbus1: Connecting options = { port: 502 } 20.03 07:55:22.943 modbus1: Connected to 192.168.13.25:502 20.03 07:55:22.944 modbus1: READ: unitId = 1, FC = 3, address = 144 (0x90), length = 1 20.03 07:55:22.960 IH: get [ { id: 'TUl', value: 29 } ] set { ACTORA1: { aval: 2.9, err: 0 } } 20.03 07:55:23.159 modbus1: READ: unitId = 1, FC = 3, address = 407 (0x197), length = 1 20.03 07:55:23.164 IH: get [ { id: 'GK.T.Max', value: 850 } ] set { ACTORA52: { aval: 85, err: 0 } } 20.03 07:55:23.365 modbus1: READ: unitId = 1, FC = 3, address = 408 (0x198), length = 1 20.03 07:55:23.371 IH: get [ { id: 'GK.T.Min', value: 200 } ] set { ACTORA53: { aval: 20, err: 0 } } 20.03 07:55:23.571 modbus1: READ: unitId = 1, FC = 3, address = 430 (0x1ae), length = 1 20.03 07:55:23.575 IH: get [ { id: 'GK.T.Pod', value: 274 } ] set { ACTORA55: { aval: 27.4, err: 0 } } 20.03 07:55:23.777 modbus1: READ: unitId = 1, FC = 3, address = 431 (0x1af), length = 1 20.03 07:55:23.782 IH: get [ { id: 'GK.T.Obr', value: 255 } ]
-
ПОдскажте, где взять старую версию плагина (до поддержки Modbus RTU).
У меня в ней все работало без остановок. Я бы лучше на ней исправления ошибок подождал. Все чаще останавливается плагин.
-
@Erik Добрый день
Версии плагина есть на github: https://github.com/intrahouseio/intraHouse.plugin-Modbus/releases
v0.0.9 была без ModbusRTU совсем
Далее добавлялся функционал ModbusRTU, но без переделки ModbusTCP
v0.0.15 - значительные изменения кода, добавлен TRY RECONNECT
-
При долгой работе плагина modbus и одном отвалившемся устройстве остальные работают, но вот оперативная память заполняется. При чем за двое суток -500МБ памяти. Остановка-запуск плагина решают эту проблему, память освобождается. Как обойти проблему или организовать перезапуск плагина по расписанию? плагин v16
-
@Viktor Все верно, в последних версиях плагина modbus есть проблема с утечкой памяти.
На github выложена новая версия v0.0.17 https://github.com/intrahouseio/intraHouse.plugin-Modbus/releases/tag/v0.0.17
Там вначале потребление памяти тоже увеличивается, но потом стабилизируется и больше не растет. Попробуйте установить эту версию плагина, она работает уже на нескольких инсталляциях.
Перезапуск плагина добавим в одном из ближайших релизов
-
Добрый день, подскажите как создать обмен данными по протоколу rs485, есть такой переобразователь http://vkmodule.com.ua/Converter/ConverterE485.html
Есть рекуператор с контроллером carel, хочу управлять с IH.
-
@amgstone
Контроллер Carel - универсальный контроллер, который программируется в каждом случае по-своему. Надо найти в интернете или у поставщика вашего рекуператора таблицу регистров Modbus.Устанавливаем плагин Modbus.
Выбираем транспорт Modbus RTU over TCP
В настройках плагина вписать адрес и порт вашего преобразователя.
Далее нужно добавить каналы. Не торопитесь добавлять все каналы сразу. В первую очередь необходимо убедиться в наличии связи с контроллером. Добавляем один канал и вписываем адрес регистра. На рисунке ниже для наружной температуры у меня был регистр с адресом 15.
Для температуры: тип устройства AI, тип переменной INT16, 2 байта, функция FC4
Далее заходим в отладчик и запускаем плагин. Если связь с контроллером есть и адрес регистра правильный, в отладчике увидим показания температуры в этом регистре.
-
@intrahouse а BMS это и есть регистры?
-
@amgstone BMS - Building Management System
Сейчас посмотрел файл BMS.xlsx, который вы прислали на почту.
Там есть колонка BMS-index
Почему они так назвали, не знаю. Но, вероятно, это и есть адреса регистров.