<< Click to Display Table of Contents >> Navigation: Проект > Элементы дерева системы > OPC серверы и OPC переменные > OPC DA серверы > Методы опроса ОРС-сервера |
При настройке ОРС-сервера в MasterSCADA разработчик выбирает не только период получения данных, но и метод опроса.
Стандартом ОРС описаны два метода получения данных: Подписка и Чтение. Их параметры описываются на странице свойств Опрос ОРС-сервера, элемента дерева Системы.
В чем же принципиальная разница между ними? При подписке в момент старта режима исполнения клиент будет получать только те данные, которые изменились, с периодом не чаще заданного. Решение о передаче данных клиенту принимает программа ОРС-сервер по факту изменения значений.
Давайте разберемся, что считается изменением ОРС-переменной. Для каждого параметра ОРС-сервер передает непосредственно его значение, метку времени и, конечно же, признак качества. Параметр будет считаться измененным, если изменится признак качества переменной или ее значение на величину, больше заданной. При методе Чтения в отличие от Подписки ОРС-сервер обязан отправлять данные независимо от того, изменились они или нет. При работе с методом чтение разделяют синхронный и асинхронный опрос.
При асинхронном опросе MasterSCADA отсылает запрос на получение данных и может выполнять другие действия с данным экземпляром сервера, сервер пришлет ей данные, когда они будут готовы.
При синхронном опросе MasterSCADA отправляет запрос и ждет ответ. Другие операции с ОРС-сервером во время ожидания невозможны.
В большинстве проектов, создаваемых при помощи MasterSCADA, используется асинхронный опрос. Синхронный опрос используется только для старых OPC-серверов, которые "не умеют" работать иначе (то есть реализуют стандарт только минимально).
Рассмотрим, как эти методы настраиваются на странице свойств Опрос.
Начнем с основного используемого метода - Подписки с использованием мертвой зоны.
При использовании этого метода MasterSCADA в момент старта однократно обращается к ОРС-серверу (если приложение сервера не было запущено, то MasterSCADA запустит его), подписывается на то, чтобы получать раз в секунду только те данные, которые изменились на величину большую, чем указано в поле Мертвая зона. Если данные не менялись, либо изменились на величину меньшую, чем указано в Мертвой зоне, то ОРС-сервер присылать информацию не будет. Рекомендуется оставлять значение мертвой зоны равную нулю.
В момент старта проекта в режиме исполнения MasterSCADA связывается с сервером (если он еще не работает, то MasterSCADA запустит приложение сервера) и сервер начинает работу с того, что присылает ему текущие значения всех переменных. Метод Чтение в данном случае использоваться не будет.
Рассмотрим теперь метод Чтение.
Обратите внимание, что флаг в поле Периодический опрос изменений снят. Значит, метод Подписка не используется.
Итак, раз в две минуты (это и есть 120000 мс) MasterSCADA будет обращаться к ОРС серверу и запрашивать значения переменных. Если в течение трех циклов (в данном случае в течение 6 минут) ответа не будет, то MasterSCADA отключится от ОРС-сервера. После чего заново будет пробовать начать работу с сервером. По стандарту ОРС, если сервер теряет всех своих клиентов, то он должен завершить свой процесс. Таким образом, если кроме MasterSCADA к ОРС-серверу никто не подключен, то произойдет перезагрузка ОРС-сервера.
Этот алгоритм может работать только с асинхронным опросом.
Теперь рассмотрим совместное использование методов Чтения и Подписки.
Как вы догадались, при таких настройках при старте режима исполнения MasterSCADA подпишется на получение изменений с периодом 1 секунда, и каждые две минуты будет слать запросы на получение значений всех переменных. Оба эти метода могут работать одновременно. Их сочетание целесообразно в ситуации, когда параметры могут изменять редко или очень медленно. Регулярный полный опрос используется, чтобы убедиться, что связь есть, но просто нет изменений. При этом отметка времени опрошенных переменных берется из OPC-сервера, поэтому она изменится, если сервер устанавливает ее самостоятельно, а не берет из контроллера.
Рассмотрим ситуации, когда опрашивать приборы необходимо только в определенные моменты, либо с периодом, зависящим от обстоятельств. Для этих случаев существуют поля Старт по условию в группе Периодический опрос изменений, а также поле Опрос по условию в группе Чтение.
Итак, если в поле Старт по условию перетащить дискретную переменную из дерева Объектов, либо из дерева Системы, то в те интервалы времени, когда эта переменная находится в состоянии Истина, MasterSCADA будет получать значения переменных на заданных условиях (период и мертвая зоны) подписки.
У поля Опрос по условию другой алгоритм: по переднему фронту переключения заданной дискретной переменной в состояние Истина произойдет однократное принудительное чтение всех переменных ОРС-сервера. Рассмотрим пример показанный на рисунке.
MasterSCADA будет получать измененные значения переменных ОРС-сервера раз в две секунды, при условии, что Команда "Дискретная переменная 1" равна единице, а также все значения раз в две минуты и в те моменты, Команда "Дискретная переменная 2" меняет значения с Ложь на Истина.