प्रोटोकॉल आर्किटेक्चर

हर मशीन को जोड़ने के लिए
एक प्रोटोकॉल

MQTT एक हल्का, सुरक्षित publish-subscribe प्रोटोकॉल है जो Allen-Bradley, Siemens, Beckhoff और हर दूसरे PLC को एक मानक के तहत जोड़ता है। कोई proprietary lock-in नहीं। नेटिव JSON। पहले दिन से cloud-ready।

<100 KB
Client का आकार
2 bytes
न्यूनतम header साइज़
TLS 1.3
एन्क्रिप्शन
Pub/Sub
आर्किटेक्चर

MQTT बनाम इंडस्ट्रियल प्रोटोकॉल

इंडस्ट्रियल प्रोटोकॉल cloud के दौर के लिए नहीं बने थे। MQTT बना था। आधुनिक मैन्युफैक्चरिंग के लिए अहम पहलुओं पर इनकी तुलना यह रही।

पहलू
MQTT
OPC-UA
Modbus
PROFINET
EtherNet/IP
हल्कापन
★★★★★
★★
★★★★
★★
★★
Cloud Native
★★★★★
★★★
★
★
★
Pub/Sub
नेटिव
v1.04+
नहीं
नहीं
नहीं
JSON सपोर्ट
नेटिव
XML/Binary
सिर्फ़ Binary
सिर्फ़ Binary
सिर्फ़ Binary
TLS सिक्योरिटी
TLS 1.3
TLS 1.3
कोई नहीं
TLS वैकल्पिक
TLS वैकल्पिक
बैंडविड्थ
2-byte header
भारी
कम
ज़्यादा
ज़्यादा
Multi-Vendor
कोई भी PLC
ज़्यादातर PLC
ज़्यादातर PLC
Siemens
Rockwell
दोतरफ़ा
Pub/Sub दोनों
Client/Server
Master/Slave
Controller
Producer
Edge Gateway
बिल्ट-इन
सर्वर ज़रूरी
Converter ज़रूरी
Gateway ज़रूरी
Gateway ज़रूरी
AWS IoT
नेटिव
Greengrass के ज़रिए
सपोर्ट नहीं
सपोर्ट नहीं
सपोर्ट नहीं

MQTT + Sparkplug B क्यों

MQTT ट्रांसपोर्ट देता है। Sparkplug B उसमें इंडस्ट्रियल अर्थ (semantics) जोड़ता है। साथ मिलकर ये हर मशीन पर एक मानकीकृत, interoperable डेटा लेयर देते हैं।

हल्का और तेज़

MQTT का न्यूनतम 2-byte header और binary प्रोटोकॉल का मतलब है OPC-UA या HTTP-आधारित विकल्पों से कम बैंडविड्थ, कम CPU और कम latency।

  • Client लाइब्रेरी <100KB फ़्लैश मेमोरी में आ जाती है
  • Microcontrollers और edge PLC पर चलता है
  • उसी डेटा के लिए OPC-UA से 10x कम बैंडविड्थ
  • अविश्वसनीय नेटवर्क के लिए डिज़ाइन किया गया (QoS 0/1/2)

नेटिव JSON Payload

सिर्फ़ binary वाले प्रोटोकॉल (Modbus, PROFINET) के उलट, MQTT JSON को नेटिव रूप से ले जाता है। न कस्टम parser, न binary-से-text converter, न middleware ट्रांसलेशन लेयर।

  • Debugging के लिए इंसान के पढ़ने लायक payload
  • NoSQL documents (DynamoDB, MongoDB) से सीधी मैपिंग
  • Sparkplug B timestamps के साथ typed metrics जोड़ता है
  • Schema-on-read — कोई सख़्त डेटा कॉन्ट्रैक्ट नहीं

एंटरप्राइज़ सिक्योरिटी

TLS 1.3 एन्क्रिप्शन, certificate-आधारित authentication, और topic-स्तर के ACL। Modbus TCP में सिक्योरिटी शून्य है। PROFINET और EtherNet/IP सिक्योरिटी को वैकल्पिक मानते हैं।

  • Mutual authentication (mTLS) के साथ TLS 1.3
  • हर डिवाइस के लिए X.509 certificate
  • Topic-स्तर की access control lists
  • हर thing/डिवाइस के लिए AWS IoT Core policies

यूनिवर्सल प्रोटोकॉल ब्रिज

हर PLC वेंडर अलग भाषा बोलता है। MQTT यूनिवर्सल अनुवादक का काम करता है — PLC ब्रांड कोई भी हो, शॉप फ़्लोर से cloud तक एक ही प्रोटोकॉल।

  • Allen-Bradley → Ignition Edge → MQTT
  • Siemens S7 → OPC-UA Gateway → MQTT
  • Beckhoff → नेटिव MQTT client
  • Modbus RTU → Edge converter → MQTT

शॉप फ़्लोर से Cloud तक

MQTT आपके सभी PLC को एक ही डेटा स्ट्रीम में जोड़ता है। लोकल स्पीड के लिए ऑन-प्रेम broker, और cloud में डेटा सहेजने व analytics के लिए AWS IoT Core।

PLCs
Allen-Bradley
EtherNet/IP • CIP
Siemens
PROFINET • S7
Beckhoff
ADS • TwinCAT
Modbus डिवाइस
RTU • TCP
सब MQTT + Sparkplug B पर आकर मिलते हैं
ऑन-प्रेम
MQTT Broker (ऑन-प्रेम)
Mosquitto • HiveMQ • EMQX
लोकल NoSQL DB
MongoDB • InfluxDB • TimescaleDB
क्लाउड
AWS IoT Core
MQTT Bridge • Rules Engine
DynamoDB
NoSQL • Serverless • Auto-scaling
PulseMQ Dashboard
React • GraphQL • Real-time

नेटिव JSON बनाम Binary प्रोटोकॉल

MQTT payload सीधे NoSQL documents में मैप होते हैं। न ट्रांसलेशन, न middleware, न डेटा का नुक़सान।

MQTT + Sparkplug B Payload
// Direct to DynamoDB - no conversion needed
{
  "topic": "spBv1.0/CUST00/DDATA/LOC01/MACH02",
  "metrics": [
    { "name": "machine_state",  "value": 1,     "type": "Int32"   },
    { "name": "line_speed",     "value": 12.4,  "type": "Float"   },
    { "name": "temperature",    "value": 185.2, "type": "Float"   },
    { "name": "fabric_length",  "value": 4521,  "type": "Float"   }
  ],
  "timestamp": 1710288000000
}
Modbus / PROFINET (Binary)
// Requires custom parser + register mapping
// Register 40001: 0x0001 (machine_state?)
// Register 40002: 0x4148 0xCCCD (line_speed?)
// Register 40004: 0x4339 0x3333 (temperature?)
// Register 40006: 0x458D 0x2000 (fabric_length?)

// No field names, no types, no timestamps
// Must maintain register map spreadsheet
// Byte order varies by vendor (big/little endian)
// Changes require rewriting parser code

01 03 00 00 00 08 44 0C // raw bytes

Sparkplug B स्पेसिफ़िकेशन

Sparkplug B (Eclipse Foundation, v3.0) MQTT के ऊपर इंडस्ट्रियल अर्थ (semantics) जोड़ता है। यह topic संरचना, metric के प्रकार, birth/death certificates और state मैनेजमेंट तय करता है — और कच्चे MQTT को plug-and-play इंडस्ट्रियल डेटा बस में बदल देता है।

Topic Namespace

namespace/group_id/message_type/edge_node_id/device_id
spBv1.0/CUST00/DDATA/LOC01/MACH02
group_id = कस्टमर / साइट message_type = DBIRTH, DDATA, DDEATH... edge_node = लोकेशन / Gateway device_id = मशीन / PLC

Message के प्रकार

NBIRTH Node

Edge node ऑनलाइन आता है। सभी उपलब्ध डिवाइस और उनकी metric परिभाषाएँ घोषित करता है। Gateway के लिए birth certificate का काम करता है।

NDEATH Node

Edge node ऑफ़लाइन हो जाता है (MQTT Last Will & Testament के ज़रिए)। Broker इसे अपने आप publish करता है — कोई कोड नहीं चाहिए। सभी डिवाइस डेटा को stale (पुराना) मार्क कर दिया जाता है।

DBIRTH Device

डिवाइस (PLC) ऑनलाइन आता है। नाम, प्रकार और शुरुआती वैल्यू के साथ पूरी metric सूची publish करता है। इस मशीन का डेटा कॉन्ट्रैक्ट तय करता है।

DDATA Device

Runtime डेटा। सिर्फ़ बदली हुई वैल्यू publish करता है (report by exception)। सभी subscribers को अप-टू-डेट रखते हुए बैंडविड्थ कम से कम रखता है।

DDEATH Device

डिवाइस ऑफ़लाइन हो जाता है। इसे edge node publish करता है (डिवाइस ख़ुद नहीं)। Dashboard तुरंत मशीन को disconnected दिखाता है।

DCMD Command

डिवाइस को write कमांड। MES, PLC को रेसिपी पैरामीटर, बैच कमांड या state transitions भेजता है। दोतरफ़ा कंट्रोल।

Metric संरचना (Protobuf Encoded)

DBIRTH — पूरी State (सभी metrics)
// Device birth: complete metric catalog
{
  "timestamp": 1710288000000,
  "metrics": [
    {
      "name": "machine_state",
      "alias": 1,
      "timestamp": 1710288000000,
      "dataType": "Int32",
      "value": 0
    },
    {
      "name": "line_speed",
      "alias": 2,
      "dataType": "Float",
      "value": 0.0
    },
    {
      "name": "Outputs/total_length",
      "alias": 3,
      "dataType": "Float",
      "value": 0.0
    },
    {
      "name": "Recipe/temperature_setpoint",
      "alias": 4,
      "dataType": "Float",
      "value": 185.0
    }
  ],
  "seq": 0
}
DDATA — सिर्फ़ बदली हुई वैल्यू
// Runtime data: only what changed (RBE)
{
  "timestamp": 1710288005000,
  "metrics": [
    {
      "name": "line_speed",
      "alias": 2,
      "timestamp": 1710288005000,
      "dataType": "Float",
      "value": 12.4
    },
    {
      "name": "Outputs/total_length",
      "alias": 3,
      "timestamp": 1710288005000,
      "dataType": "Float",
      "value": 4521.8
    }
  ],
  "seq": 42
}

// Alias allows compact wire format
// Seq tracks ordering (0-255, wraps)
// If seq gap detected → rebirth request

Session Awareness और Auto-Discovery

Birth Certificate

जब कोई डिवाइस कनेक्ट होता है, DBIRTH हर metric को नाम, प्रकार और शुरुआती वैल्यू के साथ publish करता है। Subscribers को डेटा कॉन्ट्रैक्ट तुरंत पता चल जाता है — शून्य कॉन्फ़िगरेशन।

Death Certificate

Disconnect होने पर MQTT Last Will & Testament अपने आप NDEATH/DDEATH ट्रिगर करता है। Dashboard कुछ ही सेकंड में offline स्टेट दिखाता है — polling की ज़रूरत नहीं।

Report by Exception

DDATA सिर्फ़ बदले हुए metrics भेजता है। अगर तापमान नहीं बदला, तो वह payload में नहीं होता। Polling प्रोटोकॉल की तुलना में बैंडविड्थ 80-95% तक कम करता है।

Sequence क्रम

हर message का एक seq नंबर (0-255) होता है। अगर बीच में gap दिखे, तो subscriber rebirth का अनुरोध करता है — ख़ुद ठीक होने वाला (self-healing) डेटा।

सपोर्ट किए गए डेटा प्रकार

Int8 / Int16
Signed integers
Int32 / Int64
मशीन state, काउंटर
UInt8–UInt64
Unsigned integers
Float / Double
स्पीड, तापमान, लंबाई
Boolean
On/off, alarm
String
Job ID, लॉट नंबर
DateTime
epoch से ms
Bytes
Binary blobs, फ़ाइलें
DataSet
टेबल डेटा (rows/cols)
Template
UDT परिभाषाएँ

PulseMQ, Sparkplug B का इस्तेमाल कैसे करता है

Inbound (PLC → Cloud)

  • DBIRTH → मशीन सिग्नल और डेटा प्रकारों की अपने आप पहचान
  • DDATA → रियल-टाइम OEE, job ट्रैकिंग, मटीरियल फ़्लो
  • DDEATH → मशीन offline होने की पहचान (<5s)
  • AWS IoT Core rules, Sparkplug B topics को parse करते हैं

Outbound (Cloud → PLC)

  • DCMD → रेसिपी डाउनलोड (ISA-88 बैच पैरामीटर)
  • DCMD → PackML state कमांड (Start, Stop, Abort)
  • DCMD → MES से मटीरियल validation ACK
  • DCMD → कंटीन्यूअस प्रोसेस के लिए Boundary ACK

सिक्योरिटी शुरू से अंदर

MQTT को शुरू से ही सिक्योरिटी को ध्यान में रखकर डिज़ाइन किया गया। Modbus में कोई सिक्योरिटी नहीं है। PROFINET और EtherNet/IP इसे बाद में जोड़ी गई चीज़ मानते हैं।

TLS 1.3 एन्क्रिप्शन

हर message transit में एन्क्रिप्टेड। X.509 certificates के साथ Mutual TLS (mTLS) यह पक्का करता है कि client और broker दोनों एक-दूसरे की पहचान वेरिफ़ाई करें।

Topic-स्तर के ACL

हर डिवाइस, हर topic के लिए बारीक access control। मशीन MACH02 सिर्फ़ अपने topics पर publish कर सकती है। ऑपरेटर subscribe कर सकते हैं, पर कमांड नहीं दे सकते।

AWS IoT Policies

AWS IoT Core में हर thing के लिए अलग policy। हर डिवाइस को अपना certificate, अपनी permissions और अपना audit trail मिलता है। कोई डिवाइस compromise हुआ? तुरंत revoke करें।

हाइब्रिड डेटा आर्किटेक्चर

MQTT के JSON payload सीधे NoSQL documents में मैप होते हैं — न ORM, न schema migration, न ETL pipeline। स्पीड के लिए लोकल स्टोर करें, analytics के लिए cloud में replicate करें।

ऑन-प्रेम (कम latency)
PLC (कोई भी वेंडर)
➡
MQTT Broker
➡
लोकल NoSQL (MongoDB / InfluxDB)
MQTT Bridge — अपने आप Cloud Replication
AWS IoT Core
➡
Lambda (Serverless)
➡
DynamoDB (क्लाउड NoSQL)
➡
PulseMQ Dashboard

ऑन-प्रेम NoSQL

  • रियल-टाइम HMI के लिए एक मिलीसेकंड से कम में reads
  • इंटरनेट बंद होने पर भी काम करता है
  • JSON documents — cloud जैसा ही फ़ॉर्मेट
  • Time-series के लिए optimized (InfluxDB / TimescaleDB)

AWS DynamoDB (क्लाउड)

  • Serverless — कोई डेटाबेस सर्वर संभालना नहीं
  • Auto-scaling — 10 मशीनें हों या 10,000
  • DynamoDB Streams, OEE कैलकुलेशन के लिए Lambda ट्रिगर करते हैं
  • Point-in-time recovery — 35 दिन के backups

प्रोटोकॉल से जूझना बंद करें।
मशीनें जोड़ना शुरू करें।

PulseMQ, MQTT + Sparkplug B के ज़रिए हर PLC से cloud तक एक एकीकृत डेटा लेयर देता है — नेटिव JSON, एंटरप्राइज़ सिक्योरिटी और बिना किसी proprietary lock-in के।

डेमो का अनुरोध करें