|
|
Lm2 и Modbus |
|
|
|
25.12.2012, 13:56
|
Группа: Участники форума
Сообщений: 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" Вопрос - что делаю не так?
|
|
|
|
|
25.12.2012, 17:00
|
Группа: Участники Форума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
|
|
|
|
|
25.12.2012, 20:30
|
Группа: Участники форума
Сообщений: 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) Правильно делаю?
|
|
|
|
|
26.12.2012, 11:34
|
Группа: Участники Форума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
|
|
|
|
|
13.6.2013, 10:53
|
Группа: New
Сообщений: 2
Регистрация: 13.6.2013
Пользователь №: 195843
|
Добрый день! Есть LM2 и модули INSYTE (диммер, реле, ШИМ-регулятор и модуль входов). Модули работают по Modbus RTU. 1. Реле - имеет два физических входа и один выход Не могу прочитать адрес устройства, состояние входов\выхода(для последующей визуализации) - -подскажите как? Я, пока, не особо разбираюсь в скриптах, Реле переключается по скрипту: -- объявляем переменную с групповым адресом 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(??) не увенчались успехом...
|
|
|
|
|
13.6.2013, 12:05
|
Группа: Участники Форума2
Сообщений: 77
Регистрация: 11.10.2011
Пользователь №: 125056
|
Добрый день, у нас на сайте есть пример работы с modbus http://lm.evika.ru/?page_id=389Если это не поможет, пожалуйста пришлите или скрипты или бекап системы удобным Вам способом (список на http://evika.ru/kontakty/) мы попробуем воспроизвести и найти ошибку.
Сообщение отредактировал Arrow - 15.6.2013, 14:34
|
|
|
|
|
2.7.2013, 19:32
|
Группа: New
Сообщений: 2
Регистрация: 13.6.2013
Пользователь №: 195843
|
Разобрался с модулями.... Если кому нужно интегрировать LM2 и INSYTE, пишите...
|
|
|
|
|
19.10.2015, 14:14
|
Группа: Участники форума
Сообщений: 205
Регистрация: 4.9.2012
Из: санкт-петербург
Пользователь №: 162122
|
можете поделиться тем, как вы настраивали с2000 пп)))хочу его использовать в качестве slave,чтоб опрашивать его системой визуализации,но пока не получается...если надо могу скинуть мои настройки...
|
|
|
|
|
19.10.2015, 15:45
|
Группа: New
Сообщений: 2
Регистрация: 19.10.2015
Пользователь №: 280586
|
Цитата(4ertjaga_88 @ 19.10.2015, 14:14) можете поделиться тем, как вы настраивали с2000 пп)))хочу его использовать в качестве slave,чтоб опрашивать его системой визуализации,но пока не получается...если надо могу скинуть мои настройки... добрый день, в чем у вас сложность? не получается считать нужные параметры, или устройство вообще не отвечает?
|
|
|
|
|
19.10.2015, 21:59
|
Группа: Участники форума
Сообщений: 205
Регистрация: 4.9.2012
Из: санкт-петербург
Пользователь №: 162122
|
устройство не отвечает,сдаётся мне я не правильно настраиваю его в uprog,так как в pprog в трансляции событий я группы присвоил и клаве и с2000 пп. Устройство с2000пп используется в качестве слева,сделал скрины...собственно вопросы по всем пунктам: 1)верно ли выстроена таблица зон,если адреса 2,3,4- это сигналы 20П? 2)что за таблица идентификаторов,прочтя мануал, так и не дошло;сюда надо пароль ,который в пульте с2000 нужно вводить? 3)вкладка ключи верно ли настроена?
Сообщение отредактировал 4ertjaga_88 - 19.10.2015, 22:00
|
|
|
|
|
21.10.2015, 10:39
|
Группа: New
Сообщений: 2
Регистрация: 19.10.2015
Пользователь №: 280586
|
Уважаемый 4ertjaga_88, мне стоило в первом посте пояснить. с устройствам Болида работал только с одним (С2000-T). я инженер компании EVIKA. из Вашего поста я понял что стоит проблема интеграции вашего устройства в контроллер LogicMachine. если возникнут в этом сложности - мы поможем, но по настройке устройства болид подсказать не сможем. думаю стоит обратиться в техническую поддержку компании Болид.
|
|
|
|
|
21.10.2015, 12:13
|
Группа: Участники форума
Сообщений: 205
Регистрация: 4.9.2012
Из: санкт-петербург
Пользователь №: 162122
|
Да,спасибо,уже обратился,правда ответы оттуда поступают раз в день,а то и в два)))
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
Реклама
ООО «Арктика групп» ИНН: 7713634274
ООО "Русич" ИНН 9721068883 / ЕРИД 2VtzqxaTTsx
Реклама: ООО «АйДи-Электро» | ИНН 6670013662 | ERID: 2VtzqxXWZLZ
ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqvoGYgn
-
Последние сообщения Форума
|