NEWS
Драйвер ModBus
-
Есть ещё такой пакет:
https://www.npmjs.com/package/modbus-rtu
Но он только по последовательному порту. Я бы мог его прикрутить. У тебя RS485 на serial port? `
Bluefox, а для ModBUS RTU есть варианты? Он вроде только через RS485/RS232 не?А еще в документации к https://www.npmjs.com/package/modbus-rtu указано: NOTE! node-serialport doesn't support node 0.11.11+
Т.е. с версией ноды 0.12.7 уже не будет работать… `
Я не углублялся, гдето читал что стабильной считают node 0.10… и даже вроде с установкой iobroker в node 0.12 были warning -
Есть ещё такой пакет:
https://www.npmjs.com/package/modbus-rtu
Но он только по последовательному порту. Я бы мог его прикрутить. У тебя RS485 на serial port?
****Bluefox****, а для ModBUS RTU есть варианты?
Вроде как, ModBUS RTU over TCP (не путать с ModBUS TCP) -
Есть ещё такой пакет:
https://www.npmjs.com/package/modbus-rtu
Но он только по последовательному порту. Я бы мог его прикрутить. У тебя RS485 на serial port `
Bluefox, если есть возможность прикрути, очень нужная вещь. Конечно слать запросы RTU по TCP было бы удобнее, но и с COM портом пойдет. Можно преобразователь на крайний случай поставить.
-
Bluefox, если есть возможность прикрути, очень нужная вещь. `
+1Через некоторое время планирую подключать в систему ПЛК63 ОВЕН, там только RS485/RS232 и ModBUS RTU…
-
Через некоторое время планирую подключать в систему ПЛК63 ОВЕН, там только RS485/RS232 и ModBUS RTU… `
По случаю достался? Или покупался. Если покупался, то для каких целей? -
Через некоторое время планирую подключать в систему ПЛК63 ОВЕН, там только RS485/RS232 и ModBUS RTU…
По случаю достался? Или покупался. Если покупался, то для каких целей?
По случаю мне досталось много чего - типа ПЛК-100, сименс лого и прочего, но мне ничего не понадобилось пока((ПЛК-63 хочу использовать для управления отоплением в квартире.
Корпус под модульку (у меня шкаф из http://cs-cs.net/shhity-dlya-elektriki-edf -панелей).
Аналоговые входы 8 шт. - подключение термометров сопротивления (в теплые полы, на обратку, температура воздуха в помещении и пр.)
Дискретные входы/выходы - управление насосами/задвижками.
Аналоговые выходы - управление задвижками и приводами.
Порта Ethernet нету.
Но это только в планах))
А пока есть железки с которыми можно потренироваться…
4531_zwischenablage01.jpg -
По случаю мне досталось много чего - типа ПЛК-100, сименс лого и прочего, но мне ничего не понадобилось пока(( `
Вот про сименс очень интересно что там "досталось", мне сейчас не хватает портов ввода для s7-1200, вдруг у вас без дела пылится? -
Так как проблема с отсутствием в ioBroker ModBus RTU так и не решилась, вот один из вариантов как подключать устройства с RTU и интерфейсом 485 к ioBroker по ModBus TCP. Может кому пригодится. http://esp8266.ru/forum/threads/modbus- … erver.911/
-
Есть 4 типа регистров:
-
бинарные read only
-
бинарные read/write
-
аналоговые регистры входа
-
holding регистры.
О каких идёт речь? И какого типа аналоговый регистр: short, int32, float? `
holding регистры. `
Да… мини инструкции не хватает.Собрал переходник Modbus TCP RTU RS-485 http://esp8266.ru/forum/threads/modbus- … erver.911/
Тоже думал осилю настройку драйвера методом тыка, но увы :-(
Программой QModBus подаю запрос (Подсмотрел тут http://www.iobroker.net/?page_id=4643&l … ModBus_RTU)
05 03 00 00 00 09
В ответ получаю 9 строк со значением состояний входов и датчиков.
При записи новых значений
05 06 00 02 значения, меняются.
Как теперь из запихнуть в IOB?
Вот кусок кода из arduin-ки
! ````
#include <simplemodbusslave.h>
! //////////////////// Макроопределения портов и настройки программы ///////////////////
#define TxEnablePin 13 // Tx/Rx пин RS485
#define baud 9600 // скоростьобмена по последовательному интерфейсу. (UART)
#define Slave_ID 5 // Адрес Slave устройсва
! enum
{
// just add or remove registers and your good to go...
// The first register starts at address 0
P0,
P1,
P2,
P3,
P4,
P5,
P6,
P7,
P8,
HOLDING_REGS_SIZE /// Это не удалять размер массива HOLDING_REGS.
//общее количество регистров для функции 3 и 16 разделяет тотже самый массив регистров
//т.е. то же самое адресное пространство
};
!
unsigned int holdingRegs[HOLDING_REGS_SIZE]; // function 3 and 16 register array</simplemodbusslave.h> -
-
Есть 4 типа регистров:
-
бинарные read only
-
бинарные read/write
-
аналоговые регистры входа
-
holding регистры.
О каких идёт речь? И какого типа аналоговый регистр: short, int32, float? `
holding регистры. `
Да… мини инструкции не хватает.Собрал переходник Modbus TCP RTU RS-485 http://esp8266.ru/forum/threads/modbus- … erver.911/
Тоже думал осилю настройку драйвера методом тыка, но увы :-(
Программой QModBus подаю запрос (Подсмотрел тут http://www.iobroker.net/?page_id=4643&l … ModBus_RTU)
05 03 00 00 00 09
В ответ получаю 9 строк со значением состояний входов и датчиков.
При записи новых значений
05 06 00 02 значения, меняются.
Как теперь из запихнуть в IOB?
Вот кусок кода из arduin-ки
!
#include <simplemodbusslave.h> ! //////////////////// Макроопределения портов и настройки программы /////////////////// #define TxEnablePin 13 // Tx/Rx пин RS485 #define baud 9600 // скоростьобмена по последовательному интерфейсу. (UART) #define Slave_ID 5 // Адрес Slave устройсва ! enum { // just add or remove registers and your good to go... // The first register starts at address 0 P0, P1, P2, P3, P4, P5, P6, P7, P8, HOLDING_REGS_SIZE /// Это не удалять размер массива HOLDING_REGS. //общее количество регистров для функции 3 и 16 разделяет тотже самый массив регистров //т.е. то же самое адресное пространство }; ! unsigned int holdingRegs[HOLDING_REGS_SIZE]; // function 3 and 16 register array</simplemodbusslave.h>`
Если я правильно понимаю Modbus TCP RTU и Modbus over TCP разные протоколы. Драйвер поддерживает только Modbus over TCP. -
-
Если я правильно понимаю Modbus TCP RTU и Modbus over TCP разные протоколы. Драйвер поддерживает только Modbus over TCP. `
Я то и подавно не понимаю… А как-же
@dito85:Так как проблема с отсутствием в ioBroker ModBus RTU так и не решилась, вот один из вариантов как подключать устройства с RTU и интерфейсом 485 к ioBroker по ModBus TCP. Может кому пригодится. http://esp8266.ru/forum/threads/modbus- … erver.911/ `
И там и там порт 502 по умолчанию и упоминается Modbus TCP, может это все-же оно?Хоть кусочек примера дайте… куда вписывать ID от Slave устройства, номер регистра...
-
Если я правильно понимаю Modbus TCP RTU и Modbus over TCP разные протоколы. Драйвер поддерживает только Modbus over TCP. `
Я то и подавно не понимаю… А как-же
@dito85:Так как проблема с отсутствием в ioBroker ModBus RTU так и не решилась, вот один из вариантов как подключать устройства с RTU и интерфейсом 485 к ioBroker по ModBus TCP. Может кому пригодится. http://esp8266.ru/forum/threads/modbus- … erver.911/ `
И там и там порт 502 по умолчанию и упоминается Modbus TCP, может это все-же оно?Хоть кусочек примера дайте… куда вписывать ID от Slave устройства, номер регистра... `
А ты можешь к своему устройству напрямую через serial порт подключится?Тогда можно попробовать https://www.npmjs.com/package/jsmodbus
` > MODBUS TCP is a protocol that has a specification.
MODBUS RTU and MODBUS ASCII are protocols that have specifications.
TCP/IP is a protocol that has a specification.
MODBUS over TCP means a MODBUS RTU packet wrapped in a TCP packet. (A)
MODBUS TCP means a MODBUS TCP packet wrapped in a TCP packet. (B)
A and B are not compatible. They transfer like data but have different structures. `
Здесь можно посмотреть структуру пакетов: -
Тогда можно попробовать https://www.npmjs.com/package/jsmodbus `
Для меня это непосильный труд… Я мало что понимаю в том, куда я должен это поставить?Есть виртуалка с IOB,
Есть Win10 c USB-COM-портом к которому подключен RS-485
Есть ESP8266 c RS-485 ( Modbus TCP to RTU)
Есть Ардуинка с RS-485 (могу залить любой скетч).
Если постараться, то могу прокинуть USB-COM с RS485 внутрь IOB на виртуалку.
-
Немного продвинулся…
При помощи все того-же переходника на ESP8266 - Modbus TCP to Modbus RTU получилось прочитать данные. Значит переходник работает!!!
Делал так: в IOB в конфигурации modbus установил следующее:
IP адрес партнера: 192.168.11.205
Порт: 502
ID устройства: 5
Тип: Slave
Еще были созданы Holding регистры 40001-40009. При записи значений в эти регистры, я могу их прочитать при помощи все тойже QModBus.
Получается что я создал эмулятор slave устройства!!!
А теперь вопросы:
1. Как сделать так, чтобы IOB был как мастер? (Что нужно указать в конфиге)
2. Опрос slave устройства с номером 6 2 раза в секунду?
3. Драйверов modbus должно быть столько-же, сколько и Slave устройств?
4. На каждый slave свой драйвер?
PS: Отвечаю сам.
1. Выбрать IP адрес партнера: 192.168.11.205
Порт: 502
ID устройства: 6
Тип: Master.
2. Интервал опроса: 500
Правильно ли я понял, что в этой связке я не подключу еще устройства на шину RS-485.
Даже создав новый драйвер modbus.1 и указав в нем то-же IP 192.168.11.205, только изменив ID устройства например на 10, у меня уже неполучается считать данный с 10-го устройства.
Выходит что для каждого устройства нужен свой Modbus TCP to Modbus RTU шлюз.
А если в качестве мастера будет Modbus TCP to Modbus RTU шлюз, то как в этом случае настраивать драйвер?
-
Правильно ли я понял, что в этой связке я не подключу еще устройства на шину RS-485.
Даже создав новый драйвер modbus.1 и указав в нем то-же IP 192.168.11.205, только изменив ID устройства например на 10, у меня уже неполучается считать данный с 10-го устройства.
Выходит что для каждого устройства нужен свой Modbus TCP to Modbus RTU шлюз.
А если в качестве мастера будет Modbus TCP to Modbus RTU шлюз, то как в этом случае настраивать драйвер? `
Вы, видимо, не совсем разобрались в настройках и принципах работы самого шлюза. Шлюз, как бы, состоит из двух устройств:
-
ModBus RTU master -который опрашивает и управляет устройствами на линии 485 (я подключал 6 устройств). Причем опрос устройств на стороне RTU происходит независимо от запросов со стороны TCP(скорость опроса, сами запросы настраиваются в шлюзе) . Ответы от каждого устройства записываются в определенный участок памяти.
-
ModBus TCP slave - устройство, которое и должно отвечать вашему IOB, это устройство видит ту же область памяти что и ModBus RTU. Поэтому в IOB достаточно одного экземпляра драйвера ModBus TCP. Просто обращайтесь к определенному участку памяти где лежат данные от нужного устройства.
P.S. На стороне TCP данный шлюз, так же поддерживает GET запросы, которыми можно управлять и опрашивать устройства на стороне RTU.
-
-
На гите лежит версия, которая поддерживает rtu по rs485.
Пришлось, правда, поменять код и для tcp мастера и слейва. Так же поменяна адресация при использовании alias.
Если кто то использует tcp: просьба протестить.
И пути назад нет. Надо что бы новая библиотека заработала, т.к. прошлый используемый пакет был в зачаточном состоянии и не изменялся уже 2 года.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden