ทำความรู้จักกับ 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 ตามลำดับ