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