OPC 유니파이드 아키텍처

OPC Unified Architecture

OPC UA(OPC Unified Architecture, OPC UA)는 OPC 재단이 개발한 센서에서 클라우드 애플리케이션으로의 데이터 교환을 위한 크로스 플랫폼, 오픈 소스 IEC62541 표준이다. 구별되는 특성은 다음과 같다.

  • 풍부한 모델링 도구 에코시스템을 갖춘 확장 가능한 데이터 모델
  • OPC 재단이 동반자 사양을 통해 발표한 60종 이상의 산업 장비에 대해 자유롭게 사용할 수 있는 표준화된 데이터 모델
  • 인증, 권한 부여, 암호화 및 체크섬을 포함한 확장 가능한 보안 프로파일
  • X.509, 토큰 및 암호를 포함한 확장 가능한 보안 키 관리
  • 클라이언트-서버 및 게시-구독 커뮤니케이션 패턴 모두 지원
  • 통신 프로토콜 독립. TCP/IP, UDP/IP, WebSockets, AMQP 및 MQTT와 같은 여러 통신 프로토콜에 대한 매핑이 지정됨
  • 초기에는 산업 장비(구체 제조, 공정 제조, 에너지) 및 데이터 수집 및 제어를 위한 시스템과의 표준화된 데이터 교환에 성공했지만, 현재는 빌딩 자동화, 계량 및 주방 장비, 클라우드 애플리케이션에도 활용됨
  • GPL 2.0 라이센스에 따른 비회원 OPC Foundation 회원이 자유롭게 이용할 수 있는 오픈 소스 참조 구현
  • 재배포 가능 라이센스로 바이너리(NuGet Package)를 무료로 사용 가능
  • 크로스 플랫폼 - 단일 운영 체제 또는 프로그래밍 언어에 연결되지 않음
  • SOA(서비스 지향 아키텍처)
  • 규격은 OPC Foundation 웹사이트에서 자유롭게 사용할 수 있으며 구현을 용이하게 하기 위해 여러 부분으로 분할되어 있지만 OPC UA 스택 공급업체만 읽으면 되고 최종 사용자는 모든 인기 프로그래밍 언어로 제공되는 기존의 상용 및/또는 오픈 소스 스택을 활용하면 된다.


역사

같은 조직에서 개발했지만 OPC UA는 전작 OPC(Open Platform Communications)와는 크게 다르다. OPC UA에 대한 재단의 목표는 OPC 통신 모델(이름, 마이크로소프트 윈도 전용 프로세스 교환 COM/DCOM)에서 새로운 산업 자동화의 요구를 더 잘 충족시킬 수 있는 진로를 제공하는 것이었다.[3]

3년 이상의 규격 작업과 시제품 구현을 위한 1년 이상의 기간을 거쳐 2006년에 통합 아키텍처의 첫 번째 버전이 출시되었다.[4]

현재 규격 버전은 1.04(2017년[5] 11월 22일)이다. OPC UA의 새로운 버전은 이제 클라이언트/서버 통신 인프라 외에 출판/구독을 추가했다.

혁신

원래 COM/DCOM에 대한 바인딩은 OPC가 잘 배포하는 데 도움이 되었지만 다음과 같은 몇 가지 단점이 있었다.

  • DCOM과 관련된 빈번한 구성 문제;
  • 구성 가능한 제한 시간 없음;
  • Microsoft Windows 전용;
  • 낮은 보안;
  • DCOM에 대한 제어권이 없음(COM/DCOM은 일종의 블랙박스, 개발자는 소스에 접근할 수 없으므로 버그나 불충분한 구현을 처리해야 한다).

이러한 단점과 함께 많은 다른 고려사항들이 COM/DCOM을 대체하는 OPC UA를 위한 새로운 독립 스택을 개발하기로 결정했다. 이 통신 스택의 주요 특징은 다음과 같다.

  • 휴대용 ANSI C, Java 를 포함한 다중 플랫폼 구현NET 구현;
  • 확장성: 스마트 센서 및 스마트 액추에이터에서 메인프레임까지,
  • 스택을 임베디드 장치에 포팅하는 데 필요한 다중 스레드 및 단일 스레드/단일 태스크 작동
  • 새로운 표준에 기초한 보안
  • 각 서비스에 대해 구성 가능한 제한 시간
  • 빅 데이터그램 청킹.

이 통신 스택은 다양한 혁신의 시작을 반영한다. OPC UA 아키텍처는 서비스 지향 아키텍처(SOA)이며 다른 논리적 수준에 기초한다.

OPC Base Services는 추상적인 방법 설명으로, 프로토콜에 독립적이며 OPC UA 기능의 기초를 제공한다. 전송 계층은 이러한 방법들을 프로토콜에 넣는데, 이는 그것이 데이터를 직렬화/비열화하여 네트워크를 통해 전송한다는 것을 의미한다. 이 목적을 위해 두 개의 프로토콜이 지정된다. 하나는 고성능에 최적화된 바이너리 TCP 프로토콜이고, 두 번째는 웹 서비스 지향적이다.

OPC 정보 모델은 노드를 기반으로 한 메쉬 네트워크다. 이 노드들은 모든 종류의 메타 정보를 포함할 수 있으며, 객체 지향 프로그래밍(OOOP)의 개체와 유사하다. 노드는 읽기 액세스(DA, HDA), 호출할 수 있는 메서드(명령) 및 전송될 수 있는 트리거된 이벤트(AE, DataAccess, DataChange)의 속성을 가질 수 있다. 노드는 프로세스 데이터와 다른 모든 유형의 메타데이터를 보관한다. OPC 네임스페이스에는 유형 모델이 포함되어 있다.

클라이언트 소프트웨어는 서버가 지원하는 프로필을 확인할 수 있다. 이는 서버가 DA 기능만 지원하거나 AE, HDA 등을 추가로 지원하는 경우 정보를 얻기 위해 필요하다. 또한 서버가 주어진 프로파일을 지원하는지에 대한 정보를 얻을 수 있다. OPC UA의 새롭고 중요한 특징은 다음과 같다.

  • 중복 지원
  • 양방향 연결에 대한 하트비트(다른 쪽 끝이 "실행"인지 표시) 이는 서버와 클라이언트 모두 인터럽트를 인식한다는 것을 의미한다.
  • 전송된 데이터의 버퍼링 및 승인. 연결이 끊기면 더 이상 데이터가 손실되지 않는다. 손실된 데이터그램은 다시 설정할 수 있다.

2006년 10월 OPC UA DevCon에서 열린 뮌헨에서 최초의 프로토타입이 생방송으로 발표되었다. 다양한 UA 서버들이 벡호프 프로그램 가능 논리 제어기와 유로스의 임베디드 테스트 보드에 전시되었다. 벡호프 PLC는 윈도 XP 임베디드, 임베디드 컨트롤러는 실시간 운영체제 유로스를 기반으로 한다. Embedded Labs Ltd사는 64kB RAM을 탑재한 단일 칩 ARM 마이크로컨트롤러에서 자체 C++ UA 스택을 기반으로 OPC UA 서버를 시연했다. 2012년 10월 독일 프라운호퍼 애플리케이션 센터 IOSB-INA와 산업정보기술연구소(INIT)는 OPC UA 서버가 15kB RAM 및 10kB ROM까지 확장 가능하며 따라서 칩 레벨에서 사용할 수 있다는 것을 보여주었다.[6]

사양

OPC UA 규격은 다중 부품 규격이며 다음과 같은 부분으로 구성된다.

  1. 개념
  2. 보안 모델
  3. 주소 공간 모델
  4. 서비스
  5. 정보 모델
  6. 매핑
  7. 프로필
  8. 데이터 액세스
  9. 경보 및 조건
  10. 프로그램
  11. 내역 액세스
  12. 검색 및 글로벌 서비스
  13. 골재
  14. 펍섭
  15. 안전
  16. 상태 컴퓨터(아직 게시되지 않음)
  17. 별칭 이름
  18. 사용자 인증(아직 게시되지 않음)
  19. 사전 참조

또한 파트 100 Devices와 파트 200 Industrial Automation도 이용할 수 있다. 이러한 정의는 규격의 핵심 세트를 기반으로 하며, 다른 동반 사양에 사용되는 새로운 공통 정의를 추가한다. 예: OPC UA for Analyser Devices와 OPC UA for Machineering은 모두 파트 100에 직접 구축된다.

COM 기반 규격과 대조적으로, UA 규격은 순수한 적용 규격이 아니다. 그들은 일반적으로 통신 스택을 통해 처리되며 특정 대상에 스택을 포팅하는 메커니즘 또는 그들 자신의 UA 스택을 구현하고자 하는 메커니즘에만 관심이 있는 UA 내부 메커니즘을 설명한다.

OPC UA 응용 프로그램 개발자는 OPC UA API에 대해 코딩하므로 주로 API 문서를 사용한다. 그럼에도 불구하고 파트 3, 4, 5는 애플리케이션 개발자들에게 관심의 대상이 될 수 있다.[7]

UA 통신 스택

UA 애플리케이션의 아키텍처는 그것이 서버인지 클라이언트 부분인지에 관계 없이 레벨로 구성된다.

일부 부품은 이전의 COM 프록시/스텁과 동일하며 OPC 재단이 제공한다. 이식성 수준은 새로운 것으로, UA ANSI C 스택을 다른 대상 플랫폼에 간편하게 포팅할 수 있다. 윈도우즈와 리눅스용 포트 레이어는 OPC Foundation에 의해서도 제공된다.

UA 보안

UA 시큐리티는 서명을 통한 인증 및 인증, 암호화 및 데이터 무결성으로 구성된다. 웹 서비스의 경우 WS-SecureConversation이 사용되므로 와 호환된다.NET 및 기타 SOAP 구현. 바이너리 변종의 경우 WS-SecureConversation의 알고리즘을 따랐으며, 바이너리 등가로도 변환되었다. 이것은 UA Secure Dialogue로 명명되었다.

코드가 바이너리인 혼합 버전도 있지만 전송 계층은 SOAP이다. 효율적인 바이너리 코딩과 방화벽 친화적 전송의 절충점이다. 바이너리 코딩은 항상 UA Secure Talking이 필요하다. 인증은 X.509 인증서만을 사용한다. 응용 프로그램 개발자가 UA 응용 프로그램이 바인딩되는 인증서 저장소를 선택하는데 의존한다. 예를 들어 Active Directory의 PKI(Public Key Infrastructure)를 사용할 수 있다.

내장 데이터 유형

OPC UA 표준은 25가지 내장 데이터 유형을 정의한다.

OPC UA 내장 데이터 유형
내장형 C/C++ 등가물 세부 사항 NodeId 유형
부울 바가지 긁다 0/1 (참 또는 거짓) 0(초)
SByte int8_t -127로 조정
바이트 uint8_t 0 대 255
Int16 int16_t -32768 ~ 32767
UInt16 uint16_t 0 ~ 65535
int32 int32_t -2147483648 ~ 2147483647
UInt32 uint32_t 0 ~ 4294967295
인트64 int64_t -9223372036854775808 ~ 9223372036854775807
UInt64 uint64_t 0 ~ 18446744073709551615
플로트 둥둥 뜨다 IEEE 단일 정밀도(32비트) 부동 소수점 값
더블 곱절로 하다 IEEE 이중 정밀도(64비트) 부동소수 값
상태코드 uint32_t
uint8_t* / std::string 3 (끈)
날짜 시간 int64_t 1/1/1601(UTC) 이후 100나노초 간격 수
GUID 이행에 의존하는 고유 식별자로 사용되는 16바이트 번호 4 (GUID)
바이트 스트링 (String과 동일 5(바이트 문자열)
XmlElement (String과 동일
노드아이드 네임스페이스 인덱스 및 NodeId 유형
확장NodeId (NodeId와 유사)
정규화된 이름 네임스페이스 인덱스 및 문자열
지역화됨텍스트 문자열 및 로케일 표시기
숫자 범위 문자열(예: [0..4][1..5] 배열의 경우 "0:4,1:5")
변종 (내장된 데이터 형식만)
ExtensionObject 어떤 종류의 스칼라든지.
데이터 값 값, 타임스탬프 및 상태 코드의 합성어
진단인포 자세한 오류/오류 정보

OPC UA API

UA API는 여러 프로그래밍 언어로 제공된다. C, C++, Java 및 에 상용 SDK 제공NET. 오픈 소스 스택은 최소한 C, C++, Javascript(노드), Tcl 및 Python[1]에 사용할 수 있다.

C++/C 구현

  • open62541 프로젝트는 OPC UA 서버와 클라이언트를 위한 오픈 소스 구현을 제공하며 Mozilla Public License v2.0에 따라 라이센스가 부여된다. 리눅스, 윈도 외에 OS X, QNX 및 다른 임베디드 시스템도 컴파일 대상으로 지원한다.
  • S2OPC 프로젝트는 오픈 소스 보안 구현을 제공하며 Apache 2.0 라이센스에 따라 라이센스가 부여된다. Linux, Windows, FreeRTOS, Zephyr, VxWorks를 지원하며 안전·보안·빠른 것을 목표로 한다. 소프트웨어의 코어는 B-Method의 도움을 받아 정식으로 설계된다.
  • ASNeG 프로젝트는 C++ 오픈 소스(Apache License 2.0) OPC UA Application Server와 OPC UA 웹 서버(베타 상태, 현재 기본 기능만 해당)를 제공한다.
  • FreeOpcUa 프로젝트는 오픈 소스(LGPL) 서버와 클라이언트 구현을 C++로 제공한다.
  • UAF 프로젝트는 오픈 소스(LGPL) C++/Python 구현을 제공한다.

.NET 구현

.NET 구현은 하위 레벨에 ANSI C를 사용하고 나머지는 에서 기본으로 구현한다.NET. 즉, 소켓과 메시지-청킹만 ANSI C 스택에서 통합된다는 것을 의미한다. 탈직렬화는 에서 직접 일어난다.NET. 따라서 로 직접 변환된다.NET 구조 및 객체. 이렇게 하면 먼저 C 구조로 탈직렬화한 다음 에 데이터를 복사하는 것보다 더 나은 성능을 제공한다.이후 NET 구조.

자바 구현

자바를 위한 다양한 스택이 개발되고 있었다.[when?] 와 유사하다.NET, 주로 세 가지 변종이 있다.

  1. 휴대성을 복잡하게 만드는 JNI를 통해 전체 ANSI C 스택을 캡슐화하십시오. 스택은 서로 다른 운영 체제에 포팅할 수 있지만 이러한 운영 체제를 위해 개별적으로 컴파일할 필요가 있다. 또한 데이터를 JNI 경계로 복사해야 하지만, 탈시리얼라이제이션 시 C의 성능으로 이득을 얻는다.
  2. 네트워크 계층에서 직접 코드(현재와 유사)순 구현) 및 Java에서 직렬화 해제. 이렇게 하면 하나의 데이터 복사 실행이 저장되지만, 여전히 C 스택에 의존한다.
  3. 네이티브 Java OPC UA 스택을 작성하십시오. 이는 가장 휴대성이 높은 것으로 관찰되었지만, 구현에 가장 많은 엔지니어링 노력이 필요한 것으로 추정되었다. Eclipse Milo 프로젝트는 UA 1.03 클라이언트와 서버 규격의 순수 자바, 오픈 소스, 구현을 제공한다.[8]

또는 WebService 프로토콜만 지원하는 단순한 변종이 있다. 이를 위해서는 WS-Security를 지원하는 SOAP 툴킷이 필요하다.

JavaScript 및 Typecript 구현

노드-opcua는 클라이언트와 서버를 위한 OPC UA의 완전한 구현이며, Node.js에 대한 Typecript에 전적으로 기록된다.

파이썬 구현

  • FreeOpcUa 프로젝트는 opcua-asyncio(Python 2, 3 및 pypy와 호환됨, lxml 라이브러리를 위해 Cython이 필요하지만 opcu-asisncio가 권장됨)의 순수한 Python 프로그래밍 언어로 구현된다. 둘 다 OPC UA 클라이언트와 서버의 높은 수준의 추상화를 제공하며, 이는 그대로 사용하거나 사용자 정의 애플리케이션에 쉽게 확장될 수 있다.
  • S2OPC C 구현은 파이선 래퍼 PyS2OPC를 제공한다.

녹 이행

Rust for OPC UA는 OPC UA 클라이언트와 서버를 임베디드 프로파일 레벨까지 구현하기 위한 API와 샘플을 제공한다. 여기에는 암호화, 구독 및 기본 노드 집합에 대한 지원이 포함된다.

TypeScript / JavaScript 구현

브라우저용 TypeScript / JavaScript OPC UA 클라이언트는 브라우저에서 작동하는 OPC UA 클라이언트다. TypeScript로 완전히 작성되어 자바스크립트에 컴파일되어 있다. 소스 코드는 공개적으로 사용할 수 있으며 MIT 라이센스가 있다. OPC UA 이진 데이터 인코딩을 포함하며, WebSockets를 전송 프로토콜로 사용한다.

Tcl 구현

Topcua는 OPC UA 클라이언트와 서버에 대한 Tcl 바인딩이다. OPC UA 구현을 사용하여 관리 및 통신하는 여러 작업을 제공한다. 공통 POSIX와 윈도 플랫폼에서 이용할 수 있다.

IEC 62541

IEC 62541은[9] OPC 통합 아키텍처의 표준이다.

IEC 62541 개요
아이디 개봉일 칭호를 붙이다
IEC/TR 62541-1 2016 OPC 유니파이드 아키텍처 - Part 1: 개요 및 개념
IEC/TR 62541-2 2016 OPC 유니파이드 아키텍처 - Part 2: 보안 모델
IEC 62541-3 2020 OPC 통합 아키텍처 - Part 3: 주소 공간 모델
IEC 62541-4 2020 OPC 유니파이드 아키텍처 - Part 4: 서비스
IEC 62541-5 2020 OPC 통합 아키텍처 - Part 5: 정보 모델
IEC 62541-6 2020 OPC 유니파이드 아키텍처 - Part 6: 매핑
IEC 62541-7 2020 OPC 유니파이드 아키텍처 - Part 7: 프로파일
IEC 62541-8 2020 OPC 유니파이드 아키텍처 - Part 8: 데이터 액세스
IEC 62541-9 2020 OPC 유니파이드 아키텍처 - Part 9: 경보 및 조건
IEC 62541-10 2020 OPC 유니파이드 아키텍처 - Part 10: 프로그램
IEC 62541-11 2020 OPC 유니파이드 아키텍처 - Part 11: 과거의 접근
IEC 62541-12 2020 OPC 유니파이드 아키텍처 - Part 12: 검색 및 글로벌 서비스
IEC 62541-13 2020 OPC 유니파이드 아키텍처 - Part 13: Aggregate
IEC 62541-14 2020 OPC 통합 아키텍처 - Part 14: PubSub
IEC 62541-100 2015 OPC 유니파이드 아키텍처 - Part 100: 장치 인터페이스

참고 항목

참조

  1. ^ "OPC Foundation Reference Implementation".
  2. ^ "OPC Foundation Redistributable License".
  3. ^ Mahnke, Wolfgang; Leitner, Stefan-Helmut https://library.e.abb.com/public/75d70c47268d78bfc125762d00481f78/56-61%203M903_ENG72dpi.pdf OPC Unified Architecture - 자동화의 통신 및 정보 모델링에 대한 미래 표준, 3/2009 ABB Review 3/2009, 56-61페이지
  4. ^ "Unified Foundation - OPC Foundation". OPC Foundation. Retrieved 13 December 2021.
  5. ^ "Members".
  6. ^ 세계에서 가장 작은 OPC UA 서버는 독일에서 제공됨
  7. ^ Massaro, Simone OPC UA는 무엇이며 당신의 세계에 어떤 영향을 미치는가?, 2008년 5월 15일 planetengineering.com
  8. ^ "OPC Unified Architecture (UA) client and/or server functionality in any JVM-based project". 26 February 2016. Retrieved 22 August 2016.
  9. ^ "IEC Webstore for IEC 62541". Retrieved 1 June 2018.

문학

  • 볼프강 만케, 스테판-헬무트 레이트너, 마티아스 댐: OPC 통합 아키텍처 Springer Verlag 2009; ISBN 978-3-540-68898-3
  • Lange, J, Iwanitz, F, Burke, T. OPC From Data Access to Unified Architecture 2010; ISBN 978-3-8007-3242-5

외부 링크