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 구성
섹션 제목: “PDComm OPC UA 구성”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만 인코딩하는 작은 도우미입니다. 자세한 내용은 서비스에서 설명합니다.
읽는 순서
섹션 제목: “읽는 순서”- 정보 모델: 노드, NodeId, 참조, DataValue와 StatusCode
- 서비스: 연결 순서와 서비스 집합, PDComm C ABI의 대응
- 보안: 보안 정책, 응용 프로그램 인증서, 신뢰, 사용자 토큰
- 구독과 게시 주기
- 이벤트, 알람과 조건
- 이력 접근
- PubSub
배경 지식을 읽은 뒤 빠른 시작으로 첫 연결을 만듭니다.
OPC UA는 OPC Foundation의 상표입니다.