Modbus MQTT เป็นรูปแบบการสื่อสารระหว่าง Master และ Slave โดยอาศัยโปรโตคอล MQTT เป็นแกนหลักในการสื่อสาร ทำให้สามารถควบคุมอุปกรณ์ผ่านอินเตอร์เน็ตได้
MQTT
Message Queuing Telemetry Transport (MQTT) เป็นโปรโตคอลสำหรับใช้ในสื่อสารข้อมูลระหว่าง Machine to Machine (M2M) ออกแบบมาเพื่อใช้สื่อสารในระบบเครือข่ายที่มีทรัพยากรค่อนข้างจำกัด ใช้งานแบนด์วิธต่ำ โดยด้านผู้ส่งข้อมูลจะเรียกว่า Publish และด้านผู้รับข้อมูลเรียกว่า Subscribe ซึ่งทั้ง 2 ต้องมี MQTT Broker เป็นตัวกลางในการสื่อสาร
Modbus MQTT Message
| Field name | Details |
| Transaction ID | หมายเลขของข้อความที่ถูกกำหนดโดย Master |
| Master ID | หมายเลขประจำตัว Master ซึ่งห้ามซ้ำกับ Master ตัวอื่น |
| Length | ความยาวของข้อความซึ่งไม่นับรวม Header |
| Modbus RTU | โปรโตคอล Modbus RTU ซึ่งไม่มี CRC |
Request
| Field name | Details |
| Publisher | Master |
| Subscriber | Slave |
| Topic | modbus_poll/request/<device-id> |
| Payload | Modbus MQTT message with message of Modbus master |
Response
| Field name | Details |
| Publisher | Slave |
| Subscriber | Master |
| Topic | modbus_poll/response/<device-id> |
| Payload | Modbus MQTT message with message of Modbus slave |
<device-id> = Client ID ของ Slave เพื่อใช้เชื่อมต่อกับ MQTT broker ซึ่งรหัสนี้ต้องห้ามซ้ำกับ Client ตัวอื่น
ตัวอย่างฟังก์ชัน Read Holding Registers
Request (13 bytes)
| No. | Field name | Payload (hex) |
| 0 | Transaction ID Hi | 00 |
| 1 | Transaction ID Lo | 01 |
| 2 | Master ID Hi | 1A |
| 3 | Master ID Lo | 8F |
| 4 | Length Hi | 00 |
| 5 | Length Lo | 06 |
| 6 | Slave Address | 01 |
| 7 | Function | 03 |
| 8 | Starting Address Hi | 00 |
| 9 | Starting Address Lo | 00 |
| 10 | Quantity of Registers Hi | 00 |
| 12 | Quantity of Registers Lo | 02 |
Response (15 bytes)
| No. | Field name | Payload (hex) |
| 0 | Transaction ID Hi | 00 |
| 1 | Transaction ID Lo | 01 |
| 2 | Master ID Hi | 1A |
| 3 | Master ID Lo | 8F |
| 4 | Length Hi | 00 |
| 5 | Length Lo | 09 |
| 6 | Slave Address | 01 |
| 7 | Function | 03 |
| 8 | Byte Count | 06 |
| 9 | Data Hi | 00 |
| 10 | Data Lo | 06 |
| 11 | Data Hi | 00 |
| 12 | Data Lo | 05 |
| 13 | Data Hi | 00 |
| 14 | Data Lo | 04 |
ตัวอย่างการประยุกต์ใช้งาน
การสื่อสารกับอุปกรณ์ผ่านอินเตอร์เน็ต
ภาพรวมการทำงาน
| Block | Details |
| Modbus TCP Master | Master ซึ่งใช้โปรโตคอล Modbus TCP ในการสื่อสาร ในที่นี้จะใช้เป็นโปรแกรม Modbus Poll |
| Modbus Online | โปรแกรมซึ่งถูกติดตั้งในคอมพิวเตอร์เพื่อแปลงการสื่อสารระหว่าง Modbus TCP และ Modbus MQTT
|
| MQTT to RTU converter | บอร์ด Wi-Fi เพื่อทำหน้าที่เชื่อมต่ออินเตอร์เน็ตและแปลงการสื่อสารระหว่าง Modbus MQTT และ Modbus RTU |
| Modbus RTU Slave | Slave ซึ่งใช้โปรโตคอล Modbus RTU ในการสื่อสาร ในที่นี้จะใช้เป็นโปรแกรม Modbus Slave |