Международный стандарт | IEC62541, унифицированная архитектура OPC (ядро, полевой обмен данными, устройства, управление активами, сопоставление типов данных XML) |
---|---|
Разработано | Фонд ОПК |
Введено | 28 июля 2006 г. (2006-07-28) |
Промышленность | Операционные технологии и информационные технологии |
Совместимое оборудование | ПЛК , полевые устройства, Windows , Linux , IIOT |
Веб-сайт | https://opcfoundation.org/about/opc-technologies/opc-ua/ |
OPC Unified Architecture ( OPC UA ) — кроссплатформенный стандарт IEC62541 с открытым исходным кодом для обмена данными от датчиков к облачным приложениям, разработанный OPC Foundation . Отличительные характеристики: [1]
Хотя OPC UA разработан той же организацией, он существенно отличается от своего предшественника Open Platform Communications (OPC). Целью Фонда для OPC UA было обеспечить путь вперед от первоначальной модели коммуникаций OPC (а именно Microsoft Windows -только обмен процессами COM/ DCOM ), который бы лучше отвечал новым потребностям промышленной автоматизации . [3]
После более чем трех лет работы над спецификацией и еще одного года на реализацию прототипа, в 2006 году была выпущена первая версия унифицированной архитектуры. [4]
Текущая версия спецификации — 1.04 (22 ноября 2017 г. [5] ). Новая версия OPC UA теперь добавила публикацию/подписку в дополнение к инфраструктуре клиент/серверных коммуникаций.
Хотя первоначальная привязка к COM/ DCOM способствовала успешному распространению OPC , у нее было несколько недостатков:
Эти недостатки, а также ряд других соображений подтолкнули к решению разработать новый и независимый стек для OPC UA, который заменяет COM/DCOM. Основные характеристики этого коммуникационного стека были:
Этот стек коммуникаций отражает начало различных инноваций. Архитектура OPC UA является сервисно-ориентированной архитектурой (SOA) и основана на различных логических уровнях.
OPC Base Services — это абстрактные описания методов, которые не зависят от протокола и обеспечивают основу для функциональности OPC UA. Транспортный уровень помещает эти методы в протокол, что означает, что он сериализует/десериализует данные и передает их по сети. Для этой цели определены два протокола . Один — это двоичный протокол TCP , оптимизированный для высокой производительности, а второй — ориентированный на веб-сервисы .
Информационная модель OPC представляет собой ячеистую сеть, основанную на узлах . Эти узлы могут включать в себя любой вид метаинформации и похожи на объекты объектно-ориентированного программирования (ООП). Узел может иметь атрибуты для доступа на чтение (DA, HDA), методы, которые могут быть вызваны (Commands), и инициированные события, которые могут быть переданы (AE, DataAccess, DataChange). Узлы содержат данные процесса, а также другие типы метаданных . Пространство имен OPC содержит модель типов.
Клиентское ПО может проверять, какие профили поддерживает сервер. Это необходимо для получения информации, поддерживает ли сервер только функциональность DA или дополнительно AE, HDA и т. д. Кроме того, можно получить информацию о том, поддерживает ли сервер заданный профиль. Новые и важные функции OPC UA:
На конференции OPC UA DevCon в октябре 2006 года в Мюнхене были представлены первые прототипы вживую. Различные серверы UA были показаны на программируемом логическом контроллере Beckhoff и встроенной тестовой плате от Euros. ПЛК Beckhoff основан на Windows XP Embedded, а встроенный контроллер основан на операционной системе реального времени Euros. Компания Embedded Labs Ltd продемонстрировала сервер OPC UA на основе собственного стека C++ UA, работающего на однокристальном микроконтроллере ARM с 64 КБ ОЗУ . В октябре 2012 года немецкий центр приложений Fraunhofer IOSB-INA и Институт промышленных информационных технологий (inIT) показали, что сервер OPC UA масштабируется до 15 КБ ОЗУ и 10 КБ ПЗУ и, следовательно, может использоваться на уровне чипа. [6]
Спецификация OPC UA является многочастной и состоит из следующих частей:
Кроме того, также доступны часть 100 Устройства и часть 200 Промышленная автоматизация. Они основаны на основном наборе спецификаций и добавляют новые общие определения, которые затем используются в различных сопутствующих спецификациях. Например, и OPC UA для Анализаторов Устройств , и OPC UA для Машин построены непосредственно на части 100.
В отличие от спецификаций на основе COM, спецификации UA не являются чистыми спецификациями приложений. Они описывают типичные внутренние механизмы UA, которые обрабатываются через стек связи и обычно представляют интерес только для тех, кто портирует стек на определенную цель или тех, кто хочет реализовать свой собственный стек UA.
Разработчики приложений OPC UA пишут код на основе API OPC UA и поэтому в основном используют документацию API. Тем не менее, части 3, 4 и 5 могут быть интересны разработчикам приложений. [7]
Архитектура приложения UA, независимо от того, является ли оно серверной или клиентской частью, структурирована по уровням.
Некоторые части соответствуют бывшим COM Proxy/Stubs и предоставляются OPC Foundation. Уровень переносимости новый; он упрощает перенос стека UA ANSI C на другие целевые платформы. Уровень порта для Windows и Linux также предоставляется OPC Foundation.
Безопасность UA состоит из аутентификации и авторизации, шифрования и целостности данных с помощью подписей. Для веб-сервисов используется WS-SecureConversation , который, следовательно, совместим с .NET и другими реализациями SOAP . Для бинарного варианта алгоритмы WS-SecureConversation были соблюдены и также преобразованы в бинарный эквивалент. Это называется UA Secure Conversation.
Существует также смешанная версия, в которой код является двоичным, но транспортный уровень — SOAP. Это компромисс между эффективным двоичным кодированием и дружественной к брандмауэру передачей. Двоичное кодирование всегда требует UA Secure Conversation. Аутентификация использует исключительно сертификаты X.509 . Она полагается на разработчика приложения, чтобы выбрать, к какому хранилищу сертификатов будет привязано приложение UA. Например, можно использовать инфраструктуру открытых ключей (PKI) Active Directory .
Стандарт OPC UA определяет 25 встроенных типов данных:
Встроенный тип | Эквивалент C/C++ | Подробности | Тип NodeId |
---|---|---|---|
Булев | бул | 0/1 (ложь или правда) | 0 (числовой) |
СБайт | int8_t | -128 до 127 | |
Байт | uint8_t | от 0 до 255 | |
Инт16 | int16_t | -32768 до 32767 | |
UInt16 | uint16_t | 0 до 65535 | |
Int32 | int32_t | -2147483648 по 2147483647 | |
UInt32 | uint32_t | 0 до 4294967295 | |
Int64 | int64_t | -9223372036854775808 по 9223372036854775807 | |
UInt64 | uint64_t | 0 до 18446744073709551615 | |
Плавать | плавать | Значение с плавающей запятой одинарной точности IEEE (32 бита) | |
Двойной | двойной | Значение с плавающей запятой двойной точности IEEE (64 бита) | |
КодСтатуса | uint32_t | ||
Нить | uint8_t* / std::string | 3 (строка) | |
ДатаВремя | int64_t | количество 100-наносекундных интервалов с 1/1/1601 (UTC) | |
GUID | зависит от реализации | 16-байтовое число, используемое как уникальный идентификатор | 4 (GUID-идентификатор) |
ByteString | (то же самое, что и строка) | 5 (байтовая строка) | |
XmlElement | (то же самое, что и строка) | ||
NodeId | индекс пространства имен и тип NodeId | ||
ExpandedNodeId | (аналогично NodeId) | ||
КвалифицированноеИмя | индекс пространства имен и строка | ||
ЛокализованныйТекст | строка и индикатор локали | ||
ЧисловойДиапазон | строка (например, "0:4,1:5" для массива [0..4][1..5]) | ||
Вариант | (только встроенные типы данных) | ||
РасширениеОбъекта | скаляры любого типа | ||
ДанныеЗначение | совокупность значения, временных меток и кода статуса | ||
Диагностическая информация | подробная информация об ошибках/диагностике |
API UA доступны на нескольких языках программирования. Коммерческие SDK доступны для C, C++, Java и .NET. Стек с открытым исходным кодом доступен как минимум для C, C++, Java, Javascript(node), Tcl и Python.
Реализация .NET использует ANSI C для нижних уровней и реализует остальное нативно в .NET. Это означает, что только обработка сокета и Message-Chunking интегрируется из стека ANSI C. Десериализация происходит непосредственно в .NET и, следовательно, преобразуется непосредственно в структуры и объекты .NET. Это обеспечивает лучшую производительность, чем десериализация сначала в структуру C, а затем копирование данных в структуру .NET.
Разрабатывались различные стеки для Java. [ когда? ] Подобно .NET, существуют три основных варианта:
В качестве альтернативы есть простой вариант поддержки только протокола WebService. Для этого необходим SOAP Toolkit, поддерживающий WS-Security .
IEC 62541 [10] — стандарт унифицированной архитектуры OPC.
ИДЕНТИФИКАТОР | Дата выпуска | заголовок |
---|---|---|
МЭК/ТР 62541-1 | 2016 | Унифицированная архитектура OPC – Часть 1: Обзор и концепции |
МЭК/ТР 62541-2 | 2016 | Унифицированная архитектура OPC – Часть 2: Модель безопасности |
МЭК 62541-3 | 2020 | Унифицированная архитектура OPC – Часть 3: Модель адресного пространства |
МЭК 62541-4 | 2020 | Унифицированная архитектура OPC – Часть 4: Услуги |
МЭК 62541-5 | 2020 | Унифицированная архитектура OPC – Часть 5: Информационная модель |
МЭК 62541-6 | 2020 | Унифицированная архитектура OPC – Часть 6: Сопоставления |
МЭК 62541-7 | 2020 | Унифицированная архитектура OPC – Часть 7: Профили |
МЭК 62541-8 | 2020 | Унифицированная архитектура OPC – Часть 8: Доступ к данным |
МЭК 62541-9 | 2020 | Унифицированная архитектура OPC – Часть 9: Сигналы тревоги и состояния |
МЭК 62541-10 | 2020 | Унифицированная архитектура OPC – Часть 10: Программы |
МЭК 62541-11 | 2020 | Унифицированная архитектура OPC – Часть 11: Исторический доступ |
МЭК 62541-12 | 2020 | Унифицированная архитектура OPC – Часть 12: Обнаружение и глобальные сервисы |
МЭК 62541-13 | 2020 | Унифицированная архитектура OPC – Часть 13: Агрегаты |
МЭК 62541-14 | 2020 | Унифицированная архитектура OPC – Часть 14: PubSub |
МЭК 62541-100 | 2015 | Унифицированная архитектура OPC – Часть 100: Интерфейс устройства |