Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Опрос устройства OPC сервером

 Ответить Ответить
Автор
Сообщение
Amateur24 Смотреть выпадающим
Новичок
Новичок


Присоединился: 20 Декабрь 2008
Online Status: Offline
Публикации: 9
Свойства публикации Свойства публикации   Ответить, цитируя автора - Amateur24 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Опрос устройства OPC сервером
    Опубликовано: 18 Ноябрь 2009 14:46
Здравствуйте. Разрабатываю OPC сервер для нашего оборудования.
Прошу поделиться соображениями - вопрос в следующем.

OPC сервер с заданной частотой получает данные от аппаратуры. "Мост" между OPC и оборудованием - dll-ка с функциями доступа к данным.
Если вручную запустить OPC сервер, начнется периодический опрос устройства.
Теперь к сути вопроса. OPC-клиент может в любой момент пожелать принудительно прочитать набор переменных - неважно, синхронно или асинхронно. Я не пойму, как это согласовать с внутренним режимом опроса устройства OPC сервером? Чтение данных с устройства занимает в среднем 20 сек, и как должен реагировать сервер, если в то время, как он читает данные с оборудования, поступает синхронный/асинхронный запрос от клиента на чтение переменных? Если чтение требуется из КЭШа - понятно, выдасть уже прочитанные данные... а если указан параметр OPC_DS_DEVICE?

Еще один вопрос.
OPC сервер при опросе устройства читает сразу несколько блоков данных - статус аварий, статус модулей и т.п. Клиент же может запрашивать ограниченный набор переменных, то есть он подразумевает, что читаться будут только они. Но при поступлении такого запроса на сервер будут читаться все данные , а на это требуется больше времени. Состояние аппаратуры описывается множеством переменных, и библиотека для работы с устройством содержит всего 3 функции для чтения всех этих данных. Не разрабатывать же для чтения каждого параметра свою функцию, которую можно бы было вызывать при запросе клиентом определенного параметра?
Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Ноябрь 2009 16:36
OPC_DS_DEVICE - это вообще в принципе зло. Вы еще не все проблемы возникающие осветили. Клиентов может быть несколько и доступ к оборудованию становится узким местом. В такой ситуации синхронный однопточный доступ к оборудованию и предоставление данных из кэша дает выигрыш в скорости доступа к произвольным данным как ни странно это может показаться на первый взгляд. "Затуркают железяку". Так что я думаю что тут ложь во спасение. Еси юзер не внемлит, что 500 тегов нельзя получить через COM раз в 200 мс то ему в кэш самая дорога... даже в режиме OPC_DS_DEVICE
Наверх
Vald Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 02 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 427
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vald Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Ноябрь 2009 17:43

Согласен, что заказчик должен понимать что не все получается "за так".

  Самое простое - опрос всех всех данных, которые могут понадобиться клиенту, по расписанию (после первого чтения измеренного значения читаем скажем уставку 1, потом опять измеренное значение, потом уставку 2, потом опять измеренное значение и т.д. Как все траебуемые параметры вычитали - переходим к началу этого кольца). Измеренные значения с флагами ошибок читаем постоянно, а остальные параметры потихоньку вычитываем с гораздо большим интервалом времени.  При этом, естественно, клиент будет получать последнее годное значение.  Иначе задача превращается в написание обмена "с поведением".  При поступлении запроса на чтение чего-то такого, что не является текущим значением, надо будет дождаться завершения обмена и послать новый запрос и тут еще чудеса будут при неответах и переспросах.  В принципе, все это пишется и вот недавно писали что-то такое  Но экстрим в этом есть.

При экспериментах ни один чайник не пострадал

-----------
Плохому системному интегратору всегда OPC сервер мешает.
______________
Пишу на C++ за еду
Наверх
Amateur24 Смотреть выпадающим
Новичок
Новичок


Присоединился: 20 Декабрь 2008
Online Status: Offline
Публикации: 9
Свойства публикации Свойства публикации   Ответить, цитируя автора - Amateur24 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Ноябрь 2009 12:49

Спасибо за Ваши ответы.

"ему в кэш самая дорога... даже в режиме OPC_DS_DEVICE " - в принципе к этому я и склонялся, но хотелось услышать мнения

Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz