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

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

Модератор: immortal

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

Re: модуль modbus

Сообщение Alekseym6 » Пт апр 03, 2015 7:40 am

если заполнить соответствующие поля непосредственно в базе MYSQL то свойства в объекте обновляются. После этого при открытии устройства modbus, поле "Связанное с-во" остается пустым. при попытке его изменить появляется "галочка". если нажать "сохранить", то пропадает связь свойство объекта и устройства, данные в "ThisComputer.TestModbus" не передаются.

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

Re: модуль modbus

Сообщение Alekseym6 » Пт апр 03, 2015 8:48 am

Как рассортировать пришедшие данные? запрашиваю диапазон регистров 10-15 (приходят и в виде: 29,2,605,161,207,376). у объекта несколько свойств, соответствующих разным регистрам.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4279
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1515 раз
Контактная информация:

Re: модуль modbus

Сообщение sergejey » Пт апр 03, 2015 3:41 pm

Alekseym6 писал(а):Как рассортировать пришедшие данные? запрашиваю диапазон регистров 10-15 (приходят и в виде: 29,2,605,161,207,376). у объекта несколько свойств, соответствующих разным регистрам.
если данные сохраняются в одно свойство (object1.prop), то его можно раскидать по нужным таким кодом:

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

$tmp=explode(',',getGlobal('object1.prop'));
setGlobal('object1.prop0',$tmp[0]); //1-ый элемент
setGlobal('object1.prop1',$tmp[1]); //2-й элемент
setGlobal('object1.prop2',$tmp[2]); //3-й элемент
... 

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Alekseym6
Сообщения: 30
Зарегистрирован: Чт апр 18, 2013 10:27 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: модуль modbus

Сообщение Alekseym6 » Пт апр 03, 2015 6:37 pm

Благодарю, sergejey. методом гугления сделал так:
$str=$this->getProperty('HC_read');
$str_arr=explode(",",$str);
$size=count($str_arr); //для потом
$this->setProperty('volt',$str_arr[4]);
$this->setProperty('current',$str_arr[0]);

Ваш метод больше подходит т.к. объектов у меня больше.

sergejey, подскажите где у меня ошибка:
через WEB настройки modbusTCP не заполняется поле "Связанное с-во", данные в "ThisComputer.TestModbus" не передаются?
пришлось прописывать напрямую в MYSQL базу.
Alekseym6
Сообщения: 30
Зарегистрирован: Чт апр 18, 2013 10:27 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: модуль modbus

Сообщение Alekseym6 » Пн апр 06, 2015 1:51 pm

Разобрался! Пришлось заменить движок с Lighttpd на apache2.
Silowar
Сообщения: 85
Зарегистрирован: Пт фев 06, 2015 10:19 am
Благодарил (а): 16 раз
Поблагодарили: 9 раз

Re: модуль modbus

Сообщение Silowar » Пн авг 31, 2015 1:27 pm

sergejey, а куда правильнее всего вставить такой код?
sergejey писал(а): если данные сохраняются в одно свойство (object1.prop), то его можно раскидать по нужным таким кодом:

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

$tmp=explode(',',getGlobal('object1.prop'));
setGlobal('object1.prop0',$tmp[0]); //1-ый элемент
setGlobal('object1.prop1',$tmp[1]); //2-й элемент
setGlobal('object1.prop2',$tmp[2]); //3-й элемент
... 
Сейчас у меня каждый регистр обновляться по отдельности через 1 секунду, а можно считывать их все одновременно, а потом раскидывать по свойствам кодом, разгрузив тем самым сеть и контроллер.
За это сообщение автора Silowar поблагодарил:
foxvlad (Пт окт 30, 2015 1:41 am)
Рейтинг: 1.23%
Silowar
Сообщения: 85
Зарегистрирован: Пт фев 06, 2015 10:19 am
Благодарил (а): 16 раз
Поблагодарили: 9 раз

Re: модуль modbus

Сообщение Silowar » Ср сен 02, 2015 3:06 pm

перестал выполняться цикл modbus.
Сперва в логах писал значение какой-то переменной, потом вообще перестал писать какие-либо ошибки. По логам стартует, но и все.
Случилось это после того как обновил модуль. До этого на чистой системе было все настроено и работало, решил обновить модуль Modbus и цикл перестал работать, его не видно в start.bat
Аватара пользователя
sergejey
Site Admin
Сообщения: 4279
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1515 раз
Контактная информация:

Re: модуль modbus

Сообщение sergejey » Ср сен 02, 2015 4:49 pm

Silowar писал(а):перестал выполняться цикл modbus.
Сперва в логах писал значение какой-то переменной, потом вообще перестал писать какие-либо ошибки. По логам стартует, но и все.
Случилось это после того как обновил модуль. До этого на чистой системе было все настроено и работало, решил обновить модуль Modbus и цикл перестал работать, его не видно в start.bat
В логах есть момент запуска?
Попробуйте запустить его отдельно от других циклов и посмотреть из-за чего он закрывается.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Silowar
Сообщения: 85
Зарегистрирован: Пт фев 06, 2015 10:19 am
Благодарил (а): 16 раз
Поблагодарили: 9 раз

Re: модуль modbus

Сообщение Silowar » Ср сен 02, 2015 5:09 pm

Посмотрел чуть подробнее когда делаешь reroot
В общем логе есть и момент запуска и момент остановки.

16:32:02 DEBUG [root]: Starting ./scripts/cycle_modbus.php ... (at C:\_majordomo\htdocs\lib\general.class.php:430)

16:32:15 DEBUG [root]: Closing thread: c:/_majordomo/server/php/php.exe -q ./scripts/cycle_modbus.php --params "a:0:{}">>C:\_majordomo\htdocs/debmes/log_2015-09-02-cycle_modbus.php.txt (at C:\_majordomo\htdocs\lib\general.class.php:430)

в логе модуля:
16:32:15 running cycle_modbus.php

Удалил все устройства modbus, затем создал заново.
Результат тот же
Аватара пользователя
sergejey
Site Admin
Сообщения: 4279
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1515 раз
Контактная информация:

Re: модуль modbus

Сообщение sergejey » Ср сен 02, 2015 5:11 pm

Значит секунд 10 он всё-таки работает, а потом падает... Посмотрите в общем логе нет ли каких ошибок, например связанных с базой данных.
Ещё попробуйте добавить только одно устройство и не привязывать к нему никакой логики.
Ну и я всё же попробовал бы запустить этот цикл отдельно, потому что возможно что-то пишется ещё в консоль, а не только в лог.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить