โปรโตคอล Modbus RTU เปรียบเสมือน "ภาษาทั่วไป" ระหว่างอุปกรณ์อุตสาหกรรม ช่วยให้ "การสื่อสาร" ระหว่างอุปกรณ์ต่างๆ เช่น มิเตอร์ไฟฟ้าและเซ็นเซอร์จากแบรนด์ต่างๆ เป็นไปอย่างราบรื่น
การสาธิตแอปพลิเคชันโปรโตคอลการสื่อสาร Modbus
บทความนี้จะแนะนำคุณเกี่ยวกับการประยุกต์ใช้ Modbus RTU ในเครื่องวัดพลังงานด้วยวิธีที่ง่ายและเข้าใจได้มากที่สุด แม้ว่าคุณจะเป็นมือใหม่และไม่มีพื้นฐานทางเทคนิค แต่คุณก็สามารถเข้าใจประเด็นหลักของโปรโตคอลการสื่อสารทางอุตสาหกรรมที่สำคัญนี้ได้อย่างง่ายดาย

โปรโตคอล Modbus RTU คืออะไร
Modbus RTU เป็นโปรโตคอลการสื่อสารแบบอนุกรมที่พัฒนาโดย Modicon (ปัจจุบันเป็นส่วนหนึ่งของ Schneider Electric) ในปี 1979 สำหรับ PLC (ตัวควบคุมลอจิกแบบโปรแกรมได้)
ปัจจุบันได้กลายเป็นหนึ่งในโปรโตคอลที่ใช้กันอย่างแพร่หลายในระบบอัตโนมัติทางอุตสาหกรรม โดยได้รับการสนับสนุนจากผู้ผลิตมากกว่า 400 รายทั่วโลก
ทำไมถึงเรียกว่า “ร.ต.ท.”? RTU เป็นตัวย่อของ "Remote Terminal Unit" ซึ่งบ่งชี้ว่าโปรโตคอลนี้ใช้สำหรับการสื่อสารระหว่างอุปกรณ์ระยะไกลเป็นหลัก มันเหมือนกับ "ระบบส่งข้อความ" ระหว่างอุปกรณ์ไฟฟ้า การแลกเปลี่ยนข้อมูลผ่านการร้องขอและกลไกการตอบสนองแบบง่ายๆ
Modbus RTU ทำงานอย่างไร
Modbus RTU ใช้สถาปัตยกรรมการสื่อสารแบบมาสเตอร์-แบบทาส เช่น ครูและนักเรียนในห้องเรียน
- ปริญญาโท: "ครู" โดยทั่วไปคือคอมพิวเตอร์ PLC หรือผู้รวมศูนย์ มีหน้าที่รับผิดชอบในการเริ่มคำถามและคำสั่ง
- ทาส: "นักเรียน" เช่น มิเตอร์ไฟฟ้าหรือเซ็นเซอร์ สามารถตอบคำถามของครูได้เท่านั้น และไม่สามารถพูดได้อย่างอิสระ (ในการใช้งานมิเตอร์ไฟฟ้า...)

รูปแบบข้อความ Modbus RTU
"เทมเพลต SMS" ระหว่างอุปกรณ์
ข้อความการสื่อสาร Modbus RTU เปรียบเสมือนข้อความที่ประดิษฐ์ขึ้นอย่างพิถีพิถัน โดยมีข้อกำหนดรูปแบบคงที่
ข้อความ Modbus RTU ที่สมบูรณ์ประกอบด้วยส่วนต่างๆ ดังต่อไปนี้:
| รหัสที่อยู่ | รหัสฟังก์ชั่น | เขตข้อมูล | ตรวจสอบรหัส |
|---|---|---|---|
| 8 บิต | 8 บิต | N × 8 บิต | 16 บิต |
- รหัสที่อยู่ (1 ไบต์): เทียบเท่ากับ "หมายเลขโทรศัพท์ของผู้รับ" ซึ่งระบุที่อยู่ของมิเตอร์วัดพลังงานเป้าหมาย (1-247) โดยมี 0 สำหรับที่อยู่การออกอากาศ
- รหัสฟังก์ชั่น (1 ไบต์): เทียบเท่ากับ "ประเภทข้อความ" ที่สั่งให้มิเตอร์วัดพลังงานดำเนินการ (เช่น อ่านข้อมูล เขียนข้อมูล ฯลฯ)
- ฟิลด์ข้อมูล (N ไบต์): ข้อมูลเฉพาะที่จะส่ง เช่น ที่อยู่การลงทะเบียน ค่าข้อมูล ฯลฯ
- ผลรวมตรวจสอบ CRC (2 ไบต์): เทียบเท่ากับ "รหัสป้องกัน-รหัสต่อต้านการปลอมแปลง" ซึ่งใช้ในการตรวจสอบข้อผิดพลาดระหว่างการส่ง
ข้อความทั่วไปสำหรับการอ่านข้อมูลพลังงานแอคทีฟเชิงบวกทั้งหมดจากเครื่องวัดพลังงาน UBS มีดังนี้:
[ที่อยู่ 00][รหัสฟังก์ชัน 03][ที่อยู่เริ่มต้น 00 0C][ความยาวการอ่าน 00 02][ผลรวมตรวจสอบ CRC 05 D9]
ซึ่งเทียบเท่ากับการพูดว่า: "ทุกเมตร โปรดอ่านข้อมูลจากรีจิสเตอร์ 000C โดยเริ่มจากรีจิสเตอร์ 1"
หลังจากได้รับข้อความ มิเตอร์ #1 จะตอบกลับว่า:
[ที่อยู่ 01] [รหัสฟังก์ชัน 03] [ความยาวข้อมูล 04] [ข้อมูล 00 00 00 00] [ผลรวมตรวจสอบ CRC FA 33]
ซึ่งหมายความว่า: "มิเตอร์ #1 ตอบกลับ: ค่าข้อมูลพลังงานแอคทีฟเชิงบวกทั้งหมดที่อ่านได้คือ 00 00 00 00 (เลขฐานสิบหก)" (หมายเหตุ: มิเตอร์ #1 นี้เป็นมิเตอร์ใหม่ที่ไม่ได้ใช้) ภาพด้านล่างเป็นการสาธิตการทดสอบ:

"สมุดข้อมูล" ในมิเตอร์ไฟฟ้า: อธิบายการลงทะเบียน
ในโปรโตคอล Modbus RTU ข้อมูลทั้งหมดจากมิเตอร์ไฟฟ้าจะถูกจัดเก็บไว้ใน "สเปรดชีต"-เครื่องบันทึก ทะเบียนแบ่งออกเป็นสี่ประเภทหลัก:
| ประเภทการลงทะเบียน | สิทธิ์ในการอ่าน/เขียน | รหัสฟังก์ชั่น | เนื้อหาที่จัดเก็บโดยทั่วไป |
|---|---|---|---|
| คอยล์ลงทะเบียน | อ่าน/เขียน | 01, 05 | สถานะรีเลย์, การควบคุมสวิตช์ |
| การลงทะเบียนอินพุตแบบไม่ต่อเนื่อง | อ่าน-เท่านั้น | 02 | อินพุตดิจิตอล (เช่น สัญญาณเตือน) |
| ป้อนข้อมูลลงทะเบียน | อ่าน-เท่านั้น | 04 | ข้อมูลการวัดแบบเรียลไทม์- (แรงดัน กระแส ฯลฯ) |
| ถือทะเบียน | อ่าน/เขียน | 03, 06 | พารามิเตอร์ของอุปกรณ์ พลังงานสะสม ฯลฯ |
ในการใช้งานมิเตอร์ไฟฟ้า การลงทะเบียนที่พบบ่อยที่สุดคือ:
ป้อนข้อมูลลงทะเบียน
(รหัสฟังก์ชัน 04H): เก็บข้อมูลที่วัดได้แบบเรียลไทม์- เช่น แรงดันไฟฟ้า กระแสไฟฟ้า และกำลัง
ถือทะเบียน
(รหัสฟังก์ชัน 03H): เก็บปริมาณการใช้ไฟฟ้าสะสม พารามิเตอร์ของอุปกรณ์ ฯลฯ
ตารางข้อมูลที่อยู่การลงทะเบียน Modbus ของเครื่องวัดพลังงาน UBS
ที่อยู่การออกอากาศโปรโตคอล Modbus คือ 0x00 สำหรับข้อมูลที่อยู่ลงทะเบียนโปรโตคอล Modbus โดยละเอียดสำหรับมิเตอร์วัดพลังงาน UBS โปรดดูตารางด้านล่าง:
| ลงทะเบียน (ฐานสิบหก) | ชื่อตัวแปร | คุณลักษณะ (หน่วย / R/W) | ประเภทข้อมูล | นับ | หมายเหตุ |
|---|---|---|---|---|---|
| 0x0000 | แรงดันไฟฟ้ากระแสตรง | หน่วย: V, R/W: RO | S16 | 1 | ช่วง: -9999~9999; การอ่านค่า=ค่าประสิทธิผล × 10^(จุดทศนิยม) |
| 0x0001 | จุดทศนิยมแรงดันไฟฟ้า | หน่วย: ไม่มี, R/W: RO | U16 | 1 | ค่าคงที่: 0 |
| 0x0002 | ค่าปัจจุบันกระแสตรง | หน่วย: A, R/W: RO | S16 | 1 | ช่วง: -9999~9999 |
| 0x0003 | จุดทศนิยมปัจจุบัน | หน่วย: ไม่มี, R/W: RO | U16 | 1 | ค่าคงที่: 1 |
| 0x0008 | ค่าพลังงาน | หน่วย: kW, R/W: RO | S16 | 1 | ช่วง: -9999~9999 |
| 0x0009 | จุดทศนิยมของกำลัง | หน่วย: ไม่มี, R/W: RO | U16 | 1 | ค่าคงที่: 1 |
| 0x000C | พลังงานที่ใช้งานไปข้างหน้าทั้งหมด | หน่วย: 0.001kWh, R/W: RO | U32 | 2 | ไบต์สูงก่อน ไบต์ต่ำอยู่สุดท้าย ตัวอย่าง: ถ้าข้อมูลอ่าน=5000 จุดทศนิยม=2 → ค่าจริง=5000 × 10^(2-3)=500.0 |
| 0x203C | ช่องที่ 1 แรงดันไฟฟ้า | หน่วย: 0.0001V, R/W: RO | I32 | 2 | ไบต์สูงก่อน ไบต์ต่ำอยู่หลัง |
| 0x203E | ช่อง 2 แรงดันไฟฟ้า | หน่วย: 0.0001V, R/W: RO | I32 | 2 | 0 เสมอ |
| 0x2040 | ช่อง 1 ปัจจุบัน | หน่วย: 0.0001A, R/W: RO | I32 | 2 | ไบต์สูงก่อน ไบต์ต่ำอยู่หลัง |
| 0x2042 | ช่อง 2 ปัจจุบัน | หน่วย: 0.0001A, R/W: RO | I32 | 2 | 0 เสมอ |
| 0x2044 | ช่อง 1 พาวเวอร์ | หน่วย: 0.0001kW, R/W: RO | I32 | 2 | ไบต์สูงก่อน ไบต์ต่ำอยู่หลัง |
| 0x2046 | ช่อง 2 เพาเวอร์ | หน่วย: 0.0001kW, R/W: RO | I32 | 2 | 0 เสมอ |
| 0x9A00 | ส่งต่อพลังงานรวมที่ใช้งานอยู่ | หน่วย: kWh, R/W: RO | ลอย | 2 | |
| 0xA001/0x8900 | ที่อยู่อุปกรณ์ | หน่วย: ไม่มี, R/W: RW | U16 | 1 | ช่วง: 0 ~ 247 |
การสาธิตการอ่านข้อความเครื่องวัดพลังงาน UBS
การใช้ซอฟต์แวร์คอมพิวเตอร์โฮสต์เครื่องวัดพลังงาน UBS อ่านข้อมูลต่อไปนี้จากเครื่องวัดพลังงานอัจฉริยะ DJZ1226 DC: พลังงานที่ใช้งานเชิงบวกทั้งหมด แรงดันไฟฟ้า กระแสไฟฟ้า กำลัง และที่อยู่มิเตอร์

ดังที่แสดงในแผนภาพด้านบน เนื้อหาข้อความโดยละเอียดที่ส่งและรับโดยคอมพิวเตอร์แม่ข่ายมีดังนี้:
13:25:30.229 พลังงานแอคทีฟเชิงบวกทั้งหมด(000C0002) ...
13:25:30.256 ▼ส่ง:00 03 00 0C 00 02 05 D9
13:25:30.344 ▲รับ:01 03 04 00 00 00 00 เอฟเอ 33
13:25:30.359 แรงดันไฟฟ้ากระแสตรง (00000002) ...
13:25:30.424 ▼ส่ง:00 03 00 00 00 02 C5 DA
13:25:30.428 ▲รับ:01 03 04 00 17 00 03 0A 36
13:25:30.494 กระแสไฟตรง(00020002) ...
13:25:30.522 ▼ส่ง:00 03 00 02 00 02 64 1ก
13:25:30.610 ▲รับ:01 03 04 00 30 00 02 7B FD
13:25:30.621 พาวเวอร์(00080002) ...
13:25:30.682 ▼ส่ง:00 03 00 08 00 02 44 18
13:25:30.690 ▲รับ:01 03 04 00 01 00 02 2A 32
13:25:30.702 ที่อยู่การสื่อสาร 2(A0010001) ...
13:25:30.779 ▼ส่ง:00 03 A0 01 00 01 F6 1B
13:25:30.783 ▲รับ:01 03 02 00 01 79 84
13:25:30.795 สิ้นสุดการอ่านข้อมูล
ปัญหาทั่วไปและเทคนิคการแก้ไขปัญหา
แม้ว่าโปรโตคอล Modbus RTU จะค่อนข้างง่าย แต่ปัญหาต่างๆ อาจยังคงเกิดขึ้นในการใช้งานจริง ต่อไปนี้เป็นข้อผิดพลาดทั่วไปและวิธีแก้ปัญหาในการสื่อสารของมิเตอร์ไฟฟ้า:
ไม่มีการตอบสนองการสื่อสาร
● ตรวจสอบการเชื่อมต่อทางกายภาพ:
▪ การเดินสาย RS-485 ถูกต้องหรือไม่ (กลับเส้น A/B)?
▪ ตัวต้านทานปลายสายตรงกันหรือไม่ (โดยทั่วไป เชื่อมต่อตัวต้านทาน 120Ω ที่ปลายแต่ละด้านของบัส) หรือไม่
▪ ระยะการสื่อสารเกินขีดจำกัดหรือไม่ (ตามทฤษฎี RS-485 สามารถเข้าถึง 1200 เมตร แต่ระยะทางจริงจะได้รับผลกระทบจากปัจจัยด้านสิ่งแวดล้อม)
● ตรวจสอบการตั้งค่าพารามิเตอร์:
▪ อัตราบอด บิตข้อมูล บิตหยุด และการตั้งค่าพาริตีสอดคล้องกับมิเตอร์ไฟฟ้าหรือไม่
▪ ที่อยู่อุปกรณ์ตั้งค่าไว้อย่างถูกต้อง (ไม่มีที่อยู่ซ้ำกัน) หรือไม่
การสื่อสารเป็นระยะ
● ตรวจสอบการรบกวนของสาย:
▪ ใช้สายเคเบิลหุ้มฉนวนคู่บิด- และตรวจสอบให้แน่ใจว่าชีลด์ต่อสายดินที่ปลายด้านหนึ่ง
▪ หลีกเลี่ยงการเดินสายขนานกับสายไฟฟ้าแรงสูง-
● การทดสอบอุปกรณ์แต่ละเครื่อง:
▪ เชื่อมต่อมิเตอร์ไฟฟ้าแต่ละเครื่องแยกกันเพื่อแก้ไขปัญหาอุปกรณ์ที่ผิดพลาด
▪ ใช้ซอฟต์แวร์คอมพิวเตอร์แม่ข่ายเฉพาะของ UBS Electronics (เช่น AMS) เพื่อสื่อสารโดยตรงกับมิเตอร์ไฟฟ้าและระบุปัญหา
ข้อผิดพลาดของข้อมูล
● การตรวจสอบการตรวจสอบ CRC:
▪ ตรวจสอบว่ารหัส CRC ที่ส่งและรับสอดคล้องกันหรือไม่
▪ ยืนยันลำดับไบต์ข้อมูล (ปกติ Modbus RTU จะเป็น endian เพียงเล็กน้อย)
● การตรวจสอบการแมปรีจิสเตอร์:
▪ ตรวจสอบที่อยู่ทะเบียนที่ใช้ให้สอดคล้องกับคู่มือมิเตอร์ไฟฟ้า
▪ หมายเหตุการชดเชยที่อยู่การลงทะเบียน
หากคุณจำเป็นต้องใช้ซอฟต์แวร์คอมพิวเตอร์โฮสต์ UBS (โปรโตคอล Modbus RTU) ที่กล่าวถึงในบทความนี้ โปรดติดต่อบุคคลที่รับผิดชอบในการสั่งซื้อมิเตอร์ไฟฟ้า UBS ของคุณและขอรับการสนับสนุนทางเทคนิคเพิ่มเติมหลังการขาย-




