Вход

Просмотр полной версии : ПЛК100: unm.lib и syslibcom.lib



izwerg
25.04.2016, 15:49
К выходу RS485 ПЛК100 подключены счетчик Меркурий и модуль МВА8 (протокол модбас). Планируется еще несколько модулей расширения. Есть большое желание сделать обмен с модулями расширения не через конфигуратор, а с помощью библиотеки modbus.lib. Обмен со счетчиком - с помощью библиотеки Mercury.lib. И тут начинаются сложности. Дело в том что modbus.lib работает с портом через syslibcom и comservice, а меркурий - через UNM. В отдельности - все работает нормально. А вместе - не работает. При открытии порта c помощью comservice - unm теряет с ним связь. Даже закрытие порта в комсервисе и повторный вызов LockDevice - не помогает. Подскажите, как заставить их работать вместе? Может есть UNM-реализация протокола modbus или что-то подобное?

capzap
25.04.2016, 15:56
http://www.owen.ru/forum/showthread.php?t=6805&p=143448&viewfull=1#post143448

melky
25.04.2016, 16:15
Переделайте работу Меркурия на Syslib.com.

Я начинал перелопачивать, но потом счетчик пришлось вернуть. Чтение я добился.

Еще есть реализация опроса Меркурий 230 для АВВ с описанием. Но там могут быть свои заморочки, так что для ПЛК100 все равно переделывать.
Проверить по вышеозначенным причинам не довелось. Библиотеку писали в ABB.

izwerg
25.04.2016, 16:38
Спасибо за "пример". Вопрос про аргументы функциональных блоков в библиотеке:

Enable - запуск по фронту работы блока,
Handle - номер порта в UNM
UnitID - адрес устройства
REF - номер регистра
COUNT - число передаваемых байт (=число регистров * 2)
PNTFF - указатель на массив данных
DELAY - таймаут

Это верно? Может дадите пароль от библиотеки? Очень интересно ознакомиться.

izwerg
25.04.2016, 16:43
Переделайте работу Меркурия на Syslib.com.

Я начинал перелопачивать, но потом счетчик пришлось вернуть. Чтение я добился.

Еще есть реализация опроса Меркурий 230 для АВВ с описанием. Но там могут быть свои заморочки, так что для ПЛК100 все равно переделывать.
Проверить по вышеозначенным причинам не довелось. Библиотеку писали в ABB.

Вариант перелопачивать - остается. Вопрос в том подгонять меркурий под syslibcom или реализовывать modbus через unm. Я решил, что гораздо больше вероятность, что кто-нибудь делал второе. И как оказалось - правильно решил.

capzap
25.04.2016, 17:09
самому бы хотелось вспомнить пароль, чтоб остальное доделать, а так только 3 и 16 функции используются

izwerg
25.04.2016, 20:17
Нашел, на мой взгляд, элегантное решение! Из кода modbus.lib удалил библиотеки syslibcom и comservice. (Из проекта, куда эта библиотека загружается, их, естественно, тоже надо удалить) И в саму библиотеку добавил функции SysComRead и SysComWrite, реализующие чтение и отправку через unm. В результате получил полную функциональность библиотеки modbus.lib, но работающую через unm.

Вольд
25.04.2016, 20:41
В результате получил полную функциональность библиотеки modbus.lib, но работающую через unm.

И какой с этого кайф ?

melky
25.04.2016, 22:41
Вольд, видимо чтобы не переделывать Mercury.lib, раз он нужен.
Я же наоборот начинал переделывать, потому что проектом был предусмотрен контроллер ABB, а там нет UNM, так как это только Овеновская фича...

izwerg
26.04.2016, 00:49
Вольд, видимо чтобы не переделывать Mercury.lib, раз он нужен.
Я же наоборот начинал переделывать, потому что проектом был предусмотрен контроллер ABB, а там нет UNM, так как это только Овеновская фича...

Именно для этого. Чтобы не переделывать Mercury.lib