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 |