• Home
  • >
  • Blog
  • >
  • Blog
  • >
  • What is Modbus ? โปรโตคอลสื่อสารดิจิตอลแบบอนุกรมเพื่อใช้กับ PLC

What is Modbus ? โปรโตคอลสื่อสารดิจิตอลแบบอนุกรมเพื่อใช้กับ PLC

Modbus_Master_Slave
Modbus_Master_Slave

What is Modbus Protocol ?

   Modbus เป็นโปรโตคอลสื่อสารดิจิตอลแบบอนุกรมถูกเผยแพร่โดย Modicon(ปัจจุบันคือ Schneider Electric) ในปี 1979 เพื่อใช้กับ PLC (Programmable Logic Controllers) ModbusProtocol นั้นได้กลายเป็นโปรโตคอลสื่อสารทางอุตสาหกรรมที่ได้รับความนิบมอย่างสูงเนื่องจากมันเป็น OpenProtocol ทำให้ผู้ที่สนใจสามารถนำโปรโตคอลนี้ไปใช้หรือพัฒนาได้อย่างอิสระโดยไม่มีค่าใช้จ่ายใดๆ อีกทั้งด้วยการพัฒนาและบำรุงรักษาที่ง่าย เมื่อเทียบกับมาตรฐานอื่นๆ จึงไม่แปลกใจเลยที่ทำไมมันถึงกลายเป็นโปรโตคอลที่ได้รับความนิยมอยางรวดเร็ว กว้างขวาง มันใช้ RS485 ในการสื่อสารระดับ Physical Layer

   Modbus เข้ามาทำให้การเชื่อมต่อระหว่างอุปกรณ์จำนวนมากไปยังเครือข่ายเช่นระบบวัดอุณหภูมิ, ความชื้น ที่สามารถส่งข้อมูลต่างๆไปยังคอมพิวเตอร์ได้ นอกจากนี้ ModbusProtocol ยังมักใช้เพื่อเชื่อมต่อไปยังคอมพิวเตอร์ที่ใช้ควบคุมด้วย RUT(Remote Terminal Unit) หรือระบบควบคุม(SCADA System) มีข้อมูลหลายชนิดถูกตั้งชื่อจาการใช้งานในอุตสาหกรรมเช่น Single-bit physical Output เรียกว่า coil หรือ  Single-bit physical input เรียกว่า Discrete input เป็นต้น
   การพัฒนาปรับปรุง ModbusProtocol ได้รับการจัดการโดย ModbusOrganization ตั้งแต่ เมษายน 2004 โดยได้รับโอนสิทธิ์จาก Schneider Electric 

Modbus_Master_Slave

   Modbus โดยส่วนใหญ่แล้วจะเชื่อมต่อด้วย Rs485 เพื่อส่งสัญญาญ การสื่อสารด้วย ModbusProtocol เป็นการสื่อสารแบบ Master-Slave ซึ่งมี อุปกรณ์ Master ตัวเดียวและมีอุปกรณ์ Slave มาเชื่อมต่อโดย Master สามารถส่ง data ไปยัง slave แต่ละตัวได้ในลักษณะ Broadcast โดย Slave จะตอบกลับในสิ่งที่ Master ต้องการเท่านั้น

   การรับส่งข้อมูลของ Modbus แบ่งเป็น 2 โหมดประกอบกด้วย ASCII และ RTU ซึ่งในแต่ละโหมดมีความแตกต่างกันในรูปแบบชุดข้อมูลในเฟรมสามารถใช้โหมดใดก็ได้แต่อุปกรณ์ทุกตัวในเครือข่ายต้องใช้โหมดเดียวกัน
   ModbusFrame ประกอบด้วย ADU(Application Data Unit) และ PDU(Protocol Data Unit)
ADU = Address + PDU + Error Check
PDU = Function Code + Data
โดยมีรูปแบบของ Frame ดังต่อไปนี้

ModbusRTU Frame Format 

NAME Length(Bits) Function
Start
28
At least 3½ character times of silence (mark condition)
Address
8
Station address
Function
8
Indicates the function code; e.g., read coils/holding registers
Data
n × 8
Data + length will be filled depending on the message type
CRC
16
Cyclic redundancy check
END
28
At least 3½ character times of silence between frames

ModbusASCII Frame

NAME Length (Bytes) Function
Start
1
Starts with colon : (ASCII hex value is 3A)
Address
2
Station address
Function
2
Indicates the function codes like read coils / inputs
Data
n × 2
Data + length will be filled depending on the message type
LRC
2
Checksum (Longitudinal redundancy check)
END
2
Carriage return – line feed (CR/LF) pair (ASCII values of 0D, 0A)

ModbusTCP Frame

NAME Length (Bytes) Function
Transaction identifier
2
For synchronization between messages of server and client
Protocol identifier
2
0 for Modbus/TCP
Length field
2
Number of remaining bytes in this frame
Unit identifier
1
Slave address (255 if not used)
Function code
1
Function codes as in other variants
Data bytes
n
Data as response or commands