[Модуль] ModBus (modbus)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: модуль modbus

Сообщение Geban » Пн мар 02, 2015 8:12 am

Ну если у вас устройство(то которое у Вас /dev/ttyUSB0) указано верно, то можно из любой виндовой машины в сети с помощью modbus poll подключиться к компу где поднят ser2net.
У меня в Debian коневертер USB-RS485 детектиться как /dev/ttyACM0

Под винду?... вроди была какая-то софтина.. и даже несколько,но как и все виндовое работало отвратительно, поэтому я забил на винду. А так поидее должен подойти любой софт который умеет пробрасывать сом порт в сеть. Если есть роутер с УСБ на openwrt то можно поднять на нем. У меня одно время была так подключена панель оператора.
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: модуль modbus

Сообщение Geban » Пн мар 02, 2015 11:54 pm

Нашел интересный проект.. линуксовый,но на Cygwin или MinGW я думаю будет работать и под виндой.
Вобщем это шлюз MODBUS RTU <-> MODBUS TCP
Собрал под дебиан 7, работает на ура.
качаем сырцы отсюда http://mbus.sourceforge.net/
распаковываем, делаем ./configure потом make потом make install (по ходу устанавливаем необходимые библиотеки и пакеты).
После сборки запускается из консоли mbusd -h выводит справку по командам.
За это сообщение автора Geban поблагодарил:
Tigr7 (Вт дек 15, 2015 8:24 pm)
Рейтинг: 1.16%
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: модуль modbus

Сообщение Geban » Пн мар 16, 2015 10:54 am

Нашел модуль/библиотеку для PHP которая реализует протокол MODBUS RTU
Сырцы взять можно по ссылке:
https://code.google.com/p/php-extension ... loads/list

Качаем, распаковываем. делаем:
phpize && ./configure && make && make install
после сборки нужно включить этот модуль php5enmod modbus

все. После этого можно работать, функции описаны вот тут
https://code.google.com/p/php-extension ... /Reference

Я сделал в меню выключатель, создал в классе Devices объект MVU8 со свойствами out1 и address

Выключатель в меню связан с объектом MVU8 и его свойством out1
К компу подключен USB<->RS485 преобразователь потом кусок витой пары и ОВЕН МВУ8 (модуль вывода 8 каналов)
Особенность этого девайса в том что для включения 1го выхода нужно записать значение 1000 в регистр 0, а для выключения 0 в тот же регистр.
при изменении состояния выключателя выполняется вот такой сценарий

$slave_addr = 16;

if(gg("MVU8.out1") == 1) {$reg = 0; $data = 1000;} else if(gg("MVU8.out1") == 0) {$reg=0; $data = 0;};
$port = modbus_open("/dev/ttyUSB0",9600,"N",1,50);
modbus_write($port, $slave_addr, $reg, $data);
modbus_close($port);

В итоге все работает.
Библиотека имеет мало функций, но при наличии рук и знаний Си можно дописать что нужно. Посмотрел код по диагонали.. ничего сложного.

З.Ы
Модуль для МДМ опять сделать не получилось (
За это сообщение автора Geban поблагодарил:
foxvlad (Вт ноя 10, 2015 1:53 pm)
Рейтинг: 1.16%
kostya77
Сообщения: 136
Зарегистрирован: Вт ноя 12, 2013 8:29 pm
Благодарил (а): 2 раза
Поблагодарили: 8 раз

Re: модуль modbus

Сообщение kostya77 » Пн мар 16, 2015 10:34 pm

Geban писал(а):Нашел модуль/библиотеку для PHP которая реализует протокол MODBUS RTU
Сырцы взять можно по ссылке:
https://code.google.com/p/php-extension ... loads/list

Качаем, распаковываем. делаем:
phpize && ./configure && make && make install
после сборки нужно включить этот модуль php5enmod modbus

все. После этого можно работать, функции описаны вот тут
https://code.google.com/p/php-extension ... /Reference

Я сделал в меню выключатель, создал в классе Devices объект MVU8 со свойствами out1 и address

Выключатель в меню связан с объектом MVU8 и его свойством out1
К компу подключен USB<->RS485 преобразователь потом кусок витой пары и ОВЕН МВУ8 (модуль вывода 8 каналов)
Особенность этого девайса в том что для включения 1го выхода нужно записать значение 1000 в регистр 0, а для выключения 0 в тот же регистр.
при изменении состояния выключателя выполняется вот такой сценарий

$slave_addr = 16;

if(gg("MVU8.out1") == 1) {$reg = 0; $data = 1000;} else if(gg("MVU8.out1") == 0) {$reg=0; $data = 0;};
$port = modbus_open("/dev/ttyUSB0",9600,"N",1,50);
modbus_write($port, $slave_addr, $reg, $data);
modbus_close($port);

В итоге все работает.
Библиотека имеет мало функций, но при наличии рук и знаний Си можно дописать что нужно. Посмотрел код по диагонали.. ничего сложного.

З.Ы
Модуль для МДМ опять сделать не получилось (


Как после сборки включить этот модуль php5enmod modbus ?
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: модуль modbus

Сообщение Geban » Пн мар 16, 2015 11:28 pm

php5enmod modbus - это и есть команда для включения. В линуксовой консоли выполняется. В папке с исходниками есть php файл modbus.php. Есть его выполнить в консоли (php modbus.php ) он покажет подключился модуль или нет. Есть все хорошо то будет что-то типа
root@Kortana:/home/linaro/modbus/php-extension-modbus-read-only# php modbus.php Functions available in the test extension:
confirm_modbus_compiled
modbus_open
modbus_close
modbus_read_holding_registers
modbus_read_input_registers
modbus_write

Congratulations! You have successfully modified ext/modbus/config.m4. Module modbus is now compiled into PHP.
kostya77
Сообщения: 136
Зарегистрирован: Вт ноя 12, 2013 8:29 pm
Благодарил (а): 2 раза
Поблагодарили: 8 раз

Re: модуль modbus

Сообщение kostya77 » Вт мар 17, 2015 5:35 pm

Geban писал(а):php5enmod modbus - это и есть команда для включения. В линуксовой консоли выполняется. В папке с исходниками есть php файл modbus.php. Есть его выполнить в консоли (php modbus.php ) он покажет подключился модуль или нет. Есть все хорошо то будет что-то типа
root@Kortana:/home/linaro/modbus/php-extension-modbus-read-only# php modbus.php Functions available in the test extension:
confirm_modbus_compiled
modbus_open
modbus_close
modbus_read_holding_registers
modbus_read_input_registers
modbus_write

Congratulations! You have successfully modified ext/modbus/config.m4. Module modbus is now compiled into PHP.
(( у меня после make install
выдает
Installing shared extensions: /usr/lib/php5/20090626+lfs/
((( и не устанавливается
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: модуль modbus

Сообщение Geban » Ср мар 18, 2015 11:47 am

вот тут вроди похожая беда http://forum.ubuntu.ru/index.php?topic=192547.0
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: модуль modbus

Сообщение Geban » Ср мар 18, 2015 6:36 pm

вечером выложу готовую библиотеку. Правда собирала на ARM платформе... не знаю будет ли работать на РС
kostya77
Сообщения: 136
Зарегистрирован: Вт ноя 12, 2013 8:29 pm
Благодарил (а): 2 раза
Поблагодарили: 8 раз

Re: модуль modbus

Сообщение kostya77 » Чт мар 19, 2015 3:13 pm

sergejey писал(а):Добавил в последние обновления модуль ModBus.

Возможности:
* Подключение к устройствам ModBus по протоколам TCP/UDP
* Операции чтения данных: FC1, FC2, FC3, FC4 (реле, входы, регистры)
* Выбор функции преобразования прочитанных данных (float, integer, string и т.п.)
* Операции записи данных: FC5, FC6, FC15, FC16 (реле и регистры)

Присутствует возможность установки связанного объекта (свойства) -- для операций чтения в объект будут переносится прочитанные данные, для операций записи изменение свойства автоматически отправит данные на устройство.

Для операций чтения надо выставлять время опроса (в секундах), для операций записи не обязательно, точнее лучше его делать очень большим (запись через связанные свойства будет осуществляться мгновенно и даже без запуска цикла опроса ModBus)

Пример экрана настройки устройства:

Изображение

После добавления первого устройства надо перезапустить систему, т.к. цикл опроса ModBus-устройств запустится только если есть хоть одно устройство.
Уже все что можно перепробывал ((( может кто подскажет что куда нужно внести в этом мдуле ...
Есть данные слейва
Подскажите я правельно внес данные ?

;Direction - направление (read & write)
;Type - тип (битовые или регистровые)
;Baudrate - скорость слэйва
;Address - адрес слэйва в сети RS-485
;var(0-n) - адрес#тип#символьное имя#комментарий

[Request0]
Direction=read
Type=bit
Baudrate=115200
Address=0
Period=100
var0=3800#bool#stolovaya galuzi
var1=380b#bool#stolovaya t
[Request2]
Direction=read
Type=reg
Baudrate=115200
Address=0
Period=100
var0=a000#real#t

как его подключить ?
Alekseym6
Сообщения: 30
Зарегистрирован: Чт апр 18, 2013 10:27 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: модуль modbus

Сообщение Alekseym6 » Чт апр 02, 2015 1:46 pm

Почему не заполняется поле "Связанное с-во", данные в "ThisComputer.TestModbus" не передаются?

modbusTCP регистры HR 10-16. регистры читаются успешно.

устанавливал на Debian 7, lighttpd, MDM (версия 0.9.0b), настройки - http://smartliving.ru/Main/SetupLinux
Ответить