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 はドライバオプションで分離)。
| 表記 | 意味 |
|---|---|
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/>