OPC UA 튜토리얼
각 튜토리얼은 목표, 준비물, 단계별 명령과 예상 결과, 자주 생기는 오류, 정리 순서로 이루어집니다. 명령은 macOS(Apple Silicon)에서 실행한 결과입니다. 시작하기 전에 빠른 시작을 한 번 따라 해 보면 좋습니다.
튜토리얼 목록
섹션 제목: “튜토리얼 목록”| 튜토리얼 | 배우는 내용 | 사용하는 패키지 |
|---|---|---|
| PKI와 신뢰 설정 | 응용 프로그램 인증서를 만들고 검사하고 신뢰를 시험합니다. | native |
| C 클라이언트 | C ABI로 연결, Read·Write, Browse, Call을 실행합니다. | native, apps |
| C++ 클라이언트와 서버 | RAII 래퍼로 서버를 만들고 클라이언트로 접속합니다. | native |
| Qt 클라이언트 작업자 | qt_client_worker로 UI 스레드를 막지 않고 요청합니다. |
qt |
| .NET | PDComm.OpcUa로 서버와 클라이언트를 만듭니다. |
dotnet |
| MFC 작업자 | Windows MFC 응용 프로그램에서 MfcClientWorker를 씁니다. |
Windows native |
| 구독 | 데이터 변경 알림을 받습니다. | apps |
| 이벤트와 알람 | 알람을 받고 Acknowledge, Confirm, ConditionRefresh를 호출합니다. | apps |
| 이력 | Raw 이력을 읽고 연속 지점을 씁니다. | apps |
| UDP PubSub | UADP 메시지를 UDP로 게시하고 구독합니다. | apps |
| MQTT PubSub | UADP 메시지를 MQTT 브로커로 게시하고 구독합니다. | apps |
SDK 서버에 없는 기능(이벤트, 이력, PubSub)은 시뮬레이터 패키지 apps의 헤드리스 프로그램으로 실습합니다.
실습 환경 준비
섹션 제목: “실습 환경 준비”여러 튜토리얼이 같은 실습 폴더를 씁니다. 처음 한 번 준비합니다.
-
실습 폴더를 만들고 패키지 파일(
pdcomm-opcua-native-darwin-arm64.tar.gz,pdcomm-opcua-apps-darwin-arm64.tar.gz)을 그 폴더로 복사합니다.터미널 창 mkdir opcua-labcd opcua-lab -
두 패키지를 풉니다.
터미널 창 tar -xzf pdcomm-opcua-native-darwin-arm64.tar.gztar -xzf pdcomm-opcua-apps-darwin-arm64.tar.gz -
실습에서 쓸 환경 변수를 설정합니다. 새 터미널을 열 때마다 실습 폴더에서 이 네 줄을 다시 실행합니다. 마지막 줄은 라이선스 파일 경로입니다. SDK 예제에는
opcua-client와opcua-server모듈 라이선스가 필요하고(평가판에는 둘 다 들어 있습니다), 시뮬레이터에는 필요하지 않습니다. 라이선스 설치와 확인을 참고합니다.터미널 창 export OPCUA_SDK="$PWD/pdcomm-opcua-native-darwin-arm64"export OPCUA_APPS="$PWD/pdcomm-opcua-apps-darwin-arm64"export PKI="$OPCUA_SDK/examples/opcua/pki"export PDCOMM_LICENSE_FILE="$HOME/pdcomm/pdcomm.license" -
PKI와 신뢰 설정을 따라
$PKI에 인증서를 만듭니다. -
SDK 예제를 빌드합니다.
터미널 창 cd "$OPCUA_SDK"cmake -S examples/opcua -B build -DCMAKE_BUILD_TYPE=Releasecmake --build build --config Release
apps 패키지에는 다음이 들어 있습니다.
| 경로 | 내용 |
|---|---|
PDComm OPC UA Simulator.app |
Qt GUI 시뮬레이터 |
bin/pdcomm-opcua-headless |
JSON 줄 단위로 동작하는 헤드리스 시뮬레이터 |
bin/pdcomm-opcua-mcp |
AI 도구용 MCP 서버 |
lib/ |
시뮬레이터 라이브러리, Qt와 OpenSSL 런타임 |
examples/opcua/scenarios/simulator-tour.json |
모든 작업 공간을 도는 시나리오 |
Windows에서는 PowerShell에서 $env:OPCUA_SDK = "$PWD\pdcomm-opcua-native-windows-AMD64", $env:PDCOMM_LICENSE_FILE = "$HOME\pdcomm\pdcomm.license"처럼 환경 변수를 설정하고 ZIP 패키지를 풉니다.