1. Людино-машинні інтерфейси та SCADA
Підсистема
введення/виведення.
OPC
автор і лектор: Олександр Пупена (pupena_san@ukr.net)
зворотній зв’язок по курсу: Інтернет-форум АСУ в Україні (www.asu.in.ua)
13.10.2020 1
3. 3
Передумови виникнення ОРС
Вибір іншої промислової мережі, яка б підтримувалась з боку SCADA та контролеру.
Написання спеціального драйверу, якого не існує в SCADA, для забезпечення зв’язку з
контролером.
Заміна частини одних контролерів іншими, для яких є драйвери зв’язку.
Використання шлюзів для промислових мереж.
Використання “універсального драйверу” зі стандартним інтерфейсом.
SCADA X
драйвер
ЛОМИКОНТ
Modbus MPI
Підключення декількох контролерів до SCADA-
програми
"Сеть
ЛОМИКОНТ"
M340 S7-300 Л-110
ПК
драйвер
Modbus
драйвер
S7-MPI
Варіанти способів інтеграції програмних продуктів з засобами автоматизації різних виробників на прикладі
SCADA.
4. 4
Стандарти ОРС
OPC DA (Data Access) – специфікація доступу до даних реального часу;
OPC AE (Alarms & Events) – для реалізації задач попереджувально-аварійних сигналізацій;
OPC HDA (Historical Data Access) – для реалізації задач ведення архіву та доступу до архівних даних;
OPC DX (Data eXchange) – для безпосереднього обміну між ОРС-серверами;
OPC XML – для обміну даними через інтермережі за допомогою структур XML на базі WEB-сервісів та SOAP;
OPC Batсh – для реалізації управління рецептурними задачами.
OPC UA (United Architecture) – самий новий платформо-незалежний стандарт, який об’єднує функції всіх наведених
вище специфікацій, але функціонує не на базі СОМ а WEB-сервісах .
OPC A&E Client
Alarm Management
OPC HDA Client
Trend Display
OPC A&E Server OPC HDA Server
COM/DCOM
OPC DA Client
SCADA
COM/DCOM
OPC DA Server OPC DA Server
PLCPLC DCSDCS
залежні від
виробника
Специфікації ОРС.
OPC – OLE For Process Control
- базуються на СОМ: OPC DA, AE, HDA, DX, Batch
Перші версії
Нові версії
OPC – Open Platform Communications
- базуються на WEB технологіях HTTP/XML/SOAP а не на
СОМ
Розробник
OPC Foundation – некомерційна організація заснована групою
всесвітньо-відомих компаній виробників ПТЗ автоматизації, що
розвиває та підтримує стандарти (www.opcfoundation.org)
Архітектура
Клієнт-Серверна архітектура, мультисерверність та
мультиклієнтність
5. 5
Функціонування ОРС DA з точки зору інтегратора
SCADA програма "SamplSCADA"
Функціонування ОРС з точки зору інтегратора
змінні реального часу SCADA
драйвер для
X
драйвер для
Y
змінні реального
часу OPC
драйвер для Z
ОРС-Сервер "Sampl.OPC"
Інтерфейс ОРС
ПК
ПЛК1 ПЛК2
1
ПЛК3
1
ПЛК4
31
змінні реального
часу OPC
ОРС-Сервер
"Exmpl.OPC"
драйвер для Q
Інтерфейс ОРС
драйвер ОРС Client
Для реалізації зв’язку через ОРС DA:
• Налаштувати OPC-Сервер за допомогою спеціалізованої програми-конфігуратора: створити всі необхідні змінні
сервера, тобто дати їм ім’я (ItemID) та вказати джерела даних в ПЛК, на які вони посилаються.
• В SCADA-програмі вказати:
• назву ОРС-Сервера, з яким необхідно зв’язатися (ProgID). У нашому прикладі це будуть два сервери
"Sampl.OPC" та "Exmpl.OPC". Інколи SCADA надає можливість вибору ProgID зі списку зареєстрованих
ОРС-Серверів.
• для вибраної змінної в якості джерела даних вказати ім’я на ОРС-Сервері, тобто ItemID, що був
створений на 1-му кроці. Як правило ItemID вибирається зі списку, який надає Browser на стороні ОРС-
Клієнта.
6. 6
Функціонування ОРС DA з точки зору інтегратора (Приклад)
Citect
Схема обміну даним SCADA Citect з використанням ОРС.
Temperat
ure
Modbus RTU
Schneder-Aut.OFS
ПК
Pressure
VIPA.OPCServer
MPI
Інтерфейс ОРС
VIPA
200
TSX Micro
PLC2 PLC1
%MW100 MW100
Інтерфейс ОРС
драйвер ОРС Client
T1 P1
Конфігурування ОFS
Конфігурування VIPA-OPC.
7. 7
Функціонування ОРС DA з точки зору інтегратора (Приклад)
Citect
Схема обміну даним SCADA Citect з використанням ОРС.
Temperat
ure
Modbus RTU
Schneder-Aut.OFS
ПК
Pressure
VIPA.OPCServer
MPI
Інтерфейс ОРС
VIPA
200
TSX Micro
PLC2 PLC1
%MW100 MW100
Інтерфейс ОРС
драйвер ОРС Client
T1 P1
Створення в Citect IODevices, прив’язаних до OPC-
серверів .Створення в Citect Variable Tags .
9. 9
Принципи функціонування ОРС DA. Модель взаємодії.
SCADA
ПЛК %MW100
%MW101
%MW102
%MW103
OPC Client
435,45 438,49
Group 1
Item1
Item2
Group 2
Item3
Item4
драйвери зв’язку
дані
змінна1
змінна2
змінна3
змінна4
конфігуратор
OPC
конфігураційні
дані
Прикладна програма
X
Group 3
Item5
Item6
OPC Server
438,49435,45
OPC Client
Принципи функціонування
ОРС DA
ПК
VAR1
VAR2
VAR3
VAR4
OPC Server – прикладна програма, яка
надає доступ до обєктів через ОРС
інтерфейси
OPC Client – прикладна програма, яка
користується обєктами ОРС Серверу
через ОРС інтерфейс
OPC ProgID – символьний ідентифікатор
програми ОРС Серверу
OPC Item – обєкт ОРС Серверу, що
асоціюється з джерелом даних
OPC ItemID – унікальний в межах серверу
ідентифікатор джерела даних
Value – властивість OPC Item що
асоціюється зі значенням джерела даних;
TimeStamp – властивість OPC Item що
асоціюється з часом останнім
відновлення;
Quality - властивість OPC Item що
асоціюється з якістю джерела даних;
OPC Group – обєкт Серверу, який
призначений для виконання групових
операцій з OPC Item, належить Клієнту
OPC Browser – обєкт Серверу, який
дозволяє проводити навігацію по простору
імен ItemID
10. 10
Принципи функціонування ОРС DA.
Механізми читання та запису даних процесу
Підписка
ОРС-client
Виклик
myGroup.IsSubscribed
myGroup_DataChange()
myGroup_AsyncReadComplete()
myGroup_DataChange()
ОРС-server
синхронне читання
myGroup.AsyncRead()
ОРС-client ОРС-server
асинхронне читання
періодичне читання з оповіщенням
Відповідь
Виклик
Відповідь
Оповіщення
Оповіщення
ОРС-client ОРС-server
myGroup.SyncRead()
Способи читання OPC-
Item в ОРС-Group
ОРС client
Виклик
myGroup_AsyncWriteComplete()
ОРС server
синхронний запис
myGroup.AsyncWrite()
ОРС client ОРС server
асинхронний запис
Відповідь
Виклик
Відповідь
myGroup.SyncWrite()
Способи запису OPC Group
11. 11
Ідентифікація даних ОРС. ItemID
OPC ItemID – унікальний в межах серверу ідентифікатор
джерела даних, правила найменування не визначається
стандартом
OPC Browser – обєкт Серверу, який дозволяє проводити
навігацію по простору імен ItemID
PLC_Difuz
Tag
Tag
Tag
F_vyrobn
F_recyrk
F_300
F_120
T_kolon
T_oshpar
F_sp
F_value
F_Kp
root(корінь)
branch(гілка)
leave(лист) -
Item
ItemID="PLC_Difuz.F_recyrk.F_value"
OPC Browser.
Простір імен ItemID може бути доступний у вигляді:
- списку (flat)
- ієрархічне дерево (hierarchical)
12. 12
Робота з віддаленим ОРС Сервером
SCADA
ПЛК2
драйвери зв’язку
OPC Server
DCOM
TCP/IP
TCP/IP
DCOM
ПЛК1
OPCServer2
OPC Client
драйвери зв’язку
OPC Server
OPCServer1
ПЛК3
драйвери зв’язку
OPC Server
TCP/IP
DCOM
OPCServer3
DCOM DCOM
ПЛК4
ПК1
ПК2 ПК3
192.168.1.1
192.168.1.2 192.168.1.3
Приклад з’єднання трьох пристроїв через DCOM
Послідовність
- на вузлах серверу ОРС Серверу та ОРС Клієнту
налаштовується DCOM та брандмауери ;
- в ОРС Клієнті крім ProgID вказується Server Node
Вимоги
- вузли ОРС Серверу та ОРС Клієнту в межах одного
домену або робочої групи
- на вузлах запущені необхідні служби (RPC, COM …)
- на вузлах налаштовані брандмауери
13. 13
Область застосування ОРС
SCADA
ПЛК1
драйвери зв’язку
OPC Server
SCADA
OPC Client
ПЛК2
драйвери зв’язку
OPC Server
DCOM
ПЛК3
SCADA
ПК1
ПК2 ПК3
MES-
програма
OPC Client
ПК4
Excel
OPC Client
ПК5
Приклад використання ОРС в якості моста
SCADA програма "SamplSCADA"
приклад «класичного» використання ОРС
змінні реального часу SCADA
драйвер для X драйвер для Y
змінні реального
часу OPC
драйвер для Z
ОРС-Сервер "Sampl.OPC"
Інтерфейс ОРС
ПК
ПЛК1 ПЛК21 ПЛК31 ПЛК43
1
змінні реального
часу OPC
ОРС-Сервер
"Exmpl.OPC"
драйвер для Q
Інтерфейс ОРС
драйвер ОРС Client
14. Недоліки OPC DA
• на COM:
• тільки Windows/тільки PC
• складності DCOM
• небезпечний (чорний ящик)
• не прозорий для Інтернета/IIoT
• проблеми адресації (немає чітких правил,
адресація тільки всередині сервера, глибока
ієрархія…)
• декілька різних специфікацій (DA, HDA,
AE, Batch)
14
16. Вступ в OPC UA
Єдиний стандарт для різних задач:
• інформаційні моделі:
• DA - Data Access
• AC - Alarms & Conditions
• HA - Historical Access
• Prog - Programs
• свої
• розширення
18. Об’єктна модель
• Client-Server
• Сервер надає сервіси, при
підключенні говорить які
доступні
• данні і сервіси доступні через
об'єкти
• об'єкти мають методи,
властивості, події …
• об'єкти і їх складові пов'язані в адресні простори (Address
Space)
19. Адресний простір
Object - folder
Object
Data Variable
Method
Property
• об'єкти і їх частини – вузли
• вузли ідентифікуються в адресному просторі
21. Модель вузла: атрибути
Атрибути:
• не видимі (не представлені) як
вузол в адресному просторі
• елементарні дані про вузол
• набір атрибутів незмінний
• набір залежить від класу
об'єкта
• зчитуються/пишуться
• мають: ID, ім'я, опис, тип даних,
індикатор
22. Класи вузлів
• Object (обєкт) – аналогія екземпляра в ООП
• Variable (змінн) – зміст об'єкта
• Method (Метод)
• View (прдеставлення) – організація свого виду адресного простору
• ObjectType (тип обєкту) – аналогія класу об'єкта в ООП
• VariableType (тип змінної) – означує набір властивостей для змінної
• ReferenceType (тип посилання)
• DataType (тип даних)
• означує
• набір атрибутів
• типів посилань
• не розширюються (не
можна добавити свій)
23. Object
• Контейнер (посилань) для методів, змінних,
властивостей, інших об'єктів; сам не містить
значення
• може ініціювати події (для ідентифікації події)
24. Variable
• Представляють зміст об'єкта (об'єкт не має
атрибута Value)
• Читання, запис, підписка
• Типи Variables:
• Properties (Властивості)
• DataVariables (Змінні даних)
25. Variable - DataVariable
• представляють зміст об'єкту
• можуть включати (посилання) інші об'єкти і
властивості
26. Variable - Property
• для опису об'єкта/змінної
• добавляються за необхідності (атрибути добавити не
можна)
• не можуть мати вкладених властивостей
28. Method
• для дії над об'єктом (в контексті об'єкта)
• приймають аргументи
• повертають результат
• повинні виконуватися швидко, в іншому випадку -
Programs
30. Ідентифікація вузлів OPC UA
NodeID – унікальний ідентифікатор вузла на сервері:
• Namespace Index
• Identifier Type
• Identifier
31. Namespace Index
• посилається по номеру на URI простору імен
NS
• в межах NS ID унікальні
• глобальні URI або локальний сервер
• список URI зберігається в таблиці Namespaces,
індекс списку и є Namespace Index
• таблиці і індекси можуть змінюватися від сесії
до сесії, 0 – завжди OPC UA
32. Ідентифікатори
Identifier type – формат і тип даних NodeID:
• Numeric, String, GUID, opaque (ByteString)
Identifier – сам ідентифікатор
33. Ідентифікатори: XML-нотація
<namespace index> - індекс простору імен, якщо 0 можна не писати
<identifier type>:
• i – NUMERIC (UInteger);
• s – STRING (String);
• g – GUID (Guid);
• b – OPAQUE (ByteString)
<identifier> - у форматі string
ns=2;s=MyTemperature
namespace index 2, string
identifier
i=2045
namespace index 0, numeric
identifier
ns=1;g=09087e75-8e5e-499b-
954f-f2a9603db28a
namespace index 1, GUID
identifier
ns=1;b=M/RbKBsRVkePCePcx24o
RA==
namespace index 1,
Opaque/ByteString identifier
38. Endpoints
• усі параметри підключення в кінцевих точках (endpoint)
• URL: протокол + адреса
• Security Policy – алгоритм безпеки і размір ключа
• Message Security Mode – рівень безпеки для повідомлень
• User Token Type – тип автентифікації
• Discovery Server (LDS) – для означення серверів
• OPC UA сервер надає як
мінімум одну кінцеву точку
без захисту, що дає
перелік доступних кінцевих
точок
LDS - opc.tcp://targetHost:4840
41. Тестові сервери
node-opcua wiki
publicly available OPC UA Servers and
Clients
http://opcuaserver.com
Name Endpoint URL Vendor Vendor web site
Local Discovery Server opc.tcp://opcuaserver.com:4840
OPC
Foundation
https://opcfoundation.or
g
OPC UA C++ Demo
Server
opc.tcp://opcuaserver.com:48010
Unified
Automation
https://www.unified-
automation.com
OPC UA Demo
Weather Server
(provides real weather
data with 15 minute
rate for majority of
countries and cities
around world)
opc.tcp://opcuaserver.com:48484
Open source project at
GitHub