




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于modbuscp協議的s7-plc通信研究
0基于s1-plc的智能設計s7-incl已廣泛應用于現場控制領域。然而,s7-incl沒有關于歐盟網絡的公開協議。Modbus/TCP協議作為一種工業以太網通信標準協議,廣泛應用于工業自動化控制領域。與S7-PLC相比,國內外眾多中大型PLC都支持Modbus/TCP通信協議,用戶不需要編寫Modbus/TCP應用層程序,就可直接使用,諸如國外Schneider公司推出的Quantum、Premium系列PLC和國內南瑞集團公司推出的MB40、MB80系列iPLC(智能可編程控制器)等,目前S7-PLC需要用戶購買昂貴的軟件包方可實現Modbus/TCP通信,而不能直接實現,這樣既不利于Modbus/TCP通信在S7-PLC上應用,也不利于S7-PLC在自動化控制領域朝數字化、信息化、網絡化和標準化方向發展趨勢下應用,因此在S7-PLC支持TCP/IP協議基礎上設計Modbus/TCP應用層程序實現在S7-PLC上Modbus/TCP通信應用尤為重要。筆者通過Modbus/TCP應用層程序開發以及組態配置實現上位機與S7-PLC基于Modbus/TCP協議通信。1通信可行性1.1基于單元標記的數據幀Modbus/TCP協議是運行在TCP/IP上的Modbus報文傳輸協議,使用TCP/IP以太網的5層,協議數據格式為每個8Bit字節包含兩個4Bit的十六進制字符,與ModbusRTU協議相同。其應用數據單元(ADU)包含報文頭、功能代碼和數據3部分,功能代碼和數據構成協議數據單元(PDU),報文頭(MBAP)由事務處理標識符(2字節)、協議標識符(2字節)、長度(2字節,余下域字節的數量,包含單元標識符和協議數據單元在內)、單元標識符(1字節)組成。Modbus/TCP數據幀是基于Modbus-RTU數據幀,幀頭添加事務元標識符、協議標識符、長度等6字節,幀尾去除容錯校驗碼,用報頭中的單元標識符取代Modbus-RTU上通常使用的從站地址,Modbus/TCP在應用層不需要校驗域,而是利用TCP層、IP層和以太網鏈路層差錯校驗碼的使用校驗和機制來校驗分組交換的準確性。該協議采用請求和響應機制:客戶機向服務器發送請求,分析處理請求,向客戶機發送應答。其數據幀封裝過程為:用戶數據首先在應用層按照Modbus應用層規范進行封裝,生成相應的請求或應答應用數據單元(ADU),該ADU按照RFC1042規范映射到TCP/IP協議棧的各層進行數據封裝。Modbus/TCP數據幀拆解過程與封裝過程相反。1.2ss-plc循環執行S7-PLC支持通過內部總線進行CPU模件和以太網模件數據交換,以太網模件支持TCP/IP協議,S7-PLC可通過以太網模件與上位機實現通信連接。S7-PLC軟件平臺STEP7軟件配備了結構化語言SCL,是西門子公司依據IEC61131-3標準創立的一種高等編程語言,它與編程語言Pascal類似,它能實現龐雜的數學運算、復雜算法優化和批量數據處理,編寫的程序非常簡練和緊湊。S7-PLC循環執行的主程序組織塊OB1可以直接或者間接地調用相應的FB、FC、SFB、SFC實現數據采集、過程監測、控制調節以及通信功能。FC、FB是用戶程序,可以編程使用,FB有其專用的背景數據塊,FB可以有多個背景數據塊實現不同對象的同一功能,SFB、SFC是系統程序,可以被調用。SFC59(RD_REC)為CPU模件通過內部總線接收數據的系統功能,SFC58(WR_REC)為CPU模件通過內部總線發送數據的系統功能。1.3ieee802.3—設計模型Modbus/TCP協議首先需要在上位機和S7-PLC建立可靠的連接,然后保證數據可靠并且按順序到達傳輸。S7-PLC基于Modbus/TCP協議應用模型見表1,利用該模型可將S7-PLC作為Modbus/TCP協議的服務器,與監控系統中上位機實現Modbus/TCP通信。通信過程為:(1)S7-PLC中以太網模件通過TCP/IP通信獲取上位機發送的Modbus/TCP協議IEEE802.3以太網報文,以太網模件TCP/IP協議棧從以太網物理層、數據鏈路層、IP層和TCP層逐層拆解以太網報文;(2)通信程序調用SFC59(RD_REC),通過內部總線從以太網模件獲取請求應用數據幀;(3)通信程序將應用數據幀拆分成MBAP報頭和協議數據單元,并對MBAP報頭和協議數據單元細分,對協議數據單元中功能碼和數據分析,進行相應讀寫操作;(4)通信程序將上送數據和功能碼封裝在應答的協議數據單元,再按協議規范封裝MBAP報頭,構成Modbus/TCP應用數據單元;(5)通信程序調用SFC58(WR_REC),通過內部總線將應答的應用數據單元寫入以太網模件;(6)以太網模件TCP/IP協議棧將應用數據單元在TCP層、IP層、數據鏈路層和以太網物理層逐層封裝,構成完整的IEEE802.3以太網報文,最終通過TCP/IP通信將Modbus/TCP應用數據單元封裝在內的應答以太網報文發送至上位機。過程(1)和(6)需要通過硬件組態和網絡配置,由以太網模件自動完成,其他過程則通過編寫應用層通信程序FB實現,設計應用層用戶通信程序也是本文研究重點。2功能請求對比S7-PLC作為服務器與作為客戶機的上位機基于請求/響應機制進行Modbus/TCP通信。本文S7-PLC的Modbus/TCP通信功能碼有8種,功能碼和功能作用見表2。上位機向S7-PLC發送請求,S7-PLC分析請求,處理請求,向客戶機發送應答。當S7-PLC對上位機響應時,它使用功能碼來指示正常(無差錯)響應或者出現某種差錯(稱為異常響應)。對于一個正常響應來說,S7-PLC僅復制原始功能碼。對于異常響應,S7-PLC將原始功能碼加0x80(即其字節的最高有效位設置邏輯1)后返回。請求報文用RQ數組表示,正常響應的應答報文用SN數組表示,異常響應的應答報文用EX數組表示,數組單位均為字節。各數組的第1、2個單元分別存貯事務元標識符的高、低字節,各數組的第3、4個單元分別存貯協議標識符的高、低字節。各數組的第7個單元存貯單元標識符SID。各數組的第5、6個單元分別存貯長度的高、低字節,因為長度為余下域的字節數,小于256,RQ、SN、EX為0,事務元標識符和協議標識符的值均為0,請求報文、正常響應報文、異常響應報文中前5字節值均為0,即RQ…RQ、SN…SN、EX…EX=0x00。分3種類型深入解析8種功能請求報文和正常應答報文,并對異常響應的應答報文解析。(1)對于讀取數據功能報文,即功能碼FNC為0x01、0x02、0x03或0x04,請求報文的幀長度為12個字節,其余下域的字節數為6個;正常應答的幀長度為B+9個字節,其余下域的字節數為B+3個。B為實際數據(開關量或寄存器)的字節數,D1…DB為從地址ADD開始需要讀取的B個實際數據;QNT為實際數據(開關量或寄存器)的數量,QNTH為其高字節,QNTL為其低字節;ADD為讀取的起始地址,ADDH為其高字節,ADDL為其低字節。功能碼FNC為0x01或0x02,是對輸出型或輸入型開關量進行讀取操作,QNT為從地址ADD開始需要讀取的位數量,QNT在1~1920之間,其字節數為B=(QNT+7)/8;功能碼FNC為0x03或0x04,是對保持型或模擬輸入量型寄存器讀取操作,QNT在1~125之間,QNT為需要讀取從起始地址讀取寄存器數量,其字節數為B=2*QNT。請求報文的數據幀見表3,正常響應的應答報文數據幀見表4。(2)對單個開關輸出量或保持寄存器寫操作功能,即功能碼FNC為0x05或0x06,正常響應報文與請求報文完全相同,報文幀長度為12個字節,余下域的字節數為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為寫入寄存器的數值,VDH為其高字節,VDL為低字節。請求和應答報文數據幀見表5。(3)對多個開關輸出量或保持寄存器寫操作功能,即功能碼FNC為0x0F或0x10,請求報文的幀長度為B+13個字節,其余下域的字節數為B+7個;正常應答的幀長度為12個字節,其余下域的字節數為6個。B為實際數據(開關量或保持寄存器)的字節數,VD1…VDB為需要從地址ADD開始寫入的B個實際數據;QNT為實際數據(開關量或保持寄存器)的數量,QNTH為其高字節,QNTL為其低字節;ADD為讀取的起始地址,ADDH為其高字節,ADDL為其低字節。功能碼FNC為0x0F,是對QNT個開關輸出量進行寫入操作,QNT為從地址ADD開始需要寫入的位數量,QNT在1~1920之間,其字節數為B=(QNT+7)/8;功能碼FNC為0x10,是對QNT個保持寄存器寫入操作,QNT在1~125之間,QNT為地址ADD開始寫入的保持寄存器數量,其字節數為B=2*QNT。請求報文的數據幀見表6,正常應答報文數據幀見表7。(4)異常應答報文的幀長度為9個字節,余下域的字節數為3個,功能碼EXF為原始功能碼FNC加0x80,異常碼EXC表明出錯的原因。異常應答報文見表8,異常碼0x01、0x02、0x03或0x0B分別表示S7-PLC分析請求報文時發現功能碼非法、地址非法、數值或數量非法和單元標識符不一致,以及異常碼0x04表示S7-PLC進行相應操作過程中出現差錯。3基于轉化應用機理的通信程序架構在S7-PLC的開關輸入量、開關輸出量和模擬輸入量硬件組態中同一類型按槽位順序連續地分配地址,保持寄存器由數據塊DB數據存儲,將數據類型相同且地址連續的數據組塊傳送提高通信效率和可靠。FB和FC均是S7-PLC用戶程序中的子程序,若FC用于不同對象的相同功能時新編程序和修改程序,而FB不需要修改程序。對于不同對象FB程序調用,調用的程序相同,背景數據塊不同而已,FC沒有靜態變量,FB有保存在背景數據塊中的靜態變量。S7-PLC基于Modbus/TCP通信程序架構如圖1所示,在通信程序架構中,在S7-PLC作為服務器,通信程序由通信邏輯處理和通信接口兩部分組成,一個通信邏輯處理程序需要數個不同通信邏輯處理程序一起應用,實現對開關輸入量、開關輸出量、模擬量輸入量、保持寄存器(四類數據以下稱物理數據)的訪問功能。一套S7-PLC含有數塊以太網模件,諸如S7-300/400PLC軟冗余系統和S7-400PLC硬冗余系統,不僅需要調用多個通信邏輯處理程序,還需要調用多個通信邏輯處理程序,因此通信邏輯處理程序和通信接口程序采用FB程序。FB通過背景數據量傳遞的變量區有:輸入區(IN)、輸出區(OUT)、輸入輸出區(IN_OUT)和靜態變量區(STAT),其中IN、IN_OUT、OUT為接口參數,直接體現在生成的FB塊左右兩側,而STAT為內部參數。通信接口程序在其不同背景數據塊中建立相應存儲區,通信接口程序將物理數據按類型映射至其背景數據塊中存儲區,通信接口程序在物理數據和通信邏輯處理程序中的靜態變量收發區進行數據轉移作用,系統功能SFC59(RD_REC)和SFC58(WR_REC)數據記錄區以字節為單位,因此通信接口程序還將物理數據按字節進行組塊。通信邏輯處理程序在其背景數據塊中建立相應收發區,在其背景數據塊中收發區從以太網模件CP接收Modbus/TCP請求報文,分析請求報文,并根據請求報文對通信接口程序中的靜態變量存貯區進行訪問操作,按規范將數據組成Modbus/TCP應答報文,返回給以太網模件。4通信邏輯程序設計通信邏輯處理程序和通信接口程序采用SCL語言編寫,通信邏輯處理程序包含變量定義、讀取請求報文、分析報文、處理報文和發送響應報文5部分。4.1.相關變量的定義服務器邏輯功能塊定義模件邏輯輸入地址(CP_LAD-DR)、模件連接標識號(CONN_ID)等輸入變量,定義單元標識(UnitID)、功能碼(FctCod)、起始地址(StrtAdd)、數量或數值(QntVal)、字節數(BytCnt)、收發數據區(MsgBUF)等靜態變量,定義發送數據的any指針(anySnd)、接收數據的any指針(anyRcv)等臨時變量。4.2讀取已讀取的文件文長度為12個字對于上述8種功能碼,Modbus/TCP請求應用數據報文總長度均大于或等于12個字節。當功能碼為0x10或0x0F時,請求報文總長度大于12個字節,12個字節后數據域為寫入開關輸出量或寄存器數據的字節數和寫入數據,對于其它功能碼,請求應用數據報文總長度為12個字節。調用SFC59讀取首12個字節報文數據記錄,這12個字節數據不僅包含報文頭,還包含功能碼、寄存器或開關量的起始地址、數量或數值(QntVal)。當功能碼為0x05或0x06時,QntVal表示數值,對于其他功能碼,QntVal表示數量。4.3分析應用程序請求的數據傳輸方式分析請求應用數據報文包含判斷單元標識符、判斷功能碼、判斷數量或數據和判斷地址范圍,若超出范圍,返回非法信息。4.4開關輸出量的置位當功能碼為0x01、0x02、0x03或0x04時,首先按規范組建應答報文的首9個字節數據,再從通信接口程序的數據存儲區讀取數據,并將數據存入應答報文9個字節后的數據域組成應答報文應用數據區。當功能碼為0x05時,對單個開關輸出量寫操作,當QntVal為0xFF00時,對起始地址的開關輸出量進行置位操作,當QntVal為0x0000時,對起始地址的開關輸出量進行復位操作。當功能碼為0x06時,將QntVal賦值予起始地址相應的寄存器。對于功能碼為0x05或0x06,將12個字節請求報文不需修改存入應答報文應用數據區。當功能碼為0x0F時,按位對開關輸出量相應通信接口程序的存儲區操作,當功能碼為0x10時,按字對寄存器相應通信接口程序的存儲區寫操作。當功能碼為0x0F或0x10時,首先通過SFC59從以太網模件讀取單字節的字節數BytCnt,再通過SFC59讀取BytCnt個字節數據,并接收到的數據寫入相應通信接口程序的存儲區,操作成功后,將請求報文首12個字節中的長度值更改為0x0006,并將修改后的12個字節數據存入應答報文應用數據區。4.5異常應收報文應用數據區的組建操作成功后,將anySnd指向正常應答報文應用數據區;報文有誤以及操作失敗,按規范組建相應的異常應答報文應用數據區,同時將anySnd指向異常應答報文應用數據區;調用系統功能SFC58將應答報文發送至以太網模件。5工程應用5.1plc硬件選型某水電廠采用基于Modbus/TCP協議的計算機監控系統,上位機采用NC2000監控系統軟件,現地控制層采用SJ-500LCU裝置,LCU采用S7-PLC,見圖2。對于每套PLC,均需要設定站地址,Modbus/TCP協議報頭中單元標識符來定義和區分各套PL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政組織理論與績效評估的關系試題及答案
- 2025年信息系統項目管理師的考試難點試題及答案
- 一步到位2025年ACCESS考試試題及答案
- 教育、科技雙驅動力下在線教育平臺策略進化探究
- 商業模式的數字化變革與組織結構調整
- 從紙上到云端數字化轉型的趨勢與挑戰
- 瑜伽與冥想靜修中心企業制定與實施新質生產力項目商業計劃書
- 天文觀測小組行業跨境出海項目商業計劃書
- 機械設計與加工培訓行業跨境出海項目商業計劃書
- 民俗保護在線平臺行業深度調研及發展項目商業計劃書
- 2025年北京市朝陽區高三二模考試語文試卷(含答案)
- 2025年安徽省合肥市(合肥一中)三模(五月)生物試卷及答案
- 2025年中考第一次模擬考試卷:生物(廣西卷)(解析版)
- 新能源汽車行業的商業趨勢研究試題及答案
- cnc考試題及答案解析
- 2025屆江西省上饒市高三下學期二模英語試題(原卷版+解析版)
- 《ISO 37001-2025反賄賂管理體系要求及使用指南》專業解讀和應用培訓指導材料之7:9績效評價(雷澤佳編制-2025A0)
- 湖北省武漢市2025年高三3月份模擬考試英語試題含答案
- 熱控系統考試試題及答案
- 機動車檢測維修專業技術人員職業資格2024年筆試考試模擬題
- 汽車制造業的現狀與未來
評論
0/150
提交評論