Файл конфигурации драйвера ОРС

В файле конфигурации config по запущенному проекту должен присутствовать раздел по запуску клиента ОРС.

[opc]

Если данный раздел отсутствует, драйвер не будет запущен. Помимо указанных ниже ключевых слов, также необходимо использовать ключевые слова по всем программам управления / драйверам.

[opc] (Раздел о клиенте OPC)

ЗаписьТипПо умолчаниюДиапазонОписание
enableGeneralQueryстрока«Yes»«Yes»|»No»Существует возможность отключения автоматического общего запроса во время переключение резервирования. Это может быть выполнено путем установки значения «No» в записи «enableGeneralQuery» в файле конфигурации.Если эта запись конфигурационного файла имеет заданное значение «No», также отключается общий запрос с помощью ЭТД «_DriverCommon.GQ». Это отключение не относится к общим запросам, активированным с помощью элементов внутренней точки данных «_OPCServer.ServerGA» или «_OPCGroup.Refresh». Таким образом, в дальнейшем, эти ЭТД можно использовать для выполнения общих запросов вручную, несмотря на то, что автоматические общие запросы отключены.
серверстрока«»С помощью этой записи, символьное имя сервера, используемое в периферийном адресе, присваивается «ProgID» (программный идентификатор из реестра) и, указывается необходимый путь к удаленному серверу.Примерserver = «server1» «www.foo.com/SybCom.OPC.Simulation.1″Присваивает «ProgID SybCom.OPC.Simulation.1» символьному имени «server1». Пусть устанавливается дополнительно. В случае указания пути, он должен отделяться от «ProgID» с помощью символа «/». В случае указания пути, сервер автоматически запускается в качестве удаленного сервера на указанном компьютере. Все UNC имена («//server» или «server»), а также все DNS имена («server.com», «www.foo.com» или «135.5.33.19») могут использоваться при составлении перечня имен пути.Внимание!Если клиент ОРС устанавливает связь с несколькими серверами, для каждого сервера должна существовать точка данных. Точку данных можно создать посредством панели конфигурирования OPC. См. раздел Панель сервера OPC. Необходимо указывать, как минимум, один сервер. Допускается одновременный запуск, максимум, 20 серверов. Условные названия серверов должны отличаться друг от друга, поскольку должна существовать точка данных _OPCServer с указанием названий точек данных в условных обозначениях (см. раздел _Сервер OPC (клиент OPC )).
«timeStampFromServer»строка«Yes»«Yes»|»No»По умолчанию, временные метки генерируются сервером OPC.Если эта конфигурационная запись имеет значение «No», временные метки генерируются клиентом OPC.
«ioReadBack»строка«Yes»«Yes»|»No»«Readback» — это функция, обеспечивающая совместимость «IOTransitionTimeout» с механизмом обновления OPC:В случае записи адреса ввода/вывода, драйвер ожидает значение для этого адреса от периферийного устройства на протяжении «IOTransitionTimeout» секунд. В случае отсутствия полученных значений на протяжении этого периода времени, драйвер принимает решение о неудачном завершении записи.С другой стороны, OPC сервера не предоставляют немедленные ответы на значение, а только после частоты обновления в миллисекундах. Таким образом, если «IOTransitionTimeout» меньше значения частоты обновления, обратный вызов не осуществляется и драйвер принимает решение о неуспешном выполнении «IOTransaction» (даже в случае успешного выполнения).Во избежание такой ситуации, OPC драйвер инициирует операцию считывания непосредственно после записи для обратного считывания значения (отсюда «readback» («обратное считывание»)) из периферийного устройства. Эту функцию обратного считывания можно отключить с помощью записи «ioReadBack = No».
priorityClassвнутр.0Linux:-20 — 19Windows:-1 — 2Управление приоритетами менеджеров под управлением ОС Windows и ОС Linux (также см. Записи различных разделов).
multiThreadedстрока«Yes»«Yes»|»No»Устарело после выхода «КАСКАД Цифра» версии 3.8, поскольку драйвер может работать только в режиме multiThreaded!
reduPostfixстрока«»В режиме резервирования точки данных обоих резервированных OPC клиентов должны быть разными. Так как внутренние точки данных состоят из имени сервера или группы, описание стандартного шаблона для OPC клиента, в отличие от других драйверов, не представляется возможным. Вместо этого, драйвер добавляет «reduPostfix» к полученным именам элементов внутренних точек данных.Для резервированного компьютера, это значение должно быть «_2».ПримерreduPostfix = «_2» Точки данных типа «_OPCServer» и «_OPCGroup» должны, следовательно, существовать в резервированной системе, при этом данный постфикс должен указываться в последней части их имен. Если эта запись не указана, запуск OPC клиента осуществляется без резервирования.Ниже предлагаются примеры точек данных OPC (часть файла «config.redu»).Пример# Параметры OPC драйвера[event]fwdDpType = «_OPCServer.»# OPC GROUPs[event]fwdDpType = «_OPCGroup.UpdateRateAct»fwdDpType = «_OPCGroup.ItemIds»fwdDpType = «_OPCGroup.DpIds»copyDpType = «_OPCGroup.UpdateRateReq»copyDpType = «_OPCGroup.DeathBand»copyDpType = «_OPCGroup.Refresh»copyDpType = «_OPCGroup.RefreshTimer»copyDpType = «_OPCGroup.DeleteGroup»copyDpType = «_OPCGroup.DataSourceDevice»# «copy» или «forward», в зависимости от OPC сервера; стандартное копирование !!copyDpType = «_OPCGroup.GetIds»copyDpType = «_OPCGroup.EnableCallback»copyDpType = «_OPCGroup.Active»# Пример резервирования XXX OPC для точки данных «_EXAMPLESERVER» и для# имени сервера «OPC.SimaticNet»[event]copyDpType = «_OPCServer.StateTimer»copyDpType = «_OPCServer.ReconnectTimer»copyDpType = «_OPCServer.ServerGA»copyDpType = «_OPCServer.QualInfoFilter.QualInfo»copyDpType = «_OPCServer.QualInfoFilter.QualInfoDetail»copyDpType = «_OPCServer.GetItemIds»copyDpType = «_OPCServer.DeleteServer»copyDpType = «_OPCServer.InvalidMapping»[opc]($host2) reduPostfix = «_2″[opc_3]# server = «EXAMPLESERVER» «OPC.SimaticNET»»Active» и «.EnableCallback»: что касается этих точек данных, все зависит от текущего проекта, т.е., указаны ли они в «fwdDp» или «copyDp». Запись в «copyDp» означает, что группы переключаются в неактивное состояние на обеих резервированных системах.
«mapInvalidAdressToDrvInvalidBit»строка«Yes»«Yes»|»No»В случае установки данной конфигурационной записи, в панели OPC сервера (Панель сервера OPC) необходимо активировать описание качества или, как минимум, описание недействительности. Если[opc]mapInvalidAdressToDrvInvalidBit = «Yes»  задана в файле конфигурации, при условии невозможности обнаружения адреса (элемента ОРС) на сервере, устанавливается неверный бит драйвера. Бит сбрасывается, если адрес существует в сервере, и система пыталась с ним свзяаться посредством _OPCGRoup.retryCorruptItem. При успешном установлении связи адрес становится доступным на сервере, а сервер обновляется. Таким образом, значение драйвера отсылается в «КАСКАД Цифра» и выполняется сброс «DRV_INVALID». Следовательно, точка данных больше не является недействительной. Следует отметить, что использование одной и той же группы ОРС для двух разных драйверов ОРС не допускается.

[opc_<ServerName>] (Раздел по серверу)

Помимо указанных выше общих настроек, в дополнительных разделах можно задавать конкретные настройки сервера.

Разделы должны приводиться в порядке, в котором серверы определены ключевым словом «Server» в данном разделе [opc]. Название раздела формируется следующим образом:

«[opc_» + условное название + «]»

IconПРИМЕР

Для сервера «server1» назначен раздел сервера:

[opc_server1]

В разделах серверов содержатся следующие данные

ЗаписьТипПо умолчаниюДиапазонОписание
addItemsSingle строка«No»«Yes»|»No»При запуске клиента, элементы каждой группы можно добавлять по одному или все вместе. Эта запись определяет добавление элементов в группу:[opc_server1]addItemsSingle = «Yes»Добавляет элементы в группу в одиночном режиме. При значении «No» (по умолчанию), все элементы добавляются в группу вместе. В случае одновременного добавления всех элементов, запуск клиента осуществляется быстрее, в противном случае — существуют определенные проблемы с данной настройкой. Если не выбран соответствующий параметр в файле конфигурации, данные добавляются сразу.Примечание.Информация об отладке «-dbg 2» выдает данные о режиме в средство просмотра журналов.
browseOnStartстрока«Yes»«Yes»|»No»Если эта конфигурационная запись не задана или задана с помощью «browseOnStart = yes» в файле конфигурации, после каждой остановки или повторного запуска клиента осуществляется поиск в адресном пространстве, а элементы сервера записываются во внутреннюю точку данных сервера («_OPCServer» -> «_ETM.ItemIds»).Если запись «browseOnStart = No», после запуска клиента информация во внутреннюю точку данных сервера не записывается. Просто указывается: «no browse info available» («нет доступной для отображения информации»).
«enableHierarchicalBrowsing»строка«No»«Yes»|»No»Просмотр адресного пространства правильно функционирует с данной записью только при наличии иерархической структуры сервера.Можно установить запись[opc_server1]enableHierarchicalBrowsing = «Yes»в конфигурационном файле. В случае отсутствия записи, используется простой просмотр.Использование простого или иерархического отображения можно также изменять, во время работы драйвера, с помощью внутренней точки данных «HierarchicalBrowsing» (конфигурационная запись сохраняется в этой точке данных при запуске драйвера). С помощью внутренней точки данных «GetItemIds» можно инициировать просмотр во время выполнения программы.Примечание.Эта опция не подразумевает иерархическое отображение данных в «КАСКАД Цифра».
watchdogGroup string int int «»<Группа сторожевого таймера> <множитель: >= 1> <действительно для сброса>Каждая группа сторожевого таймера содержит только один элемент и группы ожидают, что их элементы отсылают значение каждые n секунд (расчет интервала осуществляется исходя из второго параметра конфигурационной записи и фактической частоты обновления OPC группы (в миллисекундах)):множитель * фактическая частота обновленияПример[opc_server1]watchdogGroup = «ABB_Watch” 3 10 Примечание.»ABB_Watch» — это группа сторожевого таймера.Ожидаемый интервал перехода n: 3 (mult) (множитель) * 1000 (фактическая частота обновления) = 3000 мсекФактическая частота обновления отображается в соответствующей точке данных OPC группы.Если, например, счетчик используется в периферийном устройстве, необходимо задать время повышения меньше 3000 мсек.Минимальное значение множителя mult — 1 миллисекунда.Примечание.Если элемент группы сторожевого таймера не отправляет значение в течении 3*n миллисекунд, группа задает бит «AllItems Invalid» («Все элементы неверны»).Если срабатывание сторожевого таймера обусловлено отсутствием получения сигнала сторожевого таймера, драйвер не выполняет сброс сторожевого таймера при получении первого сигнала, а сбрасывает его только после беспрерывного получения сигналов сторожевого таймера на протяжении, как минимум, «validToReset» секунд. Если этот период (как в примере) равен 10 секундам, а клиент получает сигналы только на протяжении 8 секунд, он выполняет сброс внутреннего счетчика и начинает сначала.Эта функция внедрена во избежание постоянных установок и сбросов сторожевого таймера (дрожание).Существуют дополнительные ограничения групп сторожевого таймера:Если предоставляемая сервером частота обновления меньше интервала сторожевого таймера, группа уведомить об этом путем установки состояния «AllItems Invalid».Группы сторожевого таймера — это всегда постоянные группы. Определение в файле конфигурации группы сторожевого таймера имеет преимущество над непостоянной группой.Группы сторожевого таймера принимают только один элемент, так как они контролируют только одно подключение.Создание новой группы сторожевого таймера во время выполнения программы не представляется возможным, необходим перезапуск клиента.В случае резервированной системы, фактическое значение элемента не имеет значения, так как оно может быть перезаписано в пассивной системе активной системой.Примечание.Тип точки данных «_OPCGroup» содержит элемент точки данных типа bool, истинное значение которого задается группой, если группа является группой сторожевого таймера. Описанный выше механизм также можно использовать для элементов, не отсылающих значения спонтанно.Напр., сценарий запускает обновление или операцию считывания для элемента в этой группе каждые n-2 секунд, а группа фиксирует полученные значения. Также, в случае получения недостаточного количества значений, задается «AllItems Invalid» и, следовательно, фиксируется ошибка соединения. (Внимание: процессы считывания должны выполняться в отношении УСТРОЙСТВА, в противном случае этот механизм не будет функционировать, что обусловлено наличием постоянно доступных кэшированных значений.) Внимание!В случае использования более одной группы сторожевого таймера, записи следует устанавливать поочередно.
«hierarchySeparator»строка«.»Эта запись определяет разделитель. Если этот символ находится в имени элемента, элемент делится на дополнительный подуровень в иерархическом отображении.ПримерМожно установить запись[opc_server1]hierarchySeparator = «/»в файле конфигурации, например, для Tag22/test results:Tag22testПримечание.Так как в именах элементов некоторых OPC серверов содержатся точки, в конфигурационной записи необходимо предусмотреть знак, который не указан в имени элемента. Это необходимо выполнить для правильного отображения элементов.
«setInvalidForConnLoss»bool00|1Клиент OPC имеет возможность установки неверного бита ЭТД (атрибут «_auth_inv») всех входных или входных/выходных адресов, при потере подключения к OPC серверу или же при невозможности установления подключения к нему.Неверные биты сбрасываются при последующем получении действительных значений.Внимание!Неверные биты не устанавливаются при завершении работы OPC клиента. Эту функцию можно устанавливать для каждого сервера индивидуально путем установки конфигурационной записиsetInvalidForConnLoss = 1в сегменте файла конфигурации соответствующего OPC сервера (напр., [opc_ServerX]). Примечание.Значение по умолчанию этой конфигурационной записи равно 0, т.е. установка неверного бита не выполняется.
srcTimeCheckModeвнутр.00 — 2Данные с временной меткой, которая находится за пределами определенного временного диапазона, могут регистрироваться в файле журнала или игнорироваться. Поэтому, существуют три конфигурационные записи:srcTimeCheckMode, srcTimeMaxBefore, srcTimeMaxBehind«srcTimeCheckMode» — это режим проверки исходного времени:0 = без проверки1 = только сообщение об ошибке2 = сообщение об ошибке и данные игнорируются
«srcTimeMaxBefore»float120>= 0Максимально допустимая разница во времени, если значения исходного времени раньше значений времени «КАСКАД Цифра» (в секундах).
«srcTimeMaxBehind»float3600>= 0Максимально допустимая разница во времени, если значения исходного времени позднее значений времени «КАСКАД Цифра» (в секундах).
«nonpermanentKey» строка«»Непостоянные OPC группы — это группы, чьи OPC элементы регистрируются на OPC сервере только при необходимости.С помощью этих групп можно избежать ограничений OPC сервера, относящихся к количеству зарегистрированных элементов. Элементы непостоянных групп регистрируются только на сервере, если значение должно записываться или если пользовательский интерфейс или сценарий CTRL локальной или распределенной системы имеет прямую функцию «dpConnect()» с соответствующими ЭТД.Т.е., например, элементы регистрируются только тогда, когда соответствующий ЭТД отображается на панели. При закрытии панели, регистрация элементов на сервере отменяется.Непостоянные группы должны использоваться только при наличии ограничения, касающегося количества элементов на сервере, так как регистрация и отмена регистрации могут стать причинами увеличения нагрузки во время выполнения программы.Кроме того, архивированные элементы или элементы обработки алармов могут не добавляться в непостоянные группы, так как они доступны только для чтения при указанных выше условиях. «nonpermanentKey» — это префикс непостоянных групп. Для обращения такого поведения, можно использовать другую конфигурационную запись («invertPrefix»).[opc_ABB]nonpermanentKey = ”PERMANENT”invertPrefix = ”yes”
«invertPrefix»строка«No»«Yes»|»No»Инвертирует поведение постоянных и непостоянных групп, если «invertPrefix = yes».Пример[opc_ABB]enableHierarchicalBrowsing = «Yes»nonpermanentKey = «PERMANENT»invertPrefix = «Yes»
«enableCALLR»строка«No»«Yes»|»No»Эту запись можно использовать для подключений к Festo и WSK (не входят в пакет стандартной программы «КАСКАД Цифра»).Если сервер расширен интерфейсами CALL-R, информация об этом предоставляется клиенту посредством этой записи. Элементы, добавленные в группы, впоследствии создаются клиентом на сервере с помощью «ICallrItemConfig::CreateCallrItems».Примечание.Если параметр не задан, используется значение по умолчанию «No».
«enableAddrBrowsing»строка«Yes»«Yes»|»No»Данная запись восстанавливает или предоставляет право направлять запросы в элементы, сконфигурированные в сервере.Примечание.Как правило, значение записи — «Yes».Если параметр не задан, используется значение по умолчанию «Yes».
«ioTimeout»число без знака2000> 0Драйвер осуществляет вызов «readData», «writeData» и «refreshData», т.е., считывание, запись и общий запрос, в одном потоке во избежание блокировки сервера.Эта запись определяет временной диапазон, в миллисекундах, на протяжении которого осуществляется вызов. В случае вызов не был сделан в данном временном диапазоне, предполагается блокирование OPC сервера и остановка потока. Блокировка сервера может возникать в случае ошибки ПО сервера OPC или же в случае если для запроса необходимо больше времени, нежели это предполагалось. Поэтому, сначала необходимо попытаться увеличить время ожидания для проверки необходимости большего количества времени для запроса. Например, время ожидания можно увеличивать, если известно, что подключение к серверу очень медленное.Формат времени — в миллисекундах. Если параметр недоступен, используется значение по умолчанию 2000 мс.
«sendNoValueForQuality»строка«»00000000 —  11111111; ????????Значение этой строки должно иметь 8-цифровую строку следующего вида: «1100????».1 означает: запись в этой точке должна быть равна 1.0 означает: запись в этой точке должна быть равна 0.Любой другой символ означает, что данный бит не принимается во внимание. Значения, полученные от OPC сервера и которые содержат это, указанное здесь описание качества, не отсылаются менеджеру событий. В этом случае, установку неверного бита выполняет только драйвер, т.е. старое значение в точке данных остается неизменным.Пример:sendNoValueForQuality = «00??????»Для одного сервера можно задать несколько записей этого типа.
«vtEmptyArrayRead»bool00|1Некоторые OPC сервера не допускают явный выбор типа OPC клиентом для типов данных «array». Если эта запись имеет установленное значение, равное 1, OPC клиент регистрирует массив OPC элементов с типом «VT_EMPTY». Т.е., клиент не запрашивает определенный тип, который, как правило, извлекается из типа ЭТД и типа преобразования конфигурационного элемента адреса.   Более того, OPC клиент имеет возможность принимать массив данных, в котором индекс массива начинается с 1, вместо 0.   Внимание: пользователь несет ответственность за правильность выбора типа преобразования конфигурационного элемента адреса, так как преобразование типа в OPC сервере не выполняется.
«gaBitOnStart»строка«Yes»«Yes»|»No»Если элемент объявлен на OPC сервере, сервер отсылает сообщение обратного вызова (в качестве спонтанного отклика). В этом случае, он рассматривается как общий запрос. Это применяется только если время объявления рассматриваемой OPC группы активно и включены обратные вызовы. (также см. Панель группы OPC). С помощью данной конфигурационной записи можно определять необходимость наличия бита общего запроса в первом обратном вызове. Возможные значения: «Yes»/»No», по умолчанию: «Yes».ПримерgaBitOnStart = «No»ПримерВозможные записи в файле конфигурации клиента ОРС:[opc]#server = sym. Servername ProgIDserver = «DemoServ1» «FactoryServer.Sample.1″server = «DataServ1» «FooMachine/OPC.SybCom.1″# Postfix für redundante Systeme# reduPostfix = «_2″[opc_DemoServ1]enableCALLR = «No»enableAddrBrowsing = «Yes»[opc_DataServ1]enableCALLR = «Yes»enableAddrBrowsing = «Yes»После прочтения файла конфигурации клиент запускает 2 сервера: FactoryServer.Sample.1 запускается локально и не является сервером CALL-R. OPC.SybCom.1 запускается дистанционно на компьютере FooMachine и является сервером CALL-R. Поскольку данная система не имеет резервирования, запись по reduPostfix помечается («#» в начале). Клиент может обрабатывать не более 10 сообщений на один рабочий процесс при возникновении такого количества. Оба сервера могут осуществлять поиск адресов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *