OpenSCADAWiki: Home Page Uk/Doc/OPCUA ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of HomePageUk/Doc/OPCUA from 2016-01-15 15:00:30..

Модулі "OPC_UA", підсистем "Збір даних" та "Транспортні протоколи"

Параметр Модуль 1 Модуль 2 Бібліотека
ID: OPC_UA OPC_UA libOPC_UA
Ім'я: OPC_UA OPC_UA Бібліотека реалізації OPC_UA у OpenSCADA
Тип: Збір Даних Протокол Бібліотека
Джерело: daq_OPC_UA.so daq_OPC_UA.so libOPC_UA.{h,cpp}
Версія: 1.6.2 1.6.6 1.0.1
Автор: Роман Савоченко
Опис: Надає реалізацію OPC-UA клієнтського сервісу. Надає реалізацію OPC-UA сервісу серверу. Надає реалізацію протоколу OPC-UA в частині клієнта та серверу, у вигляді окремої бібліотеки.
Ліцензія: GPL2 GPL2 LGPL3

Contents

Вступ

OPC (OLE for Process Control) — це сімейство протоколів та технологій, які надають єдиний інтерфейс для управління об'єктами автоматизації та технологічними процесами. Створення та підтримку специфікацій OPC координує міжнародна некомерційна організація OPC Foundation, яку створено у 1994 році провідними виробниками засобів промислової автоматизації.


У зв'язку з тим, що значний вплив у організації OPC Foundation має корпорація Microsoft, протоколи OPC до останнього часу були одноплатформними та закритими, з причини прив'язки до закритих технологій MS Windows. Однак, із недавніх пір, організацією OPC Foundation були створені такі багатоплатформні рішення, як OPC XML-DA та OPC-UA. Найбільший інтерес із них представляє OPC-UA, як уніфікуючий всі протоколи ранніх версій у межах відкритих та багатоплатформних технологій.


Цей модуль реалізує підтримку інтерфейсу та протоколу OPC-UA як у вигляді клієнтського сервісу, так і у вигляді серверу OPC-UA. Клієнтський сервіс OPC-UA реалізується однойменним модулем підсистеми "Збір даних", а сервер реалізується модулем підсистеми "Протоколи". Весь код реалізації цим модулем специфіки протоколу OPC-UA було винесено, за проханням користувачів, у окрему бібліотеку, яка розповсюджується під ліцензією LGPL3.


У поточній версії цих модулів та бібліотеки реалізуються бінарна частина протоколу та базові сервіси у небезпечному режимі та безпечних режимах політик "Base128Rsa15" та "Base256". Надалі планується розширення модуля для роботи через HTTP/SOAP та реалізації решти сервісів OPC-UA, за потребою.


Хоча протокол OPC-UA і є багатоплатформним, його специфікація та SDK не є вільно-доступними, а надаються тільки членам організації OPC Foundation. З цієї причини реалізація даних модулів зіткнулася зі значними перепонами та проблемами.


По перше, протокол OPC-UA складний та реалізація його взагалі без специфікації дуже працемістке. З цієї причини роботи над даними модулями тривалий час не починалися, та тільки завдяки спонсорської допомоги однієї із організацій-члену OPC Foundation проект OpenSCADA отримав документацію специфікації. При цьому SDK та вихідні тексти ANSIС-API протоколу OPC-UA отримано не було з причини несумісності їх ліцензії із GPL та, як наслідок, потенційної загрози порушення ліцензії при роботі із вихідними текстами, що могло призвести до подальших юридичних проблем при вільному розповсюджені цих модулів.


По друге, навіть наявність специфікації не дозволяє вирішити низку технічних питань без прикладів реалізації та можливості перевірки на робочому прототипі клієнта та сервера OPC-UA. Наприклад, саме технічні особливості реалізації алгоритмів симетричного шифрування та отримання ключів для них не дозволили реалізувати підтримку політик безпеки одразу.


Для налагодження функціювання модулів використовувалося демонстраційне ПО фірми Unified Automation, у складі OPC-UA клієнту — UAExpert та серверу — "OPC-UA Demo Server", із пакету SDK. У зв'язку із постійним розвитком самого клієнту "UAExpert", у плані інтерпретації специфікації OPC-UA, нові його версії часто мають проблеми при роботі із сервером OPC-UA від OpenSCADA. В цілому результати сумісності роботи із клієнтами та серверами різних виробників можна отримати у додатку.

1. Протокол OPC-UA

OPC-UA — це платформо-незалежний стандарт, за допомогою якого системи та пристрої різного типу можуть взаємодіяти шляхом відправки повідомлень між клієнтом та сервером через різноманітні типи мереж. Протокол підтримує безпечну взаємодію шляхом валідації клієнтів та серверів, а також протидії атакам. OPC-UA визначає поняття Сервіси, які сервери можуть надавати, а також сервіси, які сервер підтримує для клієнту. Інформація передається у вигляді типів даних, визначених OPC-UA та виробником, крім того сервера визначають об'єктну модель, для якої клієнти можуть здійснювати динамічний огляд.


OPC-UA надає поєднання інтегрованого адресного простору та сервісної моделі. Це дозволяє серверу інтегрувати дані, порушення (Alarms), повідомлень (Events) та історію у цьому адресному просторі, а також надавати доступ до них за посередництвом інтегрованих сервісів. Сервіси також надають інтегровану модель безпеки.


OPC-UA дозволяє серверам надавати для клієнтів визначення типів, для доступу до об'єктів із адресного простору. OPC-UA допускає надання даних у різних форматах, включаючи бінарні структури та XML-документи. Через адресний простір клієнти можуть запитати у сервера метадані, які описують формат даних.


OPC-UA додає підтримку множинної зв'язності між вузлами замість простого обмеження ієрархічністю. Така гнучкість у комбінації із визначенням типів дозволяє застосовувати OPC-UA для вирішення задач у широкій проблемній області.


OPC-UA спроектовано для забезпечення надійної видачі даних. Основна особливість всіх OPC серверів — спроможність видавати данні та повідомлення.


OPC-UA спроектовано для підтримки широкого діапазону серверів, від простіших ПЛК до промислових серверів. Ці сервери характеризуються широким спектром розмірів, продуктивності, платформ виконання та функційної ємкості. Відтак, OPC-UA визначає вичерпну множину можливостей, та сервер може імплементувати підмножини цих можливостей. Для забезпечення сумісності OPC-UA визначає підмножини, іменовані Профілями, які сервери можуть вказувати для погодження. Клієнти можуть згодом виконувати огляд профілів серверу та прокидати взаємодію із сервером, основаним на профілях.


OPC-UA специфікація спроектована як ядро у шарі, ізольованому від підлеглих комп'ютерних технологій та мережевих транспортів. Це дозволяє OPC-UA при потребі розширятися на майбутні технології без відторгнення основи дизайну. На цей час специфікацією визначено два способи кодування даних: XML/text та UA Binary. Додатково, визначено два типи транспортного шару: TCP та HTTP/SOAP.


OPC-UA спроектовано як рішення для міграції із OPC клієнтів та серверів, які основані на Microsoft COM технологіях. OPC COM сервери (DA, HDA та A&E) можуть бути легко віддзеркалені у OPС-UA. Виробники можуть самостійно здійснювати таку міграцію або ж рекомендувати користувачам використовувати обгортки та конвертори між цими протоколами. OPC-UA уніфікує попередні моделі у єдиному адресному просторі з єдиною множиною сервісів.

2. Модуль реалізації серверу

Модуль серверу містить код реалізації серверної частини OPC-UA — серверних сервісів, у частині специфічній для OpenSCADA, та використовуючи бібліотеку для OPC-UA специфічної частини. Для побудови OPC-UA серверу достатньо створити вхідний транспорт, за звичай це TCP-транспорт модуля Sockets, та обрати в ньому модуль даного протоколу, а також сконфігурувати хоча б один кінцевий вузол модуля протоколу, про що нижче.

2.1. Обслуговування запитів по протоколу OPC-UA

Вхідні запити до модуля-протоколу обробляються модулем у відповідності зі сконфігурованими кінцевими вузлами OPC-UA (EndPoints) (рис.1).


Кінцеві вузли протоколу. (60 Kb)
Рис.1. Кінцеві вузли протоколу.

Кінцевий вузол протоколу OPC-UA це фактично об'єкт серверу OPC-UA. Кінцеві вузли у OPC-UA можуть бути як локальними, так і віддаленими. Локальний кінцевий вузол призначено для надання ресурсів станції OpenSCADA за протоколом OPC-UA, в той-же час віддалені кінцеві вузли слугують для виконання як сервісу огляду доступних OPC-UA вузлів, так і для шлюзування запитів до віддалених станцій. У цій версії модуля підтримується тільки конфігурація локальних кінцевих вузлів.


Загальна конфігурація кінцевого вузла здійснюється на головній вкладці сторінки кінцевого вузла (рис.2) параметрами:


Головна вкладка сторінки кінцевого вузла. (127 Kb)
Рис.2. Головна вкладка сторінки кінцевого вузла.

3. Модуль збору даних

Модуль збору даних надає можливість опитування та запису атрибутів значення(13) вузлів типу "Змінна".

3.1. Об'єкт контролеру даних

Для додання джерела даних OPC-UA створюється та конфігурується об'єкт контролеру у системі OpenSCADA. Приклад вкладки конфігурації об'єкту контролеру даного типу зображено на рисунку 3.


Вкладка конфігурації об'єкту контролера. (130 Kb)
Рис.3. Вкладка конфігурації об'єкту контролера.

За допомогою цієї вкладки можна встановити:

 (2 Kb) Часто зустрічається ситуація, коли уточнена адреса є символьною, який у цій мережі не резолвиться, через некоректне налаштування серверу. У таких випадках потрібно залишити початкову IP-адресу або ім'я яке резолвиться у IP правильно.

З метою полегшення ідентифікації вузлів на віддаленій станції, а також вибору їх для вставки у об'єкті параметру контролеру, в самому об'єкту контролеру передбачено вкладку навігації за вузлам віддаленої станції "Огляд вузлів серверу", де можна пройтися за деревом об'єктів та ознайомитися з їх атрибутами (рис.4).


Вкладка "Огляд вузлів серверу" сторінки об'єкту контролеру. (121 Kb)
Рис.4. Вкладка "Огляд вузлів серверу" сторінки об'єкту контролеру.

3.2. Параметри

Модуль збору даних надає лише один тип параметрів — "Стандарт". Додатковим конфігураційним полем параметру даного модуля (рис.5) є перелік вузлів OPC-UA та поле навігації за вузлами OPC-UA у один рядок, для вставки обраних вузлів типу "Змінна" до визначеного переліку. Атрибут у цьому переліку записується наступним чином: {ns}:{id}.
Де:

ns — простір імен, числом; нульове значення може бути опущено;
id — ідентифікатор вузла, числом, рядком, рядком байт або GUID.

Приклади:

84 — кореневий вузол;
3:"BasicDevices2" — вузол базових пристроїв у просторі імен 3 та у вигляді рядка;
4:"61626364" — вузол у просторі імен 4 та у вигляді рядка байт;
4:{40d95ab0-50d6-46d3-bffd-f55639b853d4} — вузол у просторі імен 4 і у вигляді GUID.

Вкладка конфігурації об'єкту параметра. (99 Kb)
Рис.5. Вкладка конфігурації об'єкту параметра.

 (2 Kb) Вузли типу "Змінна" зі значенням у вигляді структури прочитати цілком зазвичай не можна тому потрібно її елементи вставляти до переліку вузлів читання окремо.


У відповідності із вказаним переліком вузлів виконується опитування та створення атрибутів параметру (рис.6).


Вкладка атрибутів параметру. (81 Kb)
Рис.6. Вкладка атрибутів параметру.

4. Бібліотека libOPC_UA

Ґрунтуючись на напрацюваннях цього модуля протокольний код OPC-UA було винесено до окремої бібліотеки та опубліковано під ліцензією LGPLv3. Такі дії виконано з метою надати можливість простого додання підтримки протоколу OPC-UA стороннім проектам. Бібліотека представлена двома файлами libOPC_UA.h, libOPC_UA.cpp; підтримується та міститься у складі цього модуля, тобто останню версію Ви можете завантажити тут: http://oscada.org/svn/trunk/OpenSCADA/src/moduls/daq/OPC_UA/libOPC_UA.


Бібліотеку, як і цей модуль, написано на мові програмування C++. Статичну діаграму класів, яка відображає архітектуру бібліотеки, приведена на рисунку 7. Згідно діаграмі класів бібліотеку виконано у просторі імен "OPC", а архітектурно її можна поділити на клієнтську "Client" та серверну "Server" частини, які успадковані від загального класу протоколу "UA". Крім безпосередньо класів протоколу "OPC-UA" бібліотека включає в себе набір функцій та класів для обробки або збереження даних протоколу, окремо з яких треба відзначити клас вузла мови XML "XML_N", використаний для уніфікації звернень до API бібліотеки.


Статическая диаграмма классов библиотеки libOPC_UA. (42 Kb)
Рис.7. Статична діаграма класів бібліотеки libOPC_UA.

Використання бібліотеки, в цілому, полягає у спадкуванні класу "Client" та/або "Server", згідно із функціями кінцевої програми, та наступної реалізації віртуальних функцій властивостей клієнта/сервера, у контексті протоколу OPC-UA, а також транспортної частини комунікації, тобто підключення/відкриття до TCP-сокету та передачу/читання неструктурованого потоку даних. Наступні запити та обробка запитів даних (для серверу) здійснюється через виклик функції reqService(), запит до сервісу, та/або обробки віртуальної функції reqData() запиту до даних, тобто фактично інтеграція у модель даних додатку.


Розташувати тут посилання на API класів, на первинній мові — Англійській

4.1. Служебные объекты, функции и класс UA

Данные

Типы реализаций (enum — SerializerType):


Тип запроса открытия канала безопасности (enum — SC_ReqTP):


Режим безопасности сообщения (enum — MessageSecurityMode):


Тип аутентификации (enum — AuthTp):


Классы узлов (enum — NodeClasses):


Направление обзора (enum — BrowseDirection):


Возвратная метка времени (enum — TimestampsToReturn):


Доступ (enum — Access):


Элементы маски описания обзорного запроса (enum — RefDscrResMask):


Атрибуты узла (enum — AttrIds):


Состояние подписки (enum — SubScrSt):


Режимы мониторинга (enum — MonitoringMode):

Внешние функции

В библиотеку включен ряд внешних функция объекта TSYS? ядра OpenSCADA, для упрощения и унификации ряда внутренних операций:

Ошибка OPC (OPCError)

Объект ошибки "OPCError" является урезанной копией объекта "TError" ядра OpenSCADA.


Публичные методы:


Публичные атрибуты:

XML-тег (XML_N)

Объект "XML_N" является урезанной копией объекта XMLNode? ядра OpenSCADA.


Публичные методы:

Объект узла OPC-UA (NodeId)

Данные:
Типы данных (enum — NodeId::Type):


Публичные методы:

Корневой объект протокола OPCUA (UA)

Публичные методы:

Включенный объект параметров безопасности (SecuritySetting)

Публичные данные:


Публичные методы:

4.2. Основной объект клиента (Client->UA)

Применение: Прямо наследуется пользовательским объектом — клиент OPC-UA.


Публичные методы:


Защищённые атрибуты:

Включенный объект сеанса клиента (SClntSess)

Публичные данные:


Публичные методы:

4.3. Основной объект сервера (Server->UA)

Применение: Прямо наследуется пользовательским объектом — сервер OPC-UA.


Публичные методы:


Защищённые методы:

Включенный объект канала безопасности (SecCnl)

Публичные методы:


Публичные атрибуты:

Включенный объект сеанса (Sess)

Публичные методы:


Публичные атрибуты:

Включенный объект точки продолжения обзора (ContPoint)

Публичные методы:


Публичные атрибуты:

Включенный объект подписки (Subscr)

Публичные методы:


Публичные атрибуты:

Включенный объект элемента мониторинга (MonitItem)

Публичные атрибуты:

Включенный объект элемента значения (Val)

Публичные методы:


Публичные атрибуты:

Включенный объект конечной точки (EP)

Публичные методы:


Защищённые методы:


Защищённые атрибуты:

5. Приватні ключі та сертифікати

Для роботи клієнтської та протокольної частини OPC-UA потрібно створення та розташування приватного ключа та сертифікату у конфігурації об'єкту клієнта та сервера. У загальному випадку достатньо створення звичайного самопідписаного сертифікату та приватного ключа без пароля, однак для виключення попереджувальних повідомлень потрібно додати низку службових полів до сертифікату. Це можна зробити взявши файл конфігурації створення сертифікату та виконати наступну процедуру:

6. Зауваження

У процесі реалізації модулів підтримки OPC-UA було виявлено низку невідповідностей офіційного SDK зі специфікацією OPC-UA:

7. Додаток: Таблиця сумісності із реалізаціями OPC-UA інших виробників

Розташувати тут посилання на таблицю, на первинній мові — Англійській

Name and version Tested compatibility Notes
UAExpert 1.4 (client) Browse, Read, Write, Publish Stopped for publish about 20 seconds by wrong process an event filter rejecting of OpenSCADA, mostly for Status. Needs to implement into OpenSCADA the event's filters support.
kepware Browse, Read, Publish Specific value types OpcUa_IntAuto and OpcUa_UIntAuto for adaptive integer type selection, mostly for provide integer not fixed as int64.
B&R Embedded OPC-UA Server Browse, Read Fix the authenticate process by the server provides self specific identifiers to its. Fix the string of bytes wrong interpretation.
Wonderware System Platform (client) Browse, Read, Publish Strange error by the client "Incorrect information" for OpenSCADA "Variable" type nodes browse try. Not resolved yet.
IgnitionOPC_UA (server) Browse, Read
UAExpert 1.2, 1.3 (client) Browse, Read, Write, Publish

Посилання

Referring pages: HomePageUk/Doc
HomePageUk/Function
HomePageUk/Works/RoadMap


 
There are no files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]