от контролера с 5DI и 2DO по modbus идут данные на moxy преобразующая в modbus TCP, далее на OPC kepware через FSGateway передаю в InTouch. Все сигналы пишуться в один адрес, 40001 где DI пишуться побитно.
Реализовать систему алармов, событий по битно не реально и не удобно.
1) Чтение: присвоение тега для каждого бита (DI)
Записать можно в application
V1_open = V1.00;
V1_close = V1.01;
........
Но т.к. тегов выходит под 500, а у application есть ограничение в количесве записываемого туда, возникает необходимость реализовать функцию.
Исходные данные:
I/O tegineger - V1, V2, V3....V25
memory Discret - V1_open, V1_close .....V25_ ...
Косвенный тег - nomerValve, int_open, int_close
аргумент QuickFunction - tagIO - message
тело функции:
nomerValve.Name = tagIO;
int_open.Name = tagIO + "_int_open";
int_close.Name = tagIO + "_int_close";
int_open.Value = nomerValve.00;
int_close.Value = nomerValve.01;
Но результатов мне это не принесло, где допустил ошибки или возможно есть другой более простой способ. Скажем побитно обращаться в SMC к тегам OPC сервера. Сейчас в ItemReference прописана строка Channel1.Device2.A3_V3 , что туда прибавить что бы обратиться к биту или может кто знает как реализовать это в kepware.
2) Запись (DO)
Как она может быть организованно я не имею никакого понятия. Т.к. знания протоколов modbus у меня нулевые
По адресу 40001 идут данные 11100000 3-я единичка меняеться постоянно 0 и 1 (наверно какой нить стоп бит), 5-ь нулей это входа. Так что я теряюсь в догадках что значат остальные цифры и как слать данные на контроллер с Intoucha.
За ответы заранее благодарен, вы очень поможете в реализации моего первого проэкта.