Унифицированная архитектура OPC - OPC Unified Architecture

Унифицированная архитектура OPC (OPC UA) это машина к машине протокол связи за Индустриальная автоматизация разработан Фонд OPC. Отличительные характеристики:

  • На основе взаимодействия клиент-сервер
  • Сосредоточьтесь на взаимодействии с промышленным оборудованием и системами сбора и контроля данных.
  • Открыть - свободно доступный и реализуемый по лицензии GPL 2.0 [1]
  • Кроссплатформенность - не привязан к одной операционной системе или языку программирования
  • Сервис-Ориентированная Архитектура (SOA)
  • Присущая сложность - в сентябре 2020 года спецификация состояла из 3151 страницы в 15 документах.
  • Предложения безопасность функциональность для аутентификации, авторизации, целостности и конфиденциальности[2]
  • интеграл информационная модель, который является основой инфраструктуры, необходимой для интеграции информации, где поставщики и организации могут моделировать свои сложные данные в пространстве имен OPC UA, чтобы воспользоваться преимуществами богатой сервис-ориентированной архитектуры OPC UA. В настоящее время с OPC Foundation сотрудничает более 35 человек. Ключевые отрасли включают фармацевтический, нефть и газ, автоматизация зданий, промышленная робототехника, безопасность, производство и контроль процесса.

История

Хотя OPC UA разработан той же организацией, он значительно отличается от своего предшественника. Открытые платформенные коммуникации (OPC). Цель Фонда для OPC UA состояла в том, чтобы проложить путь от первоначального OPC коммуникационная модель (а именно Майкрософт Виндоус -только процесс обмена COM /DCOM ), что лучше отвечало бы возникающим потребностям Индустриальная автоматизация.[3]

После более чем трех лет работы над спецификациями и еще одного года для реализации прототипа в 2006 году была выпущена первая версия унифицированной архитектуры.

Текущая версия спецификации - 1.04 (22 ноября 2017 г.).[4]). Новая версия OPC UA теперь добавила публикацию / подписку в дополнение к инфраструктуре связи клиент / сервер.

Инновации

Хотя оригинальная привязка к COM /DCOM помог OPC чтобы хорошо распределять, у него было несколько недостатков:

  • Частые проблемы с настройкой DCOM;
  • Нет настраиваемых тайм-аутов;
  • Майкрософт Виндоус только;
  • Низкая безопасность;
  • Отсутствие контроля над DCOM (COM / DCOM - это своего рода черный ящик, разработчики не имеют доступа к источникам и поэтому им приходится иметь дело с ошибками или недостаточными реализациями).

Эти недостатки вместе с рядом других соображений подтолкнули к решению разработать новый независимый стек для OPC UA, который заменяет COM / DCOM. Основными характеристиками этого коммуникационного стека были:

  • Мультиплатформенная реализация, в том числе портативная ANSI C, Ява и .СЕТЬ реализации;
  • Масштабируемость: от интеллектуальных датчиков и интеллектуальных исполнительных устройств до мэйнфреймов;
  • Многопоточная, а также однопоточная / однозадачная работа - необходима для переноса стека на встроенные устройства;
  • Безопасность, основанная на новых стандартах;
  • Настраиваемые тайм-ауты для каждой службы;
  • Разделение больших датаграмм.

Этот коммуникационный стек отражает начало различных инноваций. Архитектура OPC UA - это сервис-ориентированная архитектура (SOA), основанная на разных логических уровнях.

Базовые службы OPC - это описания абстрактных методов, которые не зависят от протокола и обеспечивают основу для функциональности OPC UA. Транспортный уровень помещает эти методы в протокол, что означает, что он сериализует / десериализует данные и передает их по сети. протоколы указаны для этой цели. Один - двоичный TCP протокол, оптимизированный для высокой производительности, а второй - веб-сервис -ориентированный.

Информационная модель OPC - это так называемая Full Mesh Network, основанная на узлы. Эти узлы могут включать в себя любую метаинформацию и похожи на объекты объектно-ориентированного программирования (ООП). Узел может иметь атрибуты для доступа для чтения (DA, HDA), методы, которые могут быть вызваны (Команды), и инициированные события, которые могут быть переданы (AE, DataAccess, DataChange). Узлы содержат данные о процессе, а также все другие типы метаданные. Пространство имен OPC содержит модель типа.

Клиентское программное обеспечение может проверить, какие профили поддерживает сервер. Это необходимо для получения информации, если сервер поддерживает только функции DA или дополнительно AE, HDA и т. Д. Кроме того, можно получить информацию о том, поддерживает ли сервер данный профиль. Новые и важные особенности OPC UA:

  • Резервирование поддержка
  • Сердцебиение для соединений в обоих направлениях (чтобы указать, "жив ли" другой конец). Это означает, что и сервер, и клиент распознают прерывания.
  • Буферизация данных и подтверждения переданных данных. Потерянные соединения больше не приводят к потере данных. Утерянные дейтаграммы можно восстановить.

На выставке OPC UA DevCon в октябре 2006 г. в Мюнхене первые прототипы были представлены вживую. Различные серверы UA были показаны на Beckhoff Программируемый логический контроллер и встроенная тестовая плата от Euros. ПЛК Beckhoff основан на Windows XP Embedded, а встроенный контроллер основан на операционная система реального времени Евро. Компания Embedded Labs Ltd продемонстрировала сервер OPC UA на основе собственного стека C ++ UA, выполняющийся на одном кристалле. РУКА микроконтроллер с 64кБ баран. В октябре 2012 года Немецкий центр прикладных программ им. Фраунгофера IOSB-INA и Институт промышленных информационных технологий (inIT) показали, что сервер OPC UA масштабируется до 15 КБ ОЗУ и 10 КБ ПЗУ и, следовательно, может использоваться на уровне микросхемы.[5]

Протоколы

OPC UA поддерживает два протокола.[6] Это видно для прикладных программистов только через изменение URL-адреса. Бинарный протокол opc.tcp: // Сервер и http: // Сервер для веб-службы. В противном случае OPC UA работает полностью прозрачно для API.

Бинарный протокол предлагает лучшую производительность / наименьшие накладные расходы, требует минимум ресурсов (без XML Parser, МЫЛО и HTTP требуется, что важно для встроенных устройств), обеспечивает лучшую совместимость (двоичный файл явно указан и допускает меньшее количество степеней свободы во время реализации) и использует один произвольно выбираемый порт TCP для облегчения туннелирования связи или легкого включения через брандмауэр.

Протокол веб-службы (SOAP) лучше всего поддерживается из доступных инструментов, например, из сред Java или .NET, и совместим с брандмауэром, используя стандартные порты HTTP (S).

Двоичный формат поддерживается всеми реализациями, в то время как только реализация .NET поддерживает SOAP.

Характеристики

Спецификация OPC UA состоит из нескольких частей и состоит из следующих частей:

  1. Концепции
  2. Модель безопасности
  3. Модель адресного пространства
  4. Услуги
  5. Информационная модель
  6. Сопоставления
  7. Профили
  8. Доступ к данным
  9. Сигналы тревоги и условия
  10. Программ
  11. Исторический доступ
  12. Открытие и глобальные услуги
  13. Агрегаты
  14. PubSub

В отличие от спецификаций на основе COM, спецификации UA не являются чисто прикладными спецификациями. Они описывают типичные внутренние механизмы UA, которые обрабатываются через стек связи и обычно представляют интерес только для тех, кто переносит стек на конкретную цель или тех, кто хочет реализовать свой собственный стек UA.

Разработчики приложений OPC UA используют код OPC UA API и поэтому в основном используют документацию по API. Тем не менее, части 3, 4 и 5 могут быть интересны разработчикам приложений.[7]

Обсуждение

Спецификация протокола OPC UA состоит из 14 документов общим объемом 1250 страниц. Из-за этой сложности существующие реализации обычно являются неполными. Кроме того, наличие нескольких форматов сериализации, а также возможность выборочной реализации определенных сервисов, таких как PubSub, в конечном итоге приводят к большой неоднородности точек подключения OPC UA. В этих условиях, наконец, трудно разрабатывать клиентские приложения, независимые от конкретной реализации каждого сервера. В этом смысле OPC UA не выполняет своих обещаний по обеспечению хорошей совместимости систем. Обычно это можно увидеть в производственных и инфраструктурных проектах, объединяющих различные технологии ПЛК, каждая из которых поставляется с различной и ограниченной реализацией протокола OPC UA.

Спецификация все еще развивается, последний том 14 документа спецификации датирован 6 февраля 2018 года, а первая публикация стандарта OPC UA датируется 2006 годом.

В результате, несмотря на значительные маркетинговые усилия по поддержке его принятия, OPC UA на данном этапе можно рассматривать как попытку стандартизации, а не как установленный стандарт.

Стек связи UA

Архитектура приложения UA, независимо от того, является ли оно серверной или клиентской частью, структурирована по уровням.

Некоторые части соответствуют прежним COM-прокси / заглушкам и предоставляются OPC Foundation. Уровень переносимости новый; он упрощает перенос стека UA ANSI C на другие целевые платформы. Уровень портов для Windows и Linux также предоставляется OPC Foundation.

Безопасность UA

Безопасность UA состоит из аутентификации и авторизации, шифрования и целостности данных с помощью подписей. Для веб-служб WS-SecureConversation привыкает и поэтому совместим с .СЕТЬ и другие МЫЛО реализации. Для двоичного варианта были применены алгоритмы WS-SecureConversation, которые также были преобразованы в двоичный эквивалент. Это называется безопасным разговором UA.

Существует также смешанная версия, в которой код является двоичным, но транспортным уровнем является SOAP. Это компромисс между эффективным двоичным кодированием и передачей, удобной для межсетевого экрана. Двоичное кодирование всегда требует безопасного разговора UA. X.509 исключительно сертификаты. Он полагается на разработчика приложения, чтобы выбрать, к какому хранилищу сертификатов будет привязано приложение UA. Например, можно использовать инфраструктура открытого ключа (PKI) Active Directory.

Встроенные типы данных

Стандарт OPC UA определяет 25 встроенных типов данных:

Встроенные типы данных OPC UA
Встроенный типЭквивалент C / C ++ПодробностиТип NodeId
Булевоbool0/1 (правда или ложь)0 (числовой)
SByteint8_tОт -128 до 127
Байтuint8_tОт 0 до 255
Int16int16_tОт -32768 до 32767
UInt16uint16_tОт 0 до 65535
Int32int32_tОт -2147483648 до 2147483647
UInt32uint32_t0 на 4294967295
Int64int64_tОт -9223372036854775808 до 9223372036854775807
UInt64uint64_t0 в 18446744073709551615
ПлаватьплаватьЗначение с плавающей запятой одинарной точности (32 бита) IEEE
ДвойнойдвойнойЗначение с плавающей запятой двойной точности (64 бита) IEEE
StatusCodeuint32_t
Строкаuint8_t * / std :: строка3 (строка)
DateTimeint64_tколичество интервалов в 100 наносекунд с 01.01.1601 (UTC)
GUIDзависит от реализации16-байтовое число, используемое как уникальный идентификатор4 (GUID)
ByteString(то же, что и String)5 (байтовая строка)
XmlElement(то же, что и String)
NodeIdиндекс пространства имен и тип NodeId
ExpandedNodeId(аналогично NodeId)
QualifiedNameиндекс и строка пространства имен
LocalizedTextстрока и индикатор локали
NumericRangeстрока (например, "0: 4,1: 5" для [0..4] [1..5] массива)
Вариант(только встроенные типы данных)
ExtensionObjectскаляры любого типа
DataValueсочетание значения, отметок времени и кода состояния
DiagnosticInfoподробная информация об ошибках / диагностике

API OPC UA

API UA доступны на нескольких языках программирования. Коммерческий SDK доступен для C, C ++, Java и .NET. Стеки с открытым исходным кодом доступны как минимум для C, C ++, Java, Javascript (узел), Tcl и Python. [1].

Реализация C ++ / C

  • В открытый62541 проект предоставляет реализацию с открытым исходным кодом для сервера и клиентов OPC UA и лицензируется под Общественная лицензия Mozilla v2.0. Помимо Linux и Windows, он также поддерживает OS X, QNX и различные встроенные системы в качестве цели компиляции.
  • В Проект S2OPC предоставляет защищенную реализацию с открытым исходным кодом и лицензируется на условиях Apache 2.0 лицензия. Он поддерживает Linux, Windows, FreeRTOS, Zephyr, VxWorks и стремится быть безопасным, надежным и быстрым. Ядро программного обеспечения формально разработано с помощью B-метод.
  • В Проект ASNeG предоставляет сервер приложений OPC UA с открытым исходным кодом C ++ (Apache License 2.0) и веб-сервер OPC UA (бета-версия, в настоящее время только базовые функции).
  • В FreeOpcUa проект предоставляет открытый исходный код (LGPL ) серверная и клиентская реализация на C ++.
  • В UAF Проект предлагает реализацию C ++ / Python с открытым исходным кодом (LGPL).

Реализация .NET

Реализация .NET использует ANSI C для нижних уровней, а все остальное реализует изначально в .NET. Это означает, что из стека ANSI C интегрируется только обработка сокета и разбиение сообщений на части. Десериализация происходит непосредственно в .NET и поэтому преобразуется непосредственно в структуры и объекты .NET. Это обеспечивает лучшую производительность, чем сначала десериализация в структуру C, а затем копирование данных в структуру .NET.

Реализация на Java

Разрабатывались различные стеки для Java.[когда? ] Как и в случае с .NET, существует три основных варианта:

  1. Инкапсулируйте полный стек ANSI C через JNI, что затрудняет переносимость. Хотя стек можно портировать на разные операционные системы, его нужно компилировать для каждой из них индивидуально. Кроме того, данные должны быть скопированы на границу JNI, но выигрывает от производительности C во время десериализации.
  2. Кодируйте непосредственно на сетевом уровне (аналогично текущей реализации .Net) и десериализуйте на Java. Это экономит одно выполнение копии данных, но по-прежнему зависит от стека C.
  3. Напишите собственный стек Java OPC UA. Было отмечено, что это самый портативный, но, по оценкам, для его реализации потребовалось больше инженерных усилий. Проект Eclipse Milo обеспечивает реализацию спецификации клиента и сервера UA 1.03 с открытым исходным кодом на чистом Java.[8]

В качестве альтернативы есть простой вариант, поддерживающий только протокол WebService. Для этого набор инструментов SOAP, поддерживающий WS-Безопасность необходим.

Реализация JavaScript

узел-opcua представляет собой полную реализацию OPC UA для клиента и сервера, полностью написанную на JavaScript для Node.js.

Реализация Python

  • В FreeOpcUa Проект предоставляет две реализации на чистом языке программирования Python - opcua-asyncio (требуется Python> = 3.7) и python-opcua (совместим с Python 2, 3 и pypy; для библиотеки lxml требуется Cython, но он находится в режиме обслуживания и opcua-asyncio Рекомендовано). Оба предоставляют высокоуровневые абстракции клиента и сервера OPC UA, которые могут использоваться как есть или легко расширяться для пользовательских приложений.
  • В S2OPC C-реализация предоставляет оболочку python PyS2OPC.

Реализация на Rust

Rust для OPC UA предоставляет API и образцы для реализации клиента и серверов OPC UA до уровня встроенного профиля. Это включает поддержку шифрования, подписок и набор узлов по умолчанию.

Реализация TypeScript / JavaScript

Клиент TypeScript / JavaScript OPC UA для браузера это клиент OPC UA, который работает в браузере. Он полностью написан на TypeScript и скомпилирован в JavaScript. Исходный код общедоступен и имеет лицензию MIT. Он включает кодирование двоичных данных OPC UA и использует WebSockets в качестве транспортного протокола.

Реализация tcl

Topcua это привязка Tcl к клиенту и серверу OPC UA. Он предоставляет несколько операций для управления и связи с использованием реализации OPC UA. Он доступен на распространенных платформах POSIX и Windows.

IEC 62541

IEC 62541[9] является стандартом для унифицированной архитектуры OPC.

Обзор IEC 62541
Я БЫДата выходазаглавие
IEC / TR 62541-12016Унифицированная архитектура OPC - Часть 1: Обзор и концепции
IEC / TR 62541-22016Унифицированная архитектура OPC - Часть 2: Модель безопасности
МЭК 62541-32020Унифицированная архитектура OPC - Часть 3: Модель адресного пространства
МЭК 62541-42020Унифицированная архитектура OPC - Часть 4: Услуги
МЭК 62541-52020Унифицированная архитектура OPC - Часть 5: Информационная модель
IEC 62541-62020Унифицированная архитектура OPC - Часть 6: Сопоставления
МЭК 62541-72020Унифицированная архитектура OPC - Часть 7: Профили
МЭК 62541-82020Унифицированная архитектура OPC - Часть 8: Доступ к данным
МЭК 62541-92020Унифицированная архитектура OPC - Часть 9: Аварийные сигналы и условия
МЭК 62541-102020Унифицированная архитектура OPC - Часть 10: Программы
МЭК 62541-112020Унифицированная архитектура OPC - Часть 11: Исторический доступ
МЭК 62541-122020Унифицированная архитектура OPC - Часть 12: Обнаружение и глобальные услуги
IEC 62541-132020Унифицированная архитектура OPC - Часть 13: Агрегаты
МЭК 62541-142020Унифицированная архитектура OPC - Часть 14: PubSub
МЭК 62541-1002015Унифицированная архитектура OPC - Часть 100: Интерфейс устройства

Смотрите также

Рекомендации

  1. ^ https://opcfoundation.org/license/gpl.html
  2. ^ Роперт, Линус; Дальманнс, Маркус; Финк, Ина Беренис; Пеннекамп, Ян; Хенце, Мартин https://www.comsys.rwth-aachen.de/fileadmin/papers/2020/2020-roepert-opcua-security.pdf Оценка безопасности развертываний OPC UA, 2020 г.
  3. ^ Манке, Вольфганг; Лейтнер, Стефан-Гельмут https://library.e.abb.com/public/75d70c47268d78bfc125762d00481f78/56-61%203M903_ENG72dpi.pdf Унифицированная архитектура OPC - будущий стандарт для коммуникационного и информационного моделирования в автоматизации], 3/2009 АББ Ревю 3/2009, стр. 56-61
  4. ^ https://opcfoundation.org/developer-tools/specifications-unified-architecture
  5. ^ Самый маленький в мире сервер OPC UA из Германии.
  6. ^ Лейтнер, Стефан-Гельмут; Манке, Вольфганг OPC UA - Сервис-ориентированная архитектура для промышленных приложений, 11/2006 Softwaretechnik-Trends ISSN  0720-8928
  7. ^ Массаро, Симоне Что такое OPC UA и как он влияет на ваш мир?, 5/15/2008 planetengineering.com
  8. ^ «Функциональность клиента и / или сервера OPC Unified Architecture (UA) в любом проекте на основе JVM». Получено 22 августа 2016.
  9. ^ «Интернет-магазин IEC для IEC 62541». Получено 1 июня 2018.

Литература

  • Вольфганг Манке, Стефан-Гельмут Лейтнер, Матиас Дамм: Унифицированная архитектура OPC. Springer Verlag 2009; ISBN  978-3-540-68898-3
  • Ланге, Дж., Иваниц, Ф., Берк, Т. OPC от доступа к данным к унифицированной архитектуре 2010; ISBN  978-3-8007-3242-5

внешняя ссылка