OPC-UA Reference
OPC-UA 노드/세션/구독 프로토콜 레퍼런스
OPC-UA Reference 소개
OPC UA 레퍼런스는 기계 간(M2M), 기계-클라우드, IT/OT 융합을 위한 플랫폼 독립적 산업 통신 표준인 OPC Unified Architecture 프로토콜의 종합 빠른 참조 가이드입니다. 8가지 NodeClass(Object, Variable, Method, ObjectType, VariableType, ReferenceType, DataType, View), 4가지 NodeId 형식(숫자, 문자열, GUID, Opaque), 25개 내장 데이터 타입, 주소 공간의 노드를 연결하는 계층적/비계층적 참조 시스템(HasComponent, HasProperty, Organizes, HasTypeDefinition)을 포함한 완전한 OPC UA 정보 모델을 다룹니다.
이 레퍼런스는 정보 모델(Node, NodeId 네임스페이스 인덱싱, NodeClass, Variable 노드의 AccessLevel/Historizing/ValueRank, Object 컨테이너, Method RPC, Reference 관계, AttributeId 목록, 내장 DataType), 세션/보안(4단계 세션 수립, 3가지 인증 방식, None부터 Aes256_Sha256_RsaPss까지의 보안 정책, PKI 인증서 디렉토리), 서비스(Read/Write/Browse/Call, StatusCode 에러 레퍼런스, HistoryRead, TranslateBrowsePathsToNodeIds), 구독(CreateSubscription, MonitoredItem 데드밴드 필터, Publish/Notification 루프, EventFilter), 확장(Alarm/Condition 계층, PubSub MQTT/UADP-UDP, 동반 규격, 디스커버리, 이중화) 5개 카테고리로 구성되어 있습니다.
자동화 엔지니어, SCADA/MES 개발자, IIoT 아키텍트가 OPC UA 개념, 서비스 요청/응답 구조, 구성 패턴에 빠르게 접근할 수 있도록 설계되었습니다. 주소 공간을 탐색하는 클라이언트를 구현하거나, 데드밴드 필터링이 적용된 데이터 변경 구독을 설정하거나, 인증서 기반 보안을 구성하거나, MQTT 전송의 Pub/Sub 아키텍처를 설계할 때 정확한 필드명, 데이터 구조, 실용적인 설정 값을 제공합니다.
주요 기능
- 완전한 정보 모델 레퍼런스 - 8가지 NodeClass, 4가지 NodeId 형식(ns=0;i=85 숫자형, ns=2;s=MyVar 문자열형, GUID, Opaque), 계층적/비계층적 참조 유형
- Variable 노드 상세 - DataType, AccessLevel(CurrentRead/CurrentWrite), Historizing 플래그, MinimumSamplingInterval, 스칼라/배열 ValueRank, ArrayDimensions
- 세션 수립 과정 - OpenSecureChannel, GetEndpoints, CreateSession(SessionTimeout), ActivateSession의 Anonymous/Username/X.509 UserIdentityToken
- 보안 정책 비교 - None부터 Basic256Sha256, Aes256_Sha256_RsaPss까지, MessageSecurityMode 옵션(None, Sign, SignAndEncrypt)
- Read/Write/Browse/Call 서비스 요청/응답 구조 - MaxAge, TimestampsToReturn, AttributeId, IndexRange, BrowseDirection, ReferenceTypeId 전체 필드
- 구독 설정 - PublishingInterval, LifetimeCount, MaxKeepAliveCount, MonitoredItem SamplingInterval, QueueSize, Absolute/Percent 데드밴드의 DataChangeFilter
- 알람 계층 - BaseConditionType에서 ExclusiveLimitAlarmType까지 HighHigh/High/Low/LowLow 레벨과 상태 천이(Inactive-Active-Acknowledged-Confirmed)
- PubSub 아키텍처 - MQTT 브로커 및 UADP-UDP 멀티캐스트 전송, PublishedDataSet, WriterGroup, JSON/UADP 메시지 매핑 옵션
자주 묻는 질문
OPC UA란 무엇이고 OPC Classic과 어떻게 다른가요?
OPC UA(Unified Architecture)는 Windows 전용 DCOM 기반인 OPC Classic(DA, HDA, A&E)을 대체하는 플랫폼 독립적, 서비스 지향 산업 통신 표준입니다. 모든 OS(Windows, Linux, 임베디드)에서 실행되며, 다중 전송 프로토콜(TCP 바이너리, HTTPS, WebSocket)을 지원하고, 내장 보안(암호화, 인증, 인증서)을 제공하며, 데이터, 메서드, 이벤트, 이력 접근을 단일 프로토콜로 통합한 정보 모델을 사용합니다.
OPC UA 주소 공간은 어떻게 작동하나요?
주소 공간은 Reference로 연결된 Node의 계층적 트리입니다. 루트는 Objects(NodeId i=85)에서 시작하여 Server 노드(i=2253)와 DeviceSet 같은 사용자 정의 노드를 포함합니다. 각 노드는 NodeClass(Object, Variable, Method 등)를 가지며, NodeId(네임스페이스 + 식별자)로 식별되고, 유형화된 Reference(HasComponent: 부모-자식, Organizes: 논리적 그룹, HasTypeDefinition: 인스턴스-타입 연결)로 다른 노드와 연결됩니다.
4가지 NodeId 형식은 무엇인가요?
NodeId는 네임스페이스 인덱스(ns)와 식별자로 구성됩니다. 4가지 식별자 유형: 숫자형(ns=0;i=85, 표준 노드), 문자열형(ns=2;s=MyVar, 가장 일반적), GUID형(ns=1;g=550e8400..., 범용 고유), Opaque/바이트(ns=3;b=AQID, 원시 바이트). 네임스페이스 0은 OPC UA 표준, ns=1은 서버 고유, ns=2+는 벤더/사용자 네임스페이스입니다.
안전한 OPC UA 세션은 어떻게 수립하나요?
4단계로 진행됩니다: 1) OpenSecureChannel에서 SecurityPolicy(예: Basic256Sha256)와 MessageSecurityMode(SignAndEncrypt) 설정, 2) GetEndpoints로 사용 가능한 서버 엔드포인트 조회, 3) CreateSession에서 SessionTimeout(예: 120000ms) 설정, 4) ActivateSession에서 UserIdentityToken(Anonymous, 사용자명/비밀번호, X.509 인증서) 전달. 보안 정책이 채널의 암호화 및 서명 알고리즘을 결정합니다.
구독과 모니터링 아이템은 어떻게 작동하나요?
CreateSubscription으로 서버 측 퍼블리싱 파라미터를 설정합니다: PublishingInterval(변경 확인 주기, 예: 1000ms), LifetimeCount(Publish 요청 없이 구독 만료까지의 주기 수), MaxKeepAliveCount. 그 다음 CreateMonitoredItems로 감시할 노드를 추가하며, SamplingInterval(값 읽기 주기), QueueSize(변경 버퍼 크기), DataChangeFilter의 데드밴드(Absolute 또는 Percent)로 미미한 변화를 억제합니다.
운영 환경에서 어떤 보안 정책을 사용해야 하나요?
운영 환경에서는 Basic256Sha256 이상(Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss)을 MessageSecurityMode SignAndEncrypt와 함께 사용합니다. None이나 Basic128Rsa15(폐기 예정, 취약)는 절대 사용하지 마세요. 인증은 Anonymous 대신 사용자명/비밀번호 또는 X.509 인증서를 사용합니다. 표준 PKI 디렉토리(/pki/own/ 서버 인증서, /pki/trusted/ 신뢰 클라이언트 인증서, /pki/rejected/ 대기 인증서)로 인증서를 관리합니다.
OPC UA Pub/Sub란 무엇이고 언제 사용하나요?
Pub/Sub는 클라이언트-서버 세션 없이 일대다 또는 다대다 데이터 배포를 가능하게 합니다. Publisher가 PublishedDataSet(예: Temperature, Pressure, Flow 변수)과 WriterGroup(전송: MQTT 브로커 mqtt://broker:1883 또는 UADP-UDP 멀티캐스트 239.0.0.1:4840)을 정의합니다. 고주파 센서 데이터 브로드캐스트, 엣지-클라우드 텔레메트리, 여러 소비자가 동일 데이터를 필요로 하는 시나리오에 사용합니다.
동반 규격(Companion Specification)이란 무엇인가요?
동반 규격은 특정 산업을 위한 표준화된 OPC UA 정보 모델입니다. 주요 규격: OPC 40001-1 Machinery(일반 기계), OPC 40010 Robotics(로봇), OPC 40084 PackML(포장기계), OPC 30000 ISA-95(MES/ERP 연동), OPC 40502 MachineTool(공작기계), OPC 40501 MachineVision(머신비전), OPC 40600 PADIM(공정 자동화). 규격 준수 디바이스는 동일한 방식으로 데이터를 노출하여 플러그 앤 플레이 상호운용성을 가능하게 합니다.