콘텐츠로 이동
무료 평가 시작

시뮬레이터 PubSub 화면

OPC UA 시뮬레이터 GUI의 PubSub 탭은 UADP 메시지를 UDP나 MQTT 브로커로 발행하고 받습니다. 이 문서는 MQTT를 쓰는 방법만 다룹니다. UDP는 OPC UA 가이드를 참고합니다.

시뮬레이터 패키지에서 운영체제에 맞는 프로그램을 실행합니다.

운영체제 프로그램
macOS 패키지의 PDComm OPC UA Simulator.app
Linux bin/pdcomm-opcua-simulator
Windows bin\pdcomm-opcua-simulator.exe

창 제목은 PDComm OPC UA Simulator이고, PubSub 탭은 일곱 번째 탭입니다.

Transport가 UADP over MQTT로 설정되고 DataSet 두 개를 발행해 다시 받은 PubSub 탭Transport가 UADP over MQTT로 설정되고 DataSet 두 개를 발행해 다시 받은 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 closed

Start PubSub를 누르면 같은 설정으로 다시 연결합니다.

열 뜻
Publisher NetworkMessage의 PublisherId
Writer group WriterGroupId
Sequence DataSetMessage 순번. QoS 1에서 같은 메시지가 두 번 오면 같은 순번이 반복됩니다.
Fields 필드 값의 JSON 배열
Source MQTT로 받았으면 mqtt

표는 최근 1,000행까지 보관합니다. 시뮬레이터는 Show received를 누르기 전까지 받은 메시지를 최대 256개 보관하고, 넘치면 가장 오래된 메시지부터 버립니다.

시작이나 발행이 실패하면 창 아래 상태 표시줄에 빨간 글씨로 <동작> failed: <오류>가 나옵니다.

브로커가 없는 포트로 시작해 pubsub_start failed: MQTT broker connection failed 오류가 표시된 상태 표시줄브로커가 없는 포트로 시작해 pubsub_start failed: MQTT broker connection 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 열로 실패한 동작과 걸린 시간을 확인합니다. 진단 로그 파일은 같은 탭에서 켭니다. 자세한 내용은 검증 도구에 있습니다.