글 / MQTT 메시징

VDA 5050 토픽과 메시지 구조

VDA 5050 표준은 관제와 차량이 MQTT와 JSON으로 교환하는 토픽과 메시지 형식을 규정한다.

작성일 · 읽는 시간 3분 · VDA 5050 3.0 기준

표준의 범위

제조사가 서로 다른 차량을 하나의 관제에 연동하려면 메시지 형식이 동일해야 한다. VDA 5050은 관제(fleet control)와 차량(mobile robot)이 MQTT 브로커를 거쳐 JSON 메시지를 교환하는 방식을 규정한다.

토픽 구조

text
interfaceName/majorVersion/manufacturer/serialNumber/topic

vda5050/v3/makerA/0001/order

majorVersion은 표준의 주 버전에 v를 붙인 값이고, manufacturer와 serialNumber는 차량의 제조사와 일련번호이다. 마지막 topic이 메시지 종류이다.

VDA 5050 토픽을 이루는 다섯 단계와 예시 값

메시지 종류와 방향

종류 방향 내용
order 관제 → 차량 주행 지시
instantActions 관제 → 차량 즉시 실행할 동작
state 차량 → 관제 차량 상태
connection 차량·브로커 → 관제 연결 상태 알림(단절 포함)

표준에는 이 외에 factsheet, visualization, zoneSet, responses가 있다. QoS는 connection만 1이고 나머지는 모두 0이다. retain은 connection과 factsheet에 사용한다.

관제와 차량이 브로커를 거쳐 교환하는 메시지 종류별 방향과 QoS

order의 노드와 엣지

order는 통과할 노드와 노드 사이를 연결하는 엣지의 목록이다. sequenceId는 첫 노드가 0, 첫 엣지가 1이며 노드와 엣지가 교대로 이어진다. released가 true인 구간은 차량이 통과할 구간이고, false인 구간은 아직 확정되지 않은 구간이다.

order의 노드와 엣지에 부여되는 sequenceId와 released 구간

json
{
  "headerId": 1,
  "timestamp": "2026-08-06T09:00:00.000Z",
  "version": "3.0.0",
  "manufacturer": "makerA",
  "serialNumber": "0001",
  "orderId": "order-17",
  "orderUpdateId": 0,
  "nodes": [
    {"nodeId": "n1", "sequenceId": 0, "released": true, "actions": []},
    {"nodeId": "n2", "sequenceId": 2, "released": true, "actions": []}
  ],
  "edges": [
    {"edgeId": "e1", "sequenceId": 1, "released": true, "actions": []}
  ]
}

경로를 연장할 때는 orderId를 유지하고 orderUpdateId를 증가시켜 다시 전송한다.