ทำความรู้จักกับ
Modbus
Modbus คืออะไร
Modbus คือโปรโตคอลการสื่อสารที่พัฒนาขึ้นโดยบริษัท Modicon systems ด้วยรูปแบบง่าย ๆ เป็นรูปแบบการส่งข้อมูลระหว่างอุปกรณ์อิเล็กทรอนิกส์ อุปกรณ์ที่ต้องการข้อมูลเราเรียกว่า Modbus Master ส่วนอุปกรณ์ที่ให้ข้อมูลที่ต้องการเราเรียกว่า Modbus slave
ใน Modbus Network ที่เป็นมาตรฐานนั้นจะมี Master ตัวเดียวแต่ Slave มีได้ถึง 247 ตัว โดยแต่ละตัวจะมี ID ระบุเหมือนเลขที่บ้านตั้งแต่ 1 ถึง 247 และ Master สามารถ Write ข้อมูลไปยัง Slave ได้
ข้อมูลของ Modbus อย่างเป็นทางการสามารถตรวจสอบได้ที่ http://www.modbus-ida.org/.
ใช้เพื่อวัตถุประสงค์อะไร
Modbus เป็น Open Protocol หมายความว่าบุคคลทั่วไปสามารถพัฒนาอุปกรณ์ที่ใช้การสื่อสารแบบ Modbus โดยไม่ต้องเสียค่าใช้จ่ายใด ๆ Modbus จึงเป็น Protocol พื้นฐานและนิยมใช้อย่างแพร่หลายในทุกอุตสาหกรรม โดยใช้รับส่งข้อมูลจากอุปกรณ์ควบคุมกับ Controller หรือระบบประมวลผลข้อมูลต่าง ๆ
ทำงานอย่างไร
Modbus เป็นการสื่อสารโดยการส่งข้อมูลไปตามสายสัญญาณ Serial ระหว่างอุปกรณ์ โดยวิธีการสื่อสารที่ง่ายที่สุดคือการต่อสายสัญญาณ Serial ระหว่าง Master หนึ่งตัวกับ Slave หนึ่งตัว
ข้อมูลจะถูกส่งต่อเนื่องกันไปด้วยสัญญาณ 0 หรือ 1 ซึ่งเราเรียกว่า Bit โดยแต่ละบิตจะอยู่ในรูปแบบแรงดัน (Voltage) โดย 0 จะแทนด้วยแรงดันด้านบวกและ 1 แทนด้วยแรงดันด้านลบ ทำให้สัญญาณ Bit ถูกส่งไปด้วยความรวดเร็ว ความเร็วที่ใช้งานโดยทั่วไปคือ 9600 bps (bits per second)
เลขฐานสิบหก (hexadecimal) คืออะไร
ตัวเลข 0 และ 1 ที่ส่งมาจะแปลความหมายเป็นค่าตัวเลขได้ก็ด้วยการใช้รูปแบบของเลขฐานสิบหก
โดย 4 Bit ที่ต่อกันจะเป็นกลุ่มของเลขฐานสิบหกหนึ่งค่าตั้งแต่
0 ถึง F ดังตาราง
0000
= 0 |
0100
= 4 |
1000
= 8 |
1100
= C |
0001
= 1 |
0101
= 5 |
1001
= 9 |
1101
= D |
0010
= 2 |
0110
= 6 |
1010
= A |
1110
= E |
0011
= 3 |
0111
= 7 |
1011
= B |
1111
= F |
และแต่ละกลุ่มของ
8 Bit เราเรียกว่า Byte ซึ่งจะแสดงความหมายของ
Character หนึ่งตัวที่แทนด้วยตัวเลขตั้งแต่ 00 ถึง FF
จะเก็บข้อมูลในรูปแบบ
Modbus อย่างไร
ข้อมูลต่าง ๆ
ของอุปกรณ์ที่เป็น Slave จะเก็บอยู่ในตาราง 4 ตารางที่มีคุณลักษณะต่างกัน
โดยสองตางรางแรกจะเก็บข้อมูลของแบบ Discrete ที่เป็นค่า
On/Off (Coil) ส่วนอีกสองตารางที่เหลือจะเก็บค่าตัวเลข
(Register)
Coil และ Register ต่างก็มีตารางแบบ Read-only
คืออ่านได้อย่างเดียว และ Read-write คืออ่านได้และเขียนข้อมูลลงไปได้
แต่ละตารางจะมีข้อมูล
9999 (เก้าพันเก้าร้อยเก้าสิบเก้า) ค่า
Coil หรือ
Contact ซึ่งเป็น Discrete แต่ละตัวจะถูกระบุตำแหน่งด้วย Address ตั้งแต่
0000 ถึง 270E ซึ่งเป็นเลขฐานสิบหก
(แปลงเป็นฐานสิบคือ 0 ถึง 9998)
Register แต่ละตัวใช้พื้นที่ 16 bits = 2 bytes
= 1 word และมี address ตั้งแต่
0000 ถึง 270E เช่นกัน
Data
Addresses |
Coil/Register
Numbers |
Type |
Table
Name |
0000 to 270E |
1-9999 |
Read-Write |
Discrete
Output Coils |
0000 to 270E |
10001-19999 |
Read-Only |
Discrete
Input Contacts |
0000 to 270E |
30001-39999 |
Read-Only |
Analog
Input Registers |
0000 to 270E |
40001-49999 |
Read-Write |
Analog
Output Holding Registers |
Coil
/ Register Number จะเป็นเพียง Location
name จะไม่ปรากฏอยู่ในข้อมูลที่ถูกรับส่ง แต่Data
Addressจะถูกระบุอยู่ในข้อมูล
เช่นเดียวกับบุรุษไปรษณีย์จะส่งจดหมายได้ต้องปรากฏบ้านเลขที่อยู่บนซองจดหมาย
ยกตัวอย่างเช่น
Register ตัวแรกคือ 40001 จะมี Data Address คือ 0000 เมื่อนำตัวเลข 40001 ลบด้วย 0000 จะได้ค่าที่เรียกว่า Offset
คือ 40001 โดยแต่ละตารางจะมีค่า Offset
คือ 1, 10001, 30001 และ 40001 ตามลำดับ