工業上的通訊協議之Modbus
Modbus通訊協議
當在一Modbus網絡上通信時,此協議決定了每個控制器需要知道它們的設備地址,識別按地址發來的消息,決定要產生何種行動。如果需要回應,控制器將生成反饋信息並用Modbus協議發出。在其它網絡上,包含了Modbus協議的消息轉換爲在此網絡上使用的幀或包結構。這種轉換也擴展了根據具體的網絡解決節地址、路由路徑及錯誤檢測的方法。
當在網絡上通信時,Modbus協議決定了每個控制器需要知道它們的設備地址,識別按地址發來的消息,決定要產生何種行動。如果需要回應,控制器將生成應答並使用Modbus協議發送給詢問方。
Modbus協議需要對數據進行校驗,串行協議中除有奇偶校驗外,ASCII模式採用LRC校驗,RTU模式採用16位CRC校驗。另外,Modbus採用主從方式定時收發數據,在實際使用中如果某從站點斷開後(如故障或關機),主端可以診斷出來,而當故障修復後,網絡又可自動接通。因此,Modbus協議的可靠性較好。
Modbus與OSI參考模型
Modbus之ASCII通訊方式
數據幀
廣播模式(只用於寫操作)
非廣播模式
Modbus之RTU通訊方式
Modbus TCP通訊應用
Modbus TCP通訊應用舉例
在讀寄存器的過程中,以Modbus TCP請求報文爲例,具體的數據傳輸過程如下:
1) Modbus TCP客戶端實況,用Connect()命令建立目標設備TCP 502端口連接數據通信過程;
2) 準備Modbus報文,包括7個字節MBAP內請求;
3) 使用send()命令發送;
4) 同一連接等待應答;
5) 同recv()讀報文,完成一次數據交換過程;
6) 當通信任務結束時,關閉TCP連接,使服務器可以爲其他服務。
Modbus TCP/IP協議
Modbus TCP/IP協議,就是去掉了modbus協議本身的CRC校驗,增加了MBAP 報文頭。
首先來看一下,MBAP 報文頭都包括了哪些信息和內容。
MBAP報文頭包括下列區域:
MODBUS公共功能碼定義