paOpcUA – библиотека, обеспечивающая обмен по протоколу OPC UA в режиме сервера и/или клиента.
Каждый ПЛК, программируемый в Полигон, является OPC UA-сервером, так как Отладчик подключается к контроллеру как OPC UA-клиент. Поэтому присутствие библиотеки paOpcUA в проекте обязательно.
Преднастроенный OPC UA-сервер добавляется автоматически при выборе модуля из шаблона Модуль с отладчиком для контроллера в месте работы Фон, программа Debug.
Особенности реализации протокола OPC UA в Полигон приведены в Приложении Поддержка сервисов по спецификации OPC UA.
Для добавления библиотеки paOpcUA в проект следует:
Перейти в меню Окна/Проекты. В появившемся окне отобразится текущий проект и добавленные библиотеки.
Добавление библиотеки Нажать кнопку Открыть и перейти в папку с файлами библиотеки, которую необходимо добавить. Затем в выпадающем списке выбрать тип файла Библиотека Полигон 2 (*.ll2).
Добавление библиотеки paOpcUA в проект В окне появится файл библиотеки с расширением .ll2. Следует выбрать его и нажать Открыть.
Добавление библиотеки paOpcUA в проект
Добавленная библиотека отобразится в окне Проекты.
OPC UA-сервер (OpcUAServer)
Блок OpcUAServer обеспечивает реализацию сервера по протоколу OPC UA. Присутствие данного блока в проекте обязательно, так как Отладчик подключается к контроллеру как OPC UA-клиент.
Данный блок можно разместить только в Фоне.
На входы блока ip – IP-адрес контроллера и prt – локальный порт контроллера рекомендуется подавать SQL-запросы к соответствующим свойствам текущего модуля.
Запрос IP-адреса (prop_ip):
"<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_ip"</sql>"
Запрос номера порта (prop_debug_port):
<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_debug_port"</sql>
При добавлении циклических входов cip к OPC UA-серверу смогут подключаться только клиенты с указанным IP-адресом (в т. ч. Отладчик).
Назначение входов и выходов OpcUAServer
Элемент | Описание |
---|---|
Входы | |
ip | Локальный IP адрес (константный) |
prt | Локальный порт (константный) |
sdr | Сетевой стек, для ПЛК ОВЕН "/" (константный) |
st | Статус сервера в соответствии со спецификацией OPC UA (см. Part 5 – 12.6 ServerState) |
sl | Дополнительный статус сервера ServiceLevel в соответствии со спецификацией OPC UA (см. Part 4 – 6.6.2.4.2 ServiceLevel): 255 – ведущий 199 – ведомый |
max | Максимально разрешенное количество соединений (константный) |
cip | IP разрешенного подключения (циклический и константный) |
cpr | Приоритет подключения (циклический и константный) |
Выходы | |
st | Текущий статус сервера в соответствии со спецификацией OPC UA (см. Part 5 – 12.6 ServerState) |
cn | Количество активных соединений (сумма cnDbg, cnPA, cnOth) |
cnDbg | Количество соединений с Отладчиком среды разработки |
cnPA | Количество соединений с клиентами OpcUAClient |
cnOth | Количество соединений с другими клиентами |
cst | Статус соединения с разрешенным клиентом (циклический) |

OPC UA-сервер, таймерная часть (OpcUAServerTimer)
Блок OpcUAServerTimer обеспечивает возможность сбора данных для подписок OPC UA-сервера в таймере. Для этого необходимо добавить блок в место работы Таймер с минимальным размером таймерного промежутка. Данный блок можно разместить только в Таймере.
Блок OpcUAServerTimer должен встречаться в проекте только один раз независимо от того, сколько OPC UA-серверов добавлено в проект. После этого можно настраивать параметры сбора данных в подписке с дискретностью таймерного цикла. В частности, это можно использовать для отладки программы в представлении График. Надо учитывать, что при инициализации подписки клиентом OPC UA с дискретизацией, кратной таймерному промежутку, в контроллере выделяется память для хранения очереди накапливаемых значений.
Назначение входов/выходов:

enb – разрешение на работу блока;
subsN – количество подписок, обрабатываемых в таймере;
dpsN – количество данных
OPC UA-клиент (OpcUAClient)
Блок OpcUAClient обеспечивает реализацию одной подписки к серверу по протоколу OPC UA. Входы и выходы, которыми необходимо обмениваться с сервером необходимо добавить в раздел Данные внутри этого блока. Данный блок можно разместить только в Фоне.
На входы блока lip – IP-адрес контроллера и lprt – локальный порт контроллера рекомендуется подавать SQL-запросы к соответствующим свойствам текущего модуля.
Запрос IP-адреса (prop_ip):
"<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_ip"</sql>"
Запрос номера порта (prop_debug_port):
<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_debug_port"</sql>
Назначение входов и выходов OpcUAClient
Элемент | Описание |
---|---|
Входы | |
enb | Разрешение на работу блока: 0 – выключен; 1 – включен; 2 – в резерве |
wait | Таймаут ожидания ответа от сервера, мс (константный) |
lip | Локальный IP-адрес (константный) |
lprt | Локальный порт (константный) |
sdr | Сетевой стек, для ПЛК ОВЕН "/" (константный) |
rip | IP адрес сервера (константный) |
rprt | Порт сервера (константный) |
usr | Логин для доступа к серверу (константный) |
psw | Пароль для доступа к серверу (константный) |
pbl | Интервал работы подписки в мс (PublishingInterval) – периодичность работы подписки внутри сервера. Если pbl = 0, то сервер обрабатывает подписку каждый фоновый цикл (константный) |
lfc | Время жизни подписки в циклах (LifetimeCount) (константный) |
kac | Максимальное значение keep-alive счетчика в циклах (MaxKeepAliveCount) (константный) |
wcon | Отправлять значения выходов при установке соединения |
routs | Читать выходы |
cfg | Дополнительная конфигурация работы ![]() Начиная с
версии 901 библиотеки paOpcUA в блоке OpcUAClient отключен разрыв соединения в случае отсутствия некоторых данных
в сервере. Для возвращения старого поведения следует установить бит 0 на входе cfg в 1. |
buf | Подключение блоков BufSupEx из библиотеки paCore (циклический) |
Выходы | |
sts | Статус работы: 0 – нет обмена; 1 – обмен данными; 2 – в резерве, соединение установлено, значения выходов sst и ssl актуальные, обмена данными нет; 3 – в процессе установки соединения; 4 – в процессе разрыва соединения; 5 – сервер вернул ошибку (более подробную информацию программа печатает в консоль); 6 – внутренняя ошибка, перезапуск соединения; –1 – системная ошибка, невозможно выделить локальный сокет для установки соединения; –2 – системная ошибка, невозможно использовать локальный порт для установки соединения |
sst | Статус сервера в соответствии со спецификацией OPC UA (см. Part 5 – 12.6 ServerState) |
ssl | Дополнительный статус сервера ServiceLevel в соответствии со спецификацией OPC UA (см. Part 4 – 6.6.2.4.2 ServiceLevel): 255 – ведущий; 199 – ведомый |
sid | ID подписки |
ssn | Номер уведомления подписки |
rcnt | Количество принятых пакетов |
wcnt | Количество отправленных пакетов |

Управление блоками BufSup (UABufSups)
Блок UABufSups предназначен для подключения блоков BufSupEx из библиотеки paCore и записи/чтения данных. Для записи данного в файл BufSupEx клиенту необходимо записать значение во вход или выход dan. Прочитать текущее значение параметра из файла клиент может с выхода dan. Данный блок можно разместить только в Фоне.
Назначение входов/выходов:

enb – разрешение на работу блока;
buf – вход для подключения блоков BufSupEx из библиотеки paCore (циклический);
itr – выход для подключения блоков BufSupEx;
cnt – записано