Реклама / ООО «ИЗОЛПРОЕКТ» / ИНН: 7725566484 | ERID: 2VtzqwauJdq
IPB IPB
Проектирование, монтаж, наладка, сервис


Здравствуйте, гость ( Вход | Регистрация )

- Рекомендации АВОК 5.5.1-2023
«Системы противодымной вентиляции жилых и общественный зданий»

- Рекомендации АВОК 7.8.3-2023
«Проектирование инженерных систем лабораторий»

- Рекомендации АВОК 7.10-2023
«Здания жилые и общественные. Защита от шума и вибрации инженерного оборудования»

АВОК в соц. сетях
ИНН: 7714824045
 
Добавить ответ в эту темуОткрыть тему
> Lm2 и Modbus
Alferov
сообщение 25.12.2012, 13:56
Сообщение #1





Группа: Участники форума
Сообщений: 103
Регистрация: 21.11.2010
Из: Tula
Пользователь №: 82159



Я так понимаю, сюда можно писать?

Есть LM2... есть ОПС на базе Болидовского Ориона. Есть у Болида такой приборчик - С2000ПП. Приборчик этот занимается преобразованием сообщений в протоколе орион в регистры modbus.
Подключил порт rs485 на LM к с2000пп.
Пытаюсь прочитать 16-битный регистр.
Код
if not mb then
  require('luamodbus')
  mb = luamodbus.rtu()
  mb:open('/dev/ttyS2', 19200, 'E', 8, 1, 'H')
  mb:connect()
end
mb:setslave(4)
r1, err = mb:readregisters(46152)
if r1 then
  alert(r1)
else
  alert(err)
end
mb:close()

В ответ на первый запрос получаю значение (корректное), а вот на все последующие запросы - ответ один:
Код
err = "Method called on invalid context"


Вопрос - что делаю не так?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Arrow
сообщение 25.12.2012, 17:00
Сообщение #2





Группа: Участники Форума2
Сообщений: 77
Регистрация: 11.10.2011
Пользователь №: 125056



Добрый день Александр,
я правильно понимаю что вы запускаете данный скрипт в цикле, и первый проход нормально отрабатывает, а после нет?
Вы в блоке
if not mb then
require('luamodbus')
mb = luamodbus.rtu()
mb:open('/dev/ttyS2', 19200, 'E', 8, 1, 'H')
mb:connect()
end
вы не только открываете порт, но и выделяете память под переменную mb. После прохождения цикла первый раз, вы закрываете соединение
mb:close(). При повторном вызове скрипта, mb уже не равна nil и не заходит в блок открытия соединения, а само соединение уже закрыто.
Для исправления ситуации либо уберите вызов mb:close() и вызывайте его только когда действительно вы заканчиваете работать с этим устройством (например в другом скрипте), либо после mb:close() присвойте mb = nil
пример работы с modbus устройствами вы можете посмотреть у нас на сайте http://lm.evika.ru/?page_id=389
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Alferov
сообщение 25.12.2012, 20:30
Сообщение #3





Группа: Участники форума
Сообщений: 103
Регистрация: 21.11.2010
Из: Tula
Пользователь №: 82159



Да... в цикле. Убрал закрытие соединения, заработало, спасибо.
Следующий вопрос, если можно...

Нужно вытянуть 14 регистров одним запросом.
Код
r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14 = mb:readregistrers(46264, 14)

Правильно делаю?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Arrow
сообщение 26.12.2012, 11:34
Сообщение #4





Группа: Участники Форума2
Сообщений: 77
Регистрация: 11.10.2011
Пользователь №: 125056



да правильно,
если нужно будет объединить в массив эти переменные, можете использовать конструкцию
t = {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14}
и обращение к этим данным будут через t[1],t[2],....
для проверки полученных значений можно использовать функцию log(), например log(r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14), и результат вы увидите в закладке log веб-интерфейса LM2.
если получится что вы ошиблись с кол-вом переменных, то лишние переменные будут иметь значение nil
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
shustrik814
сообщение 13.6.2013, 10:53
Сообщение #5





Группа: New
Сообщений: 2
Регистрация: 13.6.2013
Пользователь №: 195843



Добрый день!


Есть LM2 и модули INSYTE (диммер, реле, ШИМ-регулятор и модуль входов). Модули работают по Modbus RTU.
1. Реле - имеет два физических входа и один выход

Не могу прочитать адрес устройства, состояние входов\выхода(для последующей визуализации) - -подскажите как?

Я, пока, не особо разбираюсь в скриптах, helpsmilie.gif

Реле переключается по скрипту:

-- объявляем переменную с групповым адресом 2/1/15
value_dimmer = grp.getvalue('2/1/15')

-- создаем объект Modbus RTU
require('luamodbus')
mb = luamodbus.rtu()

-- открываем Modbus соединение с параметрами 38400 baud rate, even parity, 8 data bits, 1 stop bit, half duplex
mb:open('/dev/ttyS2', 38400, 'E', 8, 1, 'H')
mb:connect()

-- устанавливаем ведомый модуль с адресом 15
mb:setslave(15)

-- записываем в регистр модуля значение переменной
mb:writeregisters(1, value_dimmer)

-- закрываем Modbus соединение
mb:close()

во вкладке "объекты" меняю состояние переменной, реле переключается....нужно еще анализировать состояние входов и состояние выхода.... попытки использовать команды coil = mb:readcoils(??), value = mb:readdiscreteinputs(??) не увенчались успехом...


Прикрепленные файлы
Прикрепленный файл  LD2_R1000D.pdf ( 246,48 килобайт ) Кол-во скачиваний: 11
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Arrow
сообщение 13.6.2013, 12:05
Сообщение #6





Группа: Участники Форума2
Сообщений: 77
Регистрация: 11.10.2011
Пользователь №: 125056



Добрый день, у нас на сайте есть пример работы с modbus http://lm.evika.ru/?page_id=389
Если это не поможет, пожалуйста пришлите или скрипты или бекап системы удобным Вам способом (список на http://evika.ru/kontakty/) мы попробуем воспроизвести и найти ошибку.


Сообщение отредактировал Arrow - 15.6.2013, 14:34
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
shustrik814
сообщение 2.7.2013, 19:32
Сообщение #7





Группа: New
Сообщений: 2
Регистрация: 13.6.2013
Пользователь №: 195843



Разобрался с модулями.... Если кому нужно интегрировать LM2 и INSYTE, пишите...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
4ertjaga_88
сообщение 19.10.2015, 14:14
Сообщение #8





Группа: Участники форума
Сообщений: 205
Регистрация: 4.9.2012
Из: санкт-петербург
Пользователь №: 162122



можете поделиться тем, как вы настраивали с2000 пп)))хочу его использовать в качестве slave,чтоб опрашивать его системой визуализации,но пока не получается...если надо могу скинуть мои настройки...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
aek
сообщение 19.10.2015, 15:45
Сообщение #9





Группа: New
Сообщений: 2
Регистрация: 19.10.2015
Пользователь №: 280586



Цитата(4ertjaga_88 @ 19.10.2015, 14:14) *
можете поделиться тем, как вы настраивали с2000 пп)))хочу его использовать в качестве slave,чтоб опрашивать его системой визуализации,но пока не получается...если надо могу скинуть мои настройки...

добрый день, в чем у вас сложность? не получается считать нужные параметры, или устройство вообще не отвечает?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
4ertjaga_88
сообщение 19.10.2015, 21:59
Сообщение #10





Группа: Участники форума
Сообщений: 205
Регистрация: 4.9.2012
Из: санкт-петербург
Пользователь №: 162122



устройство не отвечает,сдаётся мне я не правильно настраиваю его в uprog,так как в pprog в трансляции событий я группы присвоил и клаве и с2000 пп.
Устройство с2000пп используется в качестве слева,сделал скрины...собственно вопросы по всем пунктам: 1)верно ли выстроена таблица зон,если адреса 2,3,4- это сигналы 20П?
2)что за таблица идентификаторов,прочтя мануал, так и не дошло;сюда надо пароль ,который в пульте с2000 нужно вводить?
3)вкладка ключи верно ли настроена?



Сообщение отредактировал 4ertjaga_88 - 19.10.2015, 22:00
Прикрепленные файлы
Прикрепленный файл  __________1.png ( 140,15 килобайт ) Кол-во скачиваний: 20
Прикрепленный файл  __________2.png ( 127,17 килобайт ) Кол-во скачиваний: 17
Прикрепленный файл  __________3.png ( 123,02 килобайт ) Кол-во скачиваний: 11
Прикрепленный файл  __________.png ( 132,72 килобайт ) Кол-во скачиваний: 14
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
aek
сообщение 21.10.2015, 10:39
Сообщение #11





Группа: New
Сообщений: 2
Регистрация: 19.10.2015
Пользователь №: 280586



Уважаемый 4ertjaga_88, мне стоило в первом посте пояснить. с устройствам Болида работал только с одним (С2000-T).
я инженер компании EVIKA. из Вашего поста я понял что стоит проблема интеграции вашего устройства в контроллер LogicMachine. если возникнут в этом сложности - мы поможем, но по настройке устройства болид подсказать не сможем. думаю стоит обратиться в техническую поддержку компании Болид.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
4ertjaga_88
сообщение 21.10.2015, 12:13
Сообщение #12





Группа: Участники форума
Сообщений: 205
Регистрация: 4.9.2012
Из: санкт-петербург
Пользователь №: 162122



Да,спасибо,уже обратился,правда ответы оттуда поступают раз в день,а то и в два)))
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Добавить ответ в эту темуОткрыть тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

Реклама
ООО «Арктика групп» ИНН: 7713634274



ООО "Русич" ИНН 9721068883 / ЕРИД 2VtzqxFiuCx

ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2Vtzqx6MLPt

Последние сообщения Форума





Rambler's Top100 Rambler's Top100

RSS Текстовая версия Сейчас: 10.6.2024, 2:50