Sparkplug B — IIoT 표준 (MQTT 기반)
Sparkplug B 는 Eclipse Tahu / Cirrus Link 가 정의한 IIoT (산업용 IoT) 메시징 표준 입니다. MQTT broker 위에 표준 topic 구조 + Google Protobuf payload 를 얹어 다양한 벤더 장비가 상호 운용되도록 합니다. PlantPulse Edge 는 broker 의 Sparkplug topic 들을 구독해서 metric 을 자동 캐시한 뒤 태그 read() 로 즉시 노출합니다.
등록 폼 입력값
| 입력 칸 | 무엇을 적나요 | 예시 |
|---|---|---|
| IP 주소 | MQTT broker | 192.168.10.50 |
| 포트 | MQTT broker port | 1883 (평문) / 8883 (TLS, 추후 지원) |
| Group ID (group-id) | Sparkplug Group — 공장/사업장 단위 | FactoryA, Plant01 |
| Edge Node ID (edge-node-id) | 단일 노드 또는 + (모든 노드) | + (기본), edge-01 |
| Keep Alive (keep-alive) | MQTT keep-alive 초 | 60 (기본) |
| Connect Timeout (connect-timeout) | MQTT 연결 타임아웃 ms | 5000 (기본) |
송신 측 (Eclipse Tahu / Ignition / Cirrus Link MQTT Engine 등) 이 어떤 group / edge ID 로 NBIRTH 를 보내는지 확인 후 동일한 값을 입력하세요. edge-node-id=+ 로 두면 그룹 내 모든 노드를 한 번에 구독합니다.
태그의 PLC 주소 표기
Sparkplug 의 metric 식별자는 group 이후의 부분만 사용합니다 (group 은 driver 옵션 분리).
| 표기 | 의미 |
|---|---|
edge1/Temperature | Edge node edge1 의 node-level metric Temperature |
edge1/motor1/RPM | Edge node edge1 산하 device motor1 의 metric RPM |
edge1/dev2/Status | 예: 디바이스 상태 boolean |
Sparkplug 송신 측은 NBIRTH/DBIRTH 시 metric 이름과 alias(숫자) 를 함께 발행합니다. 이후 NDATA/DDATA 는 alias 만 보내서 페이로드 크기를 줄입니다. PlantPulse 드라이버가 자동으로 alias↔이름 맵을 유지하므로, 사용자는 항상 이름 으로만 입력하면 됩니다.
데이터 타입 자동 감지
Sparkplug B Payload 는 metric 별로 datatype 을 명시합니다 (Int8/16/32/64, UInt8/16/32/64, Float, Double, Boolean, String, DateTime, Bytes 등). 드라이버가 wire 의 datatype 에 따라 적절한 타입으로 변환해 String 으로 캐시하므로 태그의 data_type 은 다음과 같이 매칭하세요.
| Sparkplug datatype | 권장 data_type |
|---|---|
| Int8 / Int16 / Int32 / UInt8 / UInt16 / UInt32 | Integer |
| Int64 / UInt64 / DateTime | Long |
| Float | Float |
| Double | Double |
| Boolean | Boolean |
| String / Text / UUID | String |
쓰기 (NCMD / DCMD)
PlantPulse 의 write 는 자동으로 NCMD/DCMD 로 분기됩니다.
edge1/SetPoint(segment 2) → NCMD publish (node 레벨 명령)edge1/dev1/SetPoint(segment 3+) → DCMD publish (device 레벨 명령)
현재 phase 는 모든 명령 값을 String datatype 으로 publish 합니다. 송신 측 (Tahu / Ignition) 이 metric 의 datatype 을 알고 있으므로 보통 자동 변환됩니다.
참고 링크
- Eclipse Tahu —
<https://eclipse.dev/tahu/> - Sparkplug Spec v3.0 —
<https://sparkplug.eclipse.org/specification/> - Cirrus Link MQTT Engine —
<https://www.cirrus-link.com/mqtt-engine/>