Qt OPC UA 개요
OPC UA는 산업용 애플리케이션에서 데이터 모델링 및 데이터 교환을 위한 프로토콜입니다.
OPC UA 서버는 참조로 연결된 노드 메쉬로 구성된 데이터에 대한 액세스를 제공합니다. 다양한 참조 유형과 메타데이터를 포함하는 노드를 사용함으로써 클라이언트는 데이터 구조를 미리 알지 못해도 데이터를 탐색하고 해석할 수 있습니다.
각 노드에는 고유 식별자와 읽기 및 쓰기가 가능한 속성이 있습니다. 그 중에서도 값을 저장하는 변수 노드와, 매개변수 및 반환 값을 설명하는 노드가 연결된 호출 가능한 메서드 노드가 있습니다. 이벤트 발생 시 알림 및 변수 노드의 값 변경 모니터링 기능도 제공됩니다.
참조를 사용하여 노드를 결합함으로써 복잡한 객체를 생성할 수 있습니다. 상속도 가능합니다. OPC UA는 특수한 요구 사항에 맞게 확장할 수 있는 사전 정의된 모델을 지원합니다.
OPC UA는 임베디드 센서부터 제조 실행 시스템 및 전사적 자원 관리(ERP) 시스템에 이르기까지 모든 수준에서 사용될 수 있도록 설계된, 플랫폼 독립적인 OPC Classic의 후속 버전입니다. 이 프로토콜은 서비스 요청 및 응답을 위한 표준화된 메시지를 기반으로 하는 서비스 지향 아키텍처를 갖추고 있습니다. 이러한 메시지를 인코딩하고 네트워크를 통해 전송하는 방법에는 여러 가지가 있습니다. 가장 일반적인 방법은 TCP를 통한 이진 인코딩입니다.
OPC UA 프로토콜에서 구현된 기능
다음 표는 Qt OPC UA 에서 지원하는 OPC UA의 기능을 요약한 것입니다.
| 기능 |
|---|
| 읽기 |
| 일괄 읽기 |
| HistoryRead (Raw) |
| 쓰기 |
| 일괄 쓰기 |
| 다차원 배열 |
| 찾아보기 |
| 데이터 변경 구독 |
| 이벤트 구독 |
| 구독/모니터링 대상 항목 수정 |
| 메서드 호출 |
| 경로 확인 |
| GetEndpoints |
| FindServers |
| 노드 관리 |
| 노드 등록 |
| 노드 등록 해제 |
데이터 유형
Qt OPC UA 에서는 현재 OPC UA 데이터 유형의 일부만 지원됩니다.
| 데이터 유형 | Qt OPC UA 데이터 유형 |
|---|---|
| Int16, Int32, Int64 | 직접 사용 |
| UInt16, UInt32, UInt64 | 직접 사용 |
| 바이트 | quint8 |
| SByte | qint8 |
| 부울 | 직접 사용 |
| Double | 직접 사용됨 |
| Float | 직접 사용됨 |
| 문자열 | QString |
| LocalizedText | QOpcUaLocalizedText |
| DateTime | QDateTime |
| ByteString | QByteArray |
| XmlElement | QString |
| 노드 ID | QString |
| GUID | QUuid |
| 정규화된 이름 | QOpcUaQualifiedName |
| 상태 코드 | QOpcUa::UaStatusCode |
| 범위 | QOpcUaRange |
| EU정보 | QOpcUaEUInformation |
| 복소수 | QOpcUaComplexNumber |
| DoubleComplexNumber | QOpcUaDoubleComplexNumber |
| 축 정보 | QOpcUaAxisInformation |
| XV | QOpcUaXValue |
| 인수 | QOpcUaArgument |
| 확장된 노드 ID | QOpcUaExpandedNodeId |
| 확장 객체 | QOpcUaExtensionObject |
| 구조체 정의 | QOpcUaStructureDefinition |
| 구조체 필드 | QOpcUaStructureField |
| 열거형 정의 | QOpcUaEnumDefinition |
| 열거형 필드 | QOpcUaEnumField |
| 진단 정보 | QOpcUaDiagnosticInfo |
| 단순 속성 피연산자 | QOpcUaSimpleAttributeOperand |
| 속성 피연산자 | QOpcUaAttributeOperand |
| 리터럴 연산자 | QOpcUaLiteralOperand |
| ElementOperand | QOpcUaElementOperand |
| 상대 경로 요소 | QOpcUaRelativePathElement |
| 콘텐츠 필터 요소 | QOpcUaContentFilterElement |
| 이벤트 필터 | QOpcUaMonitoringParameters::EventFilter |
클래스 및 소유권
사용자에게 노출되는 두 가지 중요한 클래스는 QOpcUaClient 와 QOpcUaNode 입니다.
두 클래스의 객체는 사용자가 소유하며, 더 이상 필요하지 않을 때는 삭제해야 합니다.
로깅 범주
다음 표는 Qt OPC UA 에서 사용하는 로깅 범주를 요약한 것입니다.
| 로깅 범주 | 설명 |
|---|---|
| qt.opcua | QOpcUaProvider 및 QOpcUaClient |
| qt.opcua.plugins.open62541 | open62541 플러그인에서 생성된 메시지 |
Open62541 전용 로깅 범주
open62541 SDK 로깅 범주는 컴파일 시점에 구성되는 open62541의 로그 레벨에 따라 달라집니다. 기본값은 300이며, 이 경우 info, warning, error 및 critical이 활성화됩니다. 더 간결하거나 더 상세한 출력을 얻으려면 다른 구성으로 open62541 SDK를 재빌드해야 합니다.
다음 표는 open62541에서 사용하는 로깅 범주를 보여줍니다:
| Open62541 로깅 범주 | 설명 |
|---|---|
| qt.opcua.plugins.open62541.sdk.network | open62541 네트워크에서 생성된 메시지 |
| qt.opcua.plugins.open62541.sdk.securechannel | open62541 채널에서 생성된 메시지 |
| qt.opcua.plugins.open62541.sdk.session | open62541 세션에서 생성된 메시지 |
| qt.opcua.plugins.open62541.sdk.server | open62541 서버 구성 요소에서 생성된 메시지 |
| qt.opcua.plugins.open62541.sdk.client | open62541 클라이언트에서 생성된 메시지 |
| qt.opcua.plugins.open62541.sdk.userland | open62541 사용자 영역에서 생성된 메시지 |
| qt.opcua.plugins.open62541.sdk.securitypolicy | open62541 보안 정책에 의해 생성된 메시지 |
라이선스
Qt OPC UA 모듈은 The Qt Company의 상용 라이선스에 따라 제공됩니다. 또한, 이 모듈은 자유 소프트웨어 라이선스 하에서도 제공됩니다. 이러한 자유 소프트웨어 라이선스는 GNU Lesser General Public License 버전 3 또는 GNU General Public License 버전 2입니다. 자세한 내용은 Qt 라이선싱을 참조하십시오.
Qt OPC UA Qt 6.12.0에는 다음의 허용적인 라이선스에 따라 제공되는 타사 모듈이 포함될 수 있습니다:
Mozilla Public License 2.0, Creative Commons Zero v1.0 Universal, Creative Commons Attribution Share Alike 4.0 International, BSD 3-Clause "New" 또는 "Revised" License, Apache License 2.0 및 MIT License |
외부 라이브러리에 대한 링크에는 백엔드 제공업체의 라이선스가 적용됩니다.
Open62541
Open62541 플러그인은 Qt OPC UA 과 동일한 라이선스로 제공됩니다. Open62541 라이브러리 자체는 Mozilla Public License v2.0에 따라 라이선스가 부여됩니다.
보안 지원은 open62541 라이브러리의 OpenSSL 플러그인에 의해 제공됩니다. open62541 플러그인이 보안 지원과 함께 빌드되었으나 대상 시스템에서 OpenSSL을 사용할 수 없는 경우, open62541 플러그인은 로드되지 않습니다.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.