1、概述
自由口需要講的內(nèi)容已經(jīng)給大家全部講完了,RS485通訊中的基礎(chǔ)知識也全部給大家梳理了一遍,那么從本篇文章開始我就具體和大家把RS485通訊中的modbus RTU協(xié)議和大家具體講解一下。
首先大家要明確一點,目前為止modbus RTU協(xié)議是在工業(yè)控制中RS485硬件層面最常用的協(xié)議之一,我這里的目標(biāo)主要有兩點,第一幫助大家掌握S7-200modbus庫的使用,第二幫助大家搞清楚modbus RTU協(xié)議的報文格式。
2、modbus RTU協(xié)議特點
我們首先熟悉一下modbusRTU 協(xié)議的特點。
1)modbus RTU是一種主從、半雙工通訊方式協(xié)議,整個網(wǎng)絡(luò)中只能有一個主站存在,主站在modbusRTU網(wǎng)絡(luò)中沒有地址,從站的實際地址范圍是1~247
2) modbus RTU協(xié)議的報文長度是不固定的,報文與報文之間最小間隔是3.5個字符傳輸時間長度。
3)modbus RTU協(xié)議的校驗方式是crc校驗。
3 、modbus庫介紹
3.1 主站指令
圖3-1
MBUS_CTRL指令:
EN:使能,要保證每一周期都使能(sm0.0)。
Mode:模式選擇,1 = modbus協(xié)議,0 = PPI協(xié)議
Baud:波特率設(shè)定。
Parity:字符校驗,0 = 無校驗;1 = 奇校驗;2 = 偶校驗
Timeout:超時。主站等待從站響應(yīng)的時間,以毫秒為單位,允許設(shè)置范圍為1~32767.
Done:初始化完成標(biāo)志位,初始化完成此位自動置1。
Error:如果初始化錯誤,存放錯誤代碼。
圖3-2
MBUS_MSG指令:
EN:使能,同一時刻只能有一個讀寫功能。
First:讀寫請求,要使用沿觸發(fā)。
Slave:從站地址,范圍1 ~247
RW:讀寫操作,0 = 讀,1 = 寫。
Addr:讀寫從站的數(shù)據(jù)地址。
Count:數(shù)據(jù)個數(shù)(位或者字的個數(shù))。注意最大數(shù)據(jù)量為120個字。
DataPtr:數(shù)據(jù)緩沖區(qū)首地址(指針類型)。如果是讀指令,讀回的數(shù)據(jù)放到這個數(shù)據(jù)區(qū)中;如果是寫指令,要寫出的數(shù)據(jù)放到這個數(shù)據(jù)區(qū)中。
Done:讀寫功能完成位。功能完成此為置1。
Error:讀寫功能錯誤代碼。Done位為1時有效。
3.2 從站指令
圖3-3
MBUS_INIT指令:
EN:初始化,首次掃描執(zhí)行一次(SM0.1)
Mode:模式,0 = PPI,1 = Modbus
Addr:從站地址,取值1 ~247。
Baud:波特率。
Parity:奇偶校驗。
Delay:附加字符間延時。
MaxAIQ:參與通信的最大I/O點數(shù),S7-200的I/O映像區(qū)為128/128缺省值為128。
MaxAI:參與通信的最大AI通道數(shù)。
MaxHold:參與通信的V存儲區(qū)字節(jié)(VW)。
HoldStart:保持寄存器區(qū)起始地址(指針形式)。
Done:初始化完成標(biāo)志位。
Error:如果初始化錯誤存放錯誤代碼。
圖3-4
MBUS_SLAVE指令:
EN:使能。每次掃描執(zhí)行(sm0.0)
Done:通訊中時置1,不處于通訊過程中時為0。
Error:存放錯誤代碼, 0 = 無錯誤。
聯(lián)系客服