![基于modbuscp協(xié)議的s7-plc通信研究_第1頁](http://file4.renrendoc.com/view/8138216adb1e369bb07e4d0ba6c0c2fd/8138216adb1e369bb07e4d0ba6c0c2fd1.gif)
![基于modbuscp協(xié)議的s7-plc通信研究_第2頁](http://file4.renrendoc.com/view/8138216adb1e369bb07e4d0ba6c0c2fd/8138216adb1e369bb07e4d0ba6c0c2fd2.gif)
![基于modbuscp協(xié)議的s7-plc通信研究_第3頁](http://file4.renrendoc.com/view/8138216adb1e369bb07e4d0ba6c0c2fd/8138216adb1e369bb07e4d0ba6c0c2fd3.gif)
![基于modbuscp協(xié)議的s7-plc通信研究_第4頁](http://file4.renrendoc.com/view/8138216adb1e369bb07e4d0ba6c0c2fd/8138216adb1e369bb07e4d0ba6c0c2fd4.gif)
![基于modbuscp協(xié)議的s7-plc通信研究_第5頁](http://file4.renrendoc.com/view/8138216adb1e369bb07e4d0ba6c0c2fd/8138216adb1e369bb07e4d0ba6c0c2fd5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
基于modbuscp協(xié)議的s7-plc通信研究
0基于s1-plc的智能設計s7-incl已廣泛應用于現(xiàn)場控制領域。然而,s7-incl沒有關于歐盟網(wǎng)絡的公開協(xié)議。Modbus/TCP協(xié)議作為一種工業(yè)以太網(wǎng)通信標準協(xié)議,廣泛應用于工業(yè)自動化控制領域。與S7-PLC相比,國內(nèi)外眾多中大型PLC都支持Modbus/TCP通信協(xié)議,用戶不需要編寫Modbus/TCP應用層程序,就可直接使用,諸如國外Schneider公司推出的Quantum、Premium系列PLC和國內(nèi)南瑞集團公司推出的MB40、MB80系列iPLC(智能可編程控制器)等,目前S7-PLC需要用戶購買昂貴的軟件包方可實現(xiàn)Modbus/TCP通信,而不能直接實現(xiàn),這樣既不利于Modbus/TCP通信在S7-PLC上應用,也不利于S7-PLC在自動化控制領域朝數(shù)字化、信息化、網(wǎng)絡化和標準化方向發(fā)展趨勢下應用,因此在S7-PLC支持TCP/IP協(xié)議基礎上設計Modbus/TCP應用層程序實現(xiàn)在S7-PLC上Modbus/TCP通信應用尤為重要。筆者通過Modbus/TCP應用層程序開發(fā)以及組態(tài)配置實現(xiàn)上位機與S7-PLC基于Modbus/TCP協(xié)議通信。1通信可行性1.1基于單元標記的數(shù)據(jù)幀Modbus/TCP協(xié)議是運行在TCP/IP上的Modbus報文傳輸協(xié)議,使用TCP/IP以太網(wǎng)的5層,協(xié)議數(shù)據(jù)格式為每個8Bit字節(jié)包含兩個4Bit的十六進制字符,與ModbusRTU協(xié)議相同。其應用數(shù)據(jù)單元(ADU)包含報文頭、功能代碼和數(shù)據(jù)3部分,功能代碼和數(shù)據(jù)構成協(xié)議數(shù)據(jù)單元(PDU),報文頭(MBAP)由事務處理標識符(2字節(jié))、協(xié)議標識符(2字節(jié))、長度(2字節(jié),余下域字節(jié)的數(shù)量,包含單元標識符和協(xié)議數(shù)據(jù)單元在內(nèi))、單元標識符(1字節(jié))組成。Modbus/TCP數(shù)據(jù)幀是基于Modbus-RTU數(shù)據(jù)幀,幀頭添加事務元標識符、協(xié)議標識符、長度等6字節(jié),幀尾去除容錯校驗碼,用報頭中的單元標識符取代Modbus-RTU上通常使用的從站地址,Modbus/TCP在應用層不需要校驗域,而是利用TCP層、IP層和以太網(wǎng)鏈路層差錯校驗碼的使用校驗和機制來校驗分組交換的準確性。該協(xié)議采用請求和響應機制:客戶機向服務器發(fā)送請求,分析處理請求,向客戶機發(fā)送應答。其數(shù)據(jù)幀封裝過程為:用戶數(shù)據(jù)首先在應用層按照Modbus應用層規(guī)范進行封裝,生成相應的請求或應答應用數(shù)據(jù)單元(ADU),該ADU按照RFC1042規(guī)范映射到TCP/IP協(xié)議棧的各層進行數(shù)據(jù)封裝。Modbus/TCP數(shù)據(jù)幀拆解過程與封裝過程相反。1.2ss-plc循環(huán)執(zhí)行S7-PLC支持通過內(nèi)部總線進行CPU模件和以太網(wǎng)模件數(shù)據(jù)交換,以太網(wǎng)模件支持TCP/IP協(xié)議,S7-PLC可通過以太網(wǎng)模件與上位機實現(xiàn)通信連接。S7-PLC軟件平臺STEP7軟件配備了結構化語言SCL,是西門子公司依據(jù)IEC61131-3標準創(chuàng)立的一種高等編程語言,它與編程語言Pascal類似,它能實現(xiàn)龐雜的數(shù)學運算、復雜算法優(yōu)化和批量數(shù)據(jù)處理,編寫的程序非常簡練和緊湊。S7-PLC循環(huán)執(zhí)行的主程序組織塊OB1可以直接或者間接地調(diào)用相應的FB、FC、SFB、SFC實現(xiàn)數(shù)據(jù)采集、過程監(jiān)測、控制調(diào)節(jié)以及通信功能。FC、FB是用戶程序,可以編程使用,F(xiàn)B有其專用的背景數(shù)據(jù)塊,F(xiàn)B可以有多個背景數(shù)據(jù)塊實現(xiàn)不同對象的同一功能,SFB、SFC是系統(tǒng)程序,可以被調(diào)用。SFC59(RD_REC)為CPU模件通過內(nèi)部總線接收數(shù)據(jù)的系統(tǒng)功能,SFC58(WR_REC)為CPU模件通過內(nèi)部總線發(fā)送數(shù)據(jù)的系統(tǒng)功能。1.3ieee802.3—設計模型Modbus/TCP協(xié)議首先需要在上位機和S7-PLC建立可靠的連接,然后保證數(shù)據(jù)可靠并且按順序到達傳輸。S7-PLC基于Modbus/TCP協(xié)議應用模型見表1,利用該模型可將S7-PLC作為Modbus/TCP協(xié)議的服務器,與監(jiān)控系統(tǒng)中上位機實現(xiàn)Modbus/TCP通信。通信過程為:(1)S7-PLC中以太網(wǎng)模件通過TCP/IP通信獲取上位機發(fā)送的Modbus/TCP協(xié)議IEEE802.3以太網(wǎng)報文,以太網(wǎng)模件TCP/IP協(xié)議棧從以太網(wǎng)物理層、數(shù)據(jù)鏈路層、IP層和TCP層逐層拆解以太網(wǎng)報文;(2)通信程序調(diào)用SFC59(RD_REC),通過內(nèi)部總線從以太網(wǎng)模件獲取請求應用數(shù)據(jù)幀;(3)通信程序將應用數(shù)據(jù)幀拆分成MBAP報頭和協(xié)議數(shù)據(jù)單元,并對MBAP報頭和協(xié)議數(shù)據(jù)單元細分,對協(xié)議數(shù)據(jù)單元中功能碼和數(shù)據(jù)分析,進行相應讀寫操作;(4)通信程序將上送數(shù)據(jù)和功能碼封裝在應答的協(xié)議數(shù)據(jù)單元,再按協(xié)議規(guī)范封裝MBAP報頭,構成Modbus/TCP應用數(shù)據(jù)單元;(5)通信程序調(diào)用SFC58(WR_REC),通過內(nèi)部總線將應答的應用數(shù)據(jù)單元寫入以太網(wǎng)模件;(6)以太網(wǎng)模件TCP/IP協(xié)議棧將應用數(shù)據(jù)單元在TCP層、IP層、數(shù)據(jù)鏈路層和以太網(wǎng)物理層逐層封裝,構成完整的IEEE802.3以太網(wǎng)報文,最終通過TCP/IP通信將Modbus/TCP應用數(shù)據(jù)單元封裝在內(nèi)的應答以太網(wǎng)報文發(fā)送至上位機。過程(1)和(6)需要通過硬件組態(tài)和網(wǎng)絡配置,由以太網(wǎng)模件自動完成,其他過程則通過編寫應用層通信程序FB實現(xiàn),設計應用層用戶通信程序也是本文研究重點。2功能請求對比S7-PLC作為服務器與作為客戶機的上位機基于請求/響應機制進行Modbus/TCP通信。本文S7-PLC的Modbus/TCP通信功能碼有8種,功能碼和功能作用見表2。上位機向S7-PLC發(fā)送請求,S7-PLC分析請求,處理請求,向客戶機發(fā)送應答。當S7-PLC對上位機響應時,它使用功能碼來指示正常(無差錯)響應或者出現(xiàn)某種差錯(稱為異常響應)。對于一個正常響應來說,S7-PLC僅復制原始功能碼。對于異常響應,S7-PLC將原始功能碼加0x80(即其字節(jié)的最高有效位設置邏輯1)后返回。請求報文用RQ數(shù)組表示,正常響應的應答報文用SN數(shù)組表示,異常響應的應答報文用EX數(shù)組表示,數(shù)組單位均為字節(jié)。各數(shù)組的第1、2個單元分別存貯事務元標識符的高、低字節(jié),各數(shù)組的第3、4個單元分別存貯協(xié)議標識符的高、低字節(jié)。各數(shù)組的第7個單元存貯單元標識符SID。各數(shù)組的第5、6個單元分別存貯長度的高、低字節(jié),因為長度為余下域的字節(jié)數(shù),小于256,RQ、SN、EX為0,事務元標識符和協(xié)議標識符的值均為0,請求報文、正常響應報文、異常響應報文中前5字節(jié)值均為0,即RQ…RQ、SN…SN、EX…EX=0x00。分3種類型深入解析8種功能請求報文和正常應答報文,并對異常響應的應答報文解析。(1)對于讀取數(shù)據(jù)功能報文,即功能碼FNC為0x01、0x02、0x03或0x04,請求報文的幀長度為12個字節(jié),其余下域的字節(jié)數(shù)為6個;正常應答的幀長度為B+9個字節(jié),其余下域的字節(jié)數(shù)為B+3個。B為實際數(shù)據(jù)(開關量或寄存器)的字節(jié)數(shù),D1…DB為從地址ADD開始需要讀取的B個實際數(shù)據(jù);QNT為實際數(shù)據(jù)(開關量或寄存器)的數(shù)量,QNTH為其高字節(jié),QNTL為其低字節(jié);ADD為讀取的起始地址,ADDH為其高字節(jié),ADDL為其低字節(jié)。功能碼FNC為0x01或0x02,是對輸出型或輸入型開關量進行讀取操作,QNT為從地址ADD開始需要讀取的位數(shù)量,QNT在1~1920之間,其字節(jié)數(shù)為B=(QNT+7)/8;功能碼FNC為0x03或0x04,是對保持型或模擬輸入量型寄存器讀取操作,QNT在1~125之間,QNT為需要讀取從起始地址讀取寄存器數(shù)量,其字節(jié)數(shù)為B=2*QNT。請求報文的數(shù)據(jù)幀見表3,正常響應的應答報文數(shù)據(jù)幀見表4。(2)對單個開關輸出量或保持寄存器寫操作功能,即功能碼FNC為0x05或0x06,正常響應報文與請求報文完全相同,報文幀長度為12個字節(jié),余下域的字節(jié)數(shù)為6個,對地址ADD的開關輸出量或保持寄存器的進行寫操作。功能碼FUNC為0x05,是對單個開關輸出量寫操作,包括置位和復位兩種操作:對地址ADD的開關輸出量進行置位操作請求(當RQ=VDH=0xFF,同時RQ=VDL=0x00,即VD=0xFF00),對地址ADD開出位進行復位操作請求(當RQ=VDL=0x00,RQ=VDH=0x00,即VD=0x0000)。功能碼FUNC為0x06,是對單個保持寄存器寫操作,將VD賦值于地址為ADD的保持寄存器,VD為寫入寄存器的數(shù)值,VDH為其高字節(jié),VDL為低字節(jié)。請求和應答報文數(shù)據(jù)幀見表5。(3)對多個開關輸出量或保持寄存器寫操作功能,即功能碼FNC為0x0F或0x10,請求報文的幀長度為B+13個字節(jié),其余下域的字節(jié)數(shù)為B+7個;正常應答的幀長度為12個字節(jié),其余下域的字節(jié)數(shù)為6個。B為實際數(shù)據(jù)(開關量或保持寄存器)的字節(jié)數(shù),VD1…VDB為需要從地址ADD開始寫入的B個實際數(shù)據(jù);QNT為實際數(shù)據(jù)(開關量或保持寄存器)的數(shù)量,QNTH為其高字節(jié),QNTL為其低字節(jié);ADD為讀取的起始地址,ADDH為其高字節(jié),ADDL為其低字節(jié)。功能碼FNC為0x0F,是對QNT個開關輸出量進行寫入操作,QNT為從地址ADD開始需要寫入的位數(shù)量,QNT在1~1920之間,其字節(jié)數(shù)為B=(QNT+7)/8;功能碼FNC為0x10,是對QNT個保持寄存器寫入操作,QNT在1~125之間,QNT為地址ADD開始寫入的保持寄存器數(shù)量,其字節(jié)數(shù)為B=2*QNT。請求報文的數(shù)據(jù)幀見表6,正常應答報文數(shù)據(jù)幀見表7。(4)異常應答報文的幀長度為9個字節(jié),余下域的字節(jié)數(shù)為3個,功能碼EXF為原始功能碼FNC加0x80,異常碼EXC表明出錯的原因。異常應答報文見表8,異常碼0x01、0x02、0x03或0x0B分別表示S7-PLC分析請求報文時發(fā)現(xiàn)功能碼非法、地址非法、數(shù)值或數(shù)量非法和單元標識符不一致,以及異常碼0x04表示S7-PLC進行相應操作過程中出現(xiàn)差錯。3基于轉化應用機理的通信程序架構在S7-PLC的開關輸入量、開關輸出量和模擬輸入量硬件組態(tài)中同一類型按槽位順序連續(xù)地分配地址,保持寄存器由數(shù)據(jù)塊DB數(shù)據(jù)存儲,將數(shù)據(jù)類型相同且地址連續(xù)的數(shù)據(jù)組塊傳送提高通信效率和可靠。FB和FC均是S7-PLC用戶程序中的子程序,若FC用于不同對象的相同功能時新編程序和修改程序,而FB不需要修改程序。對于不同對象FB程序調(diào)用,調(diào)用的程序相同,背景數(shù)據(jù)塊不同而已,F(xiàn)C沒有靜態(tài)變量,F(xiàn)B有保存在背景數(shù)據(jù)塊中的靜態(tài)變量。S7-PLC基于Modbus/TCP通信程序架構如圖1所示,在通信程序架構中,在S7-PLC作為服務器,通信程序由通信邏輯處理和通信接口兩部分組成,一個通信邏輯處理程序需要數(shù)個不同通信邏輯處理程序一起應用,實現(xiàn)對開關輸入量、開關輸出量、模擬量輸入量、保持寄存器(四類數(shù)據(jù)以下稱物理數(shù)據(jù))的訪問功能。一套S7-PLC含有數(shù)塊以太網(wǎng)模件,諸如S7-300/400PLC軟冗余系統(tǒng)和S7-400PLC硬冗余系統(tǒng),不僅需要調(diào)用多個通信邏輯處理程序,還需要調(diào)用多個通信邏輯處理程序,因此通信邏輯處理程序和通信接口程序采用FB程序。FB通過背景數(shù)據(jù)量傳遞的變量區(qū)有:輸入?yún)^(qū)(IN)、輸出區(qū)(OUT)、輸入輸出區(qū)(IN_OUT)和靜態(tài)變量區(qū)(STAT),其中IN、IN_OUT、OUT為接口參數(shù),直接體現(xiàn)在生成的FB塊左右兩側,而STAT為內(nèi)部參數(shù)。通信接口程序在其不同背景數(shù)據(jù)塊中建立相應存儲區(qū),通信接口程序將物理數(shù)據(jù)按類型映射至其背景數(shù)據(jù)塊中存儲區(qū),通信接口程序在物理數(shù)據(jù)和通信邏輯處理程序中的靜態(tài)變量收發(fā)區(qū)進行數(shù)據(jù)轉移作用,系統(tǒng)功能SFC59(RD_REC)和SFC58(WR_REC)數(shù)據(jù)記錄區(qū)以字節(jié)為單位,因此通信接口程序還將物理數(shù)據(jù)按字節(jié)進行組塊。通信邏輯處理程序在其背景數(shù)據(jù)塊中建立相應收發(fā)區(qū),在其背景數(shù)據(jù)塊中收發(fā)區(qū)從以太網(wǎng)模件CP接收Modbus/TCP請求報文,分析請求報文,并根據(jù)請求報文對通信接口程序中的靜態(tài)變量存貯區(qū)進行訪問操作,按規(guī)范將數(shù)據(jù)組成Modbus/TCP應答報文,返回給以太網(wǎng)模件。4通信邏輯程序設計通信邏輯處理程序和通信接口程序采用SCL語言編寫,通信邏輯處理程序包含變量定義、讀取請求報文、分析報文、處理報文和發(fā)送響應報文5部分。4.1.相關變量的定義服務器邏輯功能塊定義模件邏輯輸入地址(CP_LAD-DR)、模件連接標識號(CONN_ID)等輸入變量,定義單元標識(UnitID)、功能碼(FctCod)、起始地址(StrtAdd)、數(shù)量或數(shù)值(QntVal)、字節(jié)數(shù)(BytCnt)、收發(fā)數(shù)據(jù)區(qū)(MsgBUF)等靜態(tài)變量,定義發(fā)送數(shù)據(jù)的any指針(anySnd)、接收數(shù)據(jù)的any指針(anyRcv)等臨時變量。4.2讀取已讀取的文件文長度為12個字對于上述8種功能碼,Modbus/TCP請求應用數(shù)據(jù)報文總長度均大于或等于12個字節(jié)。當功能碼為0x10或0x0F時,請求報文總長度大于12個字節(jié),12個字節(jié)后數(shù)據(jù)域為寫入開關輸出量或寄存器數(shù)據(jù)的字節(jié)數(shù)和寫入數(shù)據(jù),對于其它功能碼,請求應用數(shù)據(jù)報文總長度為12個字節(jié)。調(diào)用SFC59讀取首12個字節(jié)報文數(shù)據(jù)記錄,這12個字節(jié)數(shù)據(jù)不僅包含報文頭,還包含功能碼、寄存器或開關量的起始地址、數(shù)量或數(shù)值(QntVal)。當功能碼為0x05或0x06時,QntVal表示數(shù)值,對于其他功能碼,QntVal表示數(shù)量。4.3分析應用程序請求的數(shù)據(jù)傳輸方式分析請求應用數(shù)據(jù)報文包含判斷單元標識符、判斷功能碼、判斷數(shù)量或數(shù)據(jù)和判斷地址范圍,若超出范圍,返回非法信息。4.4開關輸出量的置位當功能碼為0x01、0x02、0x03或0x04時,首先按規(guī)范組建應答報文的首9個字節(jié)數(shù)據(jù),再從通信接口程序的數(shù)據(jù)存儲區(qū)讀取數(shù)據(jù),并將數(shù)據(jù)存入應答報文9個字節(jié)后的數(shù)據(jù)域組成應答報文應用數(shù)據(jù)區(qū)。當功能碼為0x05時,對單個開關輸出量寫操作,當QntVal為0xFF00時,對起始地址的開關輸出量進行置位操作,當QntVal為0x0000時,對起始地址的開關輸出量進行復位操作。當功能碼為0x06時,將QntVal賦值予起始地址相應的寄存器。對于功能碼為0x05或0x06,將12個字節(jié)請求報文不需修改存入應答報文應用數(shù)據(jù)區(qū)。當功能碼為0x0F時,按位對開關輸出量相應通信接口程序的存儲區(qū)操作,當功能碼為0x10時,按字對寄存器相應通信接口程序的存儲區(qū)寫操作。當功能碼為0x0F或0x10時,首先通過SFC59從以太網(wǎng)模件讀取單字節(jié)的字節(jié)數(shù)BytCnt,再通過SFC59讀取BytCnt個字節(jié)數(shù)據(jù),并接收到的數(shù)據(jù)寫入相應通信接口程序的存儲區(qū),操作成功后,將請求報文首12個字節(jié)中的長度值更改為0x0006,并將修改后的12個字節(jié)數(shù)據(jù)存入應答報文應用數(shù)據(jù)區(qū)。4.5異常應收報文應用數(shù)據(jù)區(qū)的組建操作成功后,將anySnd指向正常應答報文應用數(shù)據(jù)區(qū);報文有誤以及操作失敗,按規(guī)范組建相應的異常應答報文應用數(shù)據(jù)區(qū),同時將anySnd指向異常應答報文應用數(shù)據(jù)區(qū);調(diào)用系統(tǒng)功能SFC58將應答報文發(fā)送至以太網(wǎng)模件。5工程應用5.1plc硬件選型某水電廠采用基于Modbus/TCP協(xié)議的計算機監(jiān)控系統(tǒng),上位機采用NC2000監(jiān)控系統(tǒng)軟件,現(xiàn)地控制層采用SJ-500LCU裝置,LCU采用S7-PLC,見圖2。對于每套PLC,均需要設定站地址,Modbus/TCP協(xié)議報頭中單元標識符來定義和區(qū)分各套PL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版七年級數(shù)學上冊:2.1《整式》聽評課記錄5
- 五年級上冊數(shù)學聽評課記錄《4.5 探索活動:梯形的面積》(3)-北師大版
- 中圖版地理七年級下冊《第五節(jié) 黃土高原》聽課評課記錄5
- 青島版八年級上冊數(shù)學聽評課記錄《3-3分式的乘法與除法》
- 小學二年級數(shù)學口算速算試題
- 小學二年級第一學期班主任工作總結
- 五年級口算題帶答案
- 浙教版數(shù)學七年級下冊3.2《單項式的乘法》聽評課記錄
- 粵人版地理八年級下冊《第一節(jié) 地理區(qū)域》單元整體聽課評課記錄2
- 聽評課記錄三年級語文
- 云南省普通初中學生成長記錄模板-好ok
- SB/T 10415-2007雞粉調(diào)味料
- JB/T 20036-2016提取濃縮罐
- 考古繪圖基礎
- GB/T 3452.4-2020液壓氣動用O形橡膠密封圈第4部分:抗擠壓環(huán)(擋環(huán))
- GB/T 32574-2016抽水蓄能電站檢修導則
- 《社會主義市場經(jīng)濟理論(第三版)》第十三章社會主義市場經(jīng)濟標準論
- 變更索賠案例分析
- 2022年4月自學考試06093《人力資源開發(fā)與管理》歷年真題及答案
- 《花婆婆》兒童繪本故事
- DB44∕T 2149-2018 森林資源規(guī)劃設計調(diào)查技術規(guī)程
評論
0/150
提交評論