콘텐츠로 이동
무료 평가 시작

OPC UA 개요

OPC UA(OPC Unified Architecture)는 산업 장비와 소프트웨어가 데이터를 주고받기 위한 플랫폼 독립 표준입니다. OPC Foundation이 OPC 10000 시리즈로 발행하며, 같은 내용이 IEC 62541로도 표준화되어 있습니다. 이 절의 배경 지식 페이지는 PDComm OPC UA를 쓰는 데 필요한 개념을 표준 문서의 해당 부분과 함께 설명합니다.

OPC UA 표준은 여러 부(Part)로 나뉩니다. 이 문서는 Part 4처럼 줄여 부릅니다. 정식 이름은 OPC 10000-4입니다.

부 제목 이 문서에서 다루는 내용
Part 1 Overview and Concepts 전체 개념과 용어
Part 2 Security Model 응용 프로그램 인증, 메시지 보안, 사용자 인증
Part 3 Address Space Model 노드, NodeClass, 참조
Part 4 Services Discovery, SecureChannel, Session, Browse, Read/Write, Call, Subscription, History 서비스
Part 5 Information Model Server 객체, 기본 타입, 이벤트 타입
Part 6 Mappings UA Binary 인코딩, opc.tcp 전송, 보안 대화(secure conversation)
Part 7 Profiles 보안 정책(SecurityPolicy)과 기능 프로필
Part 9 Alarms and Conditions 알람과 조건 상태 기계
Part 11 Historical Access 이력 읽기와 연속 지점
Part 12 Discovery and Global Services 인증서 관리, 신뢰 목록
Part 13 Aggregates 이력 집계
Part 14 PubSub 게시·구독(Publish-Subscribe) 통신

표준 원문은 OPC Foundation 웹 사이트(reference.opcfoundation.org)에서 읽을 수 있습니다. 이 문서는 표준 문장을 옮기지 않고, 필요한 부분의 위치만 밝힙니다.

OPC UA에는 통신 모델이 두 가지 있습니다.

클라이언트-서버(client-server) 모델에서는 클라이언트가 서버에 연결해 요청을 보내고 응답을 받습니다. 연결은 보안 채널(secure channel)과 세션(session) 위에서 이루어집니다. 서버는 자신의 데이터를 주소 공간(address space)이라는 노드 그래프로 공개합니다. Part 4가 서비스를, Part 6이 opc.tcp 전송과 UA Binary 인코딩을 정의합니다.

PubSub 모델에서는 게시자(publisher)가 데이터 묶음을 네트워크 메시지로 보내고, 구독자(subscriber)가 받습니다. 둘은 서로를 직접 알 필요가 없습니다. 메시지는 UDP 멀티캐스트·유니캐스트로 직접 가거나 MQTT 같은 브로커(broker)를 거칩니다. Part 14가 정의합니다.

Client-server PubSub
+--------+ Request (Read, Browse ...) +---------+ +-----------+ NetworkMessage +------------+
| Client | ---------------------------> | Server | | Publisher | ---------------> | Subscriber |
| | <--------------------------- | address | | | UDP, or MQTT | |
+--------+ Response | space | +-----------+ via a broker +------------+
one session over a secure channel +---------+ no connection, one-to-many

왼쪽은 보안 채널과 세션 위에서 1:1로 요청과 응답을 주고받습니다. 오른쪽은 연결 없이 메시지를 여러 구독자에게 전달합니다.

PDComm OPC UA는 두 종류의 배포물로 제공됩니다.

배포물 패키지(프로필) 내용
SDK native, qt, dotnet C ABI 0.2, C++ RAII 헤더, QtCore 클라이언트 작업자(worker), .NET 어셈블리 PDComm.OpcUa, 예제
시뮬레이터 apps Qt GUI 시뮬레이터, 헤드리스(headless) 프로그램, MCP 서버

구성 요소별 기능은 다음과 같습니다. 모두 opc.tcp와 UA Binary 인코딩으로 통신합니다.

구성 요소 기능
SDK 클라이언트 보안 정책 Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss(None은 명시적으로 허용할 때 사용), 익명 사용자와 사용자 이름·암호, 응용 프로그램이 인코딩한 UA Binary 서비스 요청 전달(Browse, Read, Write, Call, Subscription, MonitoredItem, 이벤트와 알람, 이력 읽기)
SDK 서버(메모리 서버) 같은 보안 정책(None은 명시적으로 허용할 때 사용), 익명 사용자, Browse, Read, Write, Call, Subscription, MonitoredItem
시뮬레이터 같은 보안 정책과 None 엔드포인트, 익명 사용자와 사용자 이름·암호, Browse, Read, Write, Call, Subscription, MonitoredItem, 이벤트·알람과 조건, 이력 Raw 읽기, PubSub(UADP over UDP 유니캐스트, UADP over MQTT)

SDK 클라이언트는 서비스 요청을 완성된 UA Binary 메시지로 받아 보안 채널로 보내고, 검증한 응답을 돌려줍니다. 어떤 서비스를 쓸지와 그 인코딩은 응용 프로그램이 정합니다. 예제의 ua_binary.h는 Read, Write, Browse, Call만 인코딩하는 작은 도우미입니다. 자세한 내용은 서비스에서 설명합니다.

  1. 정보 모델: 노드, NodeId, 참조, DataValue와 StatusCode
  2. 서비스: 연결 순서와 서비스 집합, PDComm C ABI의 대응
  3. 보안: 보안 정책, 응용 프로그램 인증서, 신뢰, 사용자 토큰
  4. 구독과 게시 주기
  5. 이벤트, 알람과 조건
  6. 이력 접근
  7. PubSub

배경 지식을 읽은 뒤 빠른 시작으로 첫 연결을 만듭니다.

OPC UA는 OPC Foundation의 상표입니다.