시뮬레이터 PubSub 화면
OPC UA 시뮬레이터 GUI의 PubSub 탭은 UADP 메시지를 UDP나 MQTT 브로커로 발행하고 받습니다. 이 문서는 MQTT를 쓰는 방법만 다룹니다. UDP는 OPC UA 가이드를 참고합니다.
GUI 실행
섹션 제목: “GUI 실행”시뮬레이터 패키지에서 운영체제에 맞는 프로그램을 실행합니다.
| 운영체제 | 프로그램 |
|---|---|
| macOS | 패키지의 PDComm OPC UA Simulator.app |
| Linux | bin/pdcomm-opcua-simulator |
| Windows | bin\pdcomm-opcua-simulator.exe |
창 제목은 PDComm OPC UA Simulator이고, PubSub 탭은 일곱 번째 탭입니다.
화면 구성
섹션 제목: “화면 구성”

그림은 Role을 Publisher and subscriber로 두고 Publish DataSet을 두 번 누른 뒤 Show received를 누른 상태입니다.
설정 항목
섹션 제목: “설정 항목”| 항목 | MQTT에서의 뜻 | 기본값 |
|---|---|---|
| Transport | UADP over MQTT를 고릅니다. UADP over UDP는 UDP 전송입니다. | UADP over UDP |
| Role | Publisher and subscriber는 발행과 구독을 함께, Publisher는 발행만, Subscriber는 구독만 합니다. | Publisher and subscriber |
| UDP listen, UDP destination | UDP 전용입니다. MQTT에서는 쓰지 않습니다. | |
| MQTT broker | 브로커의 IP 주소:포트. 호스트 이름은 받지 않습니다. |
127.0.0.1:1883 |
| MQTT topic | 발행하고 구독할 토픽 하나. 와일드카드 +, #은 쓸 수 없고 길이는 1~256바이트입니다. |
pdcomm/opcua/simulator |
| DataSet fields | Publish DataSet이 보낼 필드의 JSON 배열. 항목마다 type과 value를 씁니다. 1~64개입니다. |
Boolean, Int32, String 세 필드 |
DataSet fields의 type에는 Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Float, Double, String, DateTime, ByteString(16진수 문자열), NodeId, LocalizedText를 쓸 수 있습니다.
브로커 연결 제한 시간은 Connection & Security 탭 Client session 영역의 **Timeout (ms)**를 따릅니다.
| 단추 | 동작 |
|---|---|
| Start PubSub | 현재 설정을 적용하고 브로커에 연결합니다. 구독하는 역할이면 SUBACK까지 기다립니다. 실행 중에는 Stop PubSub로 바뀝니다. |
| Stop PubSub | DISCONNECT를 보내고 연결을 닫습니다. |
| Publish DataSet | DataSet fields로 UADP NetworkMessage 하나를 만들어 QoS 1로 발행합니다. 기본 필드로 처음 발행하면 상태 줄에 Published sequence 1 (51 bytes)가 나옵니다. |
| Show received | 받은 메시지를 표에 더하고 상태 줄을 새로 고칩니다. 자동으로 새로 고치지 않으므로 필요할 때 누릅니다. |
PubSub가 실행 중일 때는 PubSub 설정을 바꿀 수 없습니다. 바꾸려면 Stop PubSub를 누른 뒤 다시 시작합니다.
상태 줄
섹션 제목: “상태 줄”단추 아래 줄은 PubSub 상태를 보여 줍니다.
mqtt both · broker 127.0.0.1:1883 · topic opcua/uadp/data/77/line1 · sent 2 · acknowledged 2 · received 2| 값 | 뜻 |
|---|---|
sent |
발행한 메시지 수 |
acknowledged |
브로커가 PUBACK 성공으로 확인한 수 |
received |
받아들인 메시지 수 |
rejected |
받았지만 거부한 메시지 수. 1 이상일 때만 표시합니다. |
last error |
마지막 오류. 있을 때만 표시합니다. |
브로커 연결이 끊겨 PubSub가 멈추면 줄 앞에 Stopped ·가 붙고 단추는 Start PubSub로 돌아갑니다.
Stopped · mqtt both · broker 127.0.0.1:1883 · topic opcua/uadp/data/77/line1 · sent 2 · acknowledged 2 · received 2 · last error: MQTT: MQTT transport closedStart PubSub를 누르면 같은 설정으로 다시 연결합니다.
받은 메시지 표
섹션 제목: “받은 메시지 표”| 열 | 뜻 |
|---|---|
| Publisher | NetworkMessage의 PublisherId |
| Writer group | WriterGroupId |
| Sequence | DataSetMessage 순번. QoS 1에서 같은 메시지가 두 번 오면 같은 순번이 반복됩니다. |
| Fields | 필드 값의 JSON 배열 |
| Source | MQTT로 받았으면 mqtt |
표는 최근 1,000행까지 보관합니다. 시뮬레이터는 Show received를 누르기 전까지 받은 메시지를 최대 256개 보관하고, 넘치면 가장 오래된 메시지부터 버립니다.
오류 표시
섹션 제목: “오류 표시”시작이나 발행이 실패하면 창 아래 상태 표시줄에 빨간 글씨로 <동작> failed: <오류>가 나옵니다.


그림은 MQTT broker에 브로커가 없는 127.0.0.1:1을 넣고 Start PubSub를 누른 결과입니다.
오류 문장의 뜻은 연결 문제와 전달 문제에서 찾습니다.
설정 저장
섹션 제목: “설정 저장”Project 메뉴의 **Save…**는 PubSub 설정을 포함한 전체 구성을 JSON 파일로 저장하고, **Open…**은 다시 불러옵니다. 불러오기는 서버, 클라이언트, PubSub가 모두 멈춘 상태에서만 됩니다.
동작 기록 확인
섹션 제목: “동작 기록 확인”Trace & Diagnostics 탭의 Refresh trace를 누르면 pubsub_start, pubsub_publish 같은 동작이 Workspace 값 pubsub로 기록되어 있습니다.
Result, Elapsed (us), Error 열로 실패한 동작과 걸린 시간을 확인합니다.
진단 로그 파일은 같은 탭에서 켭니다. 자세한 내용은 검증 도구에 있습니다.