|
Модераторы: ama_kid |
|
Tsaritsin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.2.2010 Репутация: нет Всего: нет |
Здравствуйте.
Итак есть OPC сервер (Local Discovery Server скачан из www.opcfoundation.org). В WPF - программе настроена подписка на определенный тег (Int32) этого сервера. Подключаюсь с помощью библиотеки Siemens (Opc.Ua.Client.dll и Opc.Ua.Core.dll) Ничего особенного, все взято из стандартных примеров.
Так вот наблюдается плавающий баг. Иногда все работает и исправно срабатывает вызом метода (callback) при изменении значения тэга, но иногда он просто перестает срабатывать и для того что бы опять возобновить отслеживание значения тега приходится закрывать соединение, заново конектится и формировать подписку. Отловить момент когда это происходит не получается. Иногда я могу час просидеть посылая на на сервер различные значения и все работает. А и ногда и пары минут хватает что бы все сломалось. Причем нет привязки к конкретным значениям или чему либо. Вобщем прошу помочь, направить на путь как нормально разобрать такую ситуацию(проблему). Может кто сталкивался с подобной проблемой у OPC клиентов и знает в чем может быть проблема. |
|||
|
||||
ama_kid |
|
|||
АСУТП-кодер Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 1 Всего: 95 |
Первым делом надо отделить мух от котлет. Т.е. понять, что именно глючит - ОРС-сервер или клиент. Для этого я бы заменил Local Discovery Server на Matrikon OPC Server Simulator и провел эксперимент с ним. Если проблема исчезнет - значит все вопросы к используемому ОРС серверу. Но что-то подсказывает мне, что проблема таки в клиенте, причем из-за слов "для того что бы опять возобновить отслеживание значения тега приходится закрывать соединение, заново конектится и формировать подписку" есть подозрение, что слетает сам объект monitoredItem по некому Access Violation, которое блокируется без обработки обрамляющим кодом. Поэтому я бы внимательно присмотрелся к содержимому этого callback-обработчика и для начала попробовал весь его код заключить в try...except...end (что не есть правильно, но в качестве первого шага было бы полезно).
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
Tsaritsin |
|
||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.2.2010 Репутация: нет Всего: нет |
Над этим я как раз работаю, но в планах было попробовать на KeepWare.
Это было сделано еще до моего поста в попытках отловить бажину. По сути там на каждый чих (есть несколько типов exception для определенных этапов обработки значений) стоит вывод в лог. Спасибо за советы. Но я к этому в какой-то мере пришел пытаясь поймать проблему за хвост. Вообщем где-то есть слабое место из-за которого слетает оповещение. К самом коде почти все обрамлено в try...cath...finally (C#). Случаи (если и есть) когда этого нет, должны были бы выстрелить сообщением что произошло не обработанное исключение и т.п. Но ведь ничего этого нет. В какой-то момент просто перестает срабатывать событие на изменение данных, хотя сама программа работает и не висит или т.п. Хотя в подписках (если остановить программу и дебаге) по прежнему присутствует искомый monitoredItem. Я уже переписал программу исключив лишние развлетления при обработке новых значений (генерированиие дополнительных событий и т.п.), подозревая что проблема была так сказать в "thread-level-access", но особо не полегчало. Жду KeepWare, что бы попробовать на нем. Попутно вопрос. Ведь сам сервер не может сбросить подписку? Т.е. если в тег пишет одна программа а другая его слушает, то первая не может сбить прослушивание ни коим образом? И вообще каково качество Local Discovery Server от www.opcfoundation.org. Может у него и раньше присутствовали такие проблемы? |
||||
|
|||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | SCADA-системы и контроллеры стандарта IEC (МЭК) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |