国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

S7-PLC基于Modbus/TCP協(xié)議通信研究

2014-12-23 01:33袁文波尤萬方殷召生
計算機(jī)工程與設(shè)計 2014年2期
關(guān)鍵詞:模件字節(jié)寄存器

袁文波,洪 波,尤萬方,殷召生,蔣 彥,溫 柳

(1.國網(wǎng)電力科學(xué)研究院 南京南瑞集團(tuán)公司水利水電技術(shù)分公司,江蘇 南京210003;2.安徽電力涇縣供電有限責(zé)任公司,安徽 涇縣242500)

0 引 言

S7-PLC作為現(xiàn)地控制核心廣泛應(yīng)用于自動化控制領(lǐng)域,但S7-PLC 目前沒有公開的以太網(wǎng)通訊標(biāo)準(zhǔn)協(xié)議[1]。Modbus/TCP協(xié)議作為一種工業(yè)以太網(wǎng)通信標(biāo)準(zhǔn)協(xié)議,廣泛應(yīng)用于工業(yè)自動化控制領(lǐng)域。與S7-PLC相比,國內(nèi)外眾多中大型PLC都支持Modbus/TCP通信協(xié)議,用戶不需要編寫Modbus/TCP應(yīng)用層程序,就可直接使用,諸如國外Schneider公司推出的Quantum、Premium 系列PLC和國內(nèi)南瑞集團(tuán)公司推出的MB40、MB80 系列iPLC (智能可編程控制器)等,目前S7-PLC需要用戶購買昂貴的軟件包方可實現(xiàn)Modbus/TCP 通 信,而 不 能 直 接 實 現(xiàn)[2,3],這 樣 既不利于Modbus/TCP通信在S7-PLC上應(yīng)用,也不利于S7-PLC在自動化控制領(lǐng)域朝數(shù)字化、信息化、網(wǎng)絡(luò)化和標(biāo)準(zhǔn)化方向發(fā)展趨勢下應(yīng)用,因此在S7-PLC支持TCP/IP協(xié)議基礎(chǔ)上 設(shè) 計Modbus/TCP 應(yīng) 用 層 程 序 實 現(xiàn) 在S7-PLC 上Modbus/TCP通信應(yīng)用尤為重要。筆者通過Modbus/TCP應(yīng)用層程序開發(fā)以及組態(tài)配置實現(xiàn)上位機(jī)與S7-PLC 基于Modbus/TCP協(xié)議通信。

1 通信的可行性

1.1 Modbus/TCP協(xié)議[4-8]

Modbus/TCP協(xié)議是運(yùn)行在TCP/IP上的Modbus報文傳輸協(xié)議,使用TCP/IP以太網(wǎng)的5層,協(xié)議數(shù)據(jù)格式為每個8Bit字節(jié)包含兩個4Bit的十六進(jìn)制字符,與Modbus-RTU 協(xié)議相同。其應(yīng)用數(shù)據(jù)單元 (ADU)包含報文頭、功能代碼和數(shù)據(jù)3部分,功能代碼和數(shù)據(jù)構(gòu)成協(xié)議數(shù)據(jù)單元(PDU),報文頭 (MBAP)由事務(wù)處理標(biāo)識符 (2 字節(jié))、協(xié)議標(biāo)識符 (2字節(jié))、長度 (2字節(jié),余下域字節(jié)的數(shù)量,包含單元標(biāo)識符和協(xié)議數(shù)據(jù)單元在內(nèi))、單元標(biāo)識符 (1字節(jié))組成。Modbus/TCP數(shù)據(jù)幀是基于Modbus-RTU 數(shù)據(jù)幀,幀頭添加事務(wù)元標(biāo)識符、協(xié)議標(biāo)識符、長度等6字節(jié),幀尾去除容錯校驗碼,用報頭中的單元標(biāo)識符取代Modbus-RTU 上通常使用的從站地址,Modbus/TCP在應(yīng)用層不需要校驗域,而是利用TCP層、IP 層和以太網(wǎng)鏈路層差錯校驗碼的使用校驗和機(jī)制來校驗分組交換的準(zhǔn)確性。該協(xié)議采用請求和響應(yīng)機(jī)制:客戶機(jī)向服務(wù)器發(fā)送請求,分析處理請求,向客戶機(jī)發(fā)送應(yīng)答。其數(shù)據(jù)幀封裝過程為[9]:用戶數(shù)據(jù)首先在應(yīng)用層按照Modbus應(yīng)用層規(guī)范進(jìn)行封裝,生成相應(yīng)的請求或應(yīng)答應(yīng)用數(shù)據(jù)單元 (ADU),該ADU 按照RFC1042規(guī)范映射到TCP/IP協(xié)議棧的各層進(jìn)行數(shù)據(jù)封裝。Modbus/TCP數(shù)據(jù)幀拆解過程與封裝過程相反。

1.2 S7-PLC通信和編程資源[10,11]

S7-PLC支持通過內(nèi)部總線進(jìn)行CPU 模件和以太網(wǎng)模件數(shù)據(jù)交換,以太網(wǎng)模件支持TCP/IP協(xié)議,S7-PLC 可通過以太網(wǎng)模件與上位機(jī)實現(xiàn)通信連接。S7-PLC 軟件平臺STEP7 軟件配備了結(jié)構(gòu)化語言SCL,是西門子公司依據(jù)IEC61131-3標(biāo)準(zhǔn)創(chuàng)立的一種高等編程語言,它與編程語言Pascal類似,它能實現(xiàn)龐雜的數(shù)學(xué)運(yùn)算、復(fù)雜算法優(yōu)化和批量數(shù)據(jù)處理,編寫的程序非常簡練和緊湊。S7-PLC 循環(huán)執(zhí)行的主程序組織塊OB1可以直接或者間接地調(diào)用相應(yīng)的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.3 設(shè)計模型

Modbus/TCP協(xié)議首先需要在上位機(jī)和S7-PLC建立可靠的連接,然后保證數(shù)據(jù)可靠并且按順序到達(dá)傳輸。S7-PLC基于Modbus/TCP協(xié)議應(yīng)用模型見表1,利用該模型可將S7-PLC作為Modbus/TCP 協(xié)議的服務(wù)器,與監(jiān)控系統(tǒng)中上位機(jī)實現(xiàn)Modbus/TCP通信。

通信過程為:①S7-PLC中以太網(wǎng)模件通過TCP/IP通信獲取上位機(jī)發(fā)送的Modbus/TCP協(xié)議IEEE802.3以太網(wǎng)報文,以太網(wǎng)模件TCP/IP 協(xié)議棧從以太網(wǎng)物理層、數(shù)據(jù)鏈路層、IP層和TCP層逐層拆解以太網(wǎng)報文;②通信程序調(diào)用SFC59 (RD_REC),通過內(nèi)部總線從以太網(wǎng)模件獲取請求應(yīng)用數(shù)據(jù)幀;③通信程序?qū)?yīng)用數(shù)據(jù)幀拆分成MBAP

表1 S7-PLC基于Modbus/TCP協(xié)議通信模型

報頭和協(xié)議數(shù)據(jù)單元,并對MBAP報頭和協(xié)議數(shù)據(jù)單元細(xì)分,對協(xié)議數(shù)據(jù)單元中功能碼和數(shù)據(jù)分析,進(jìn)行相應(yīng)讀寫操作;④通信程序?qū)⑸纤蛿?shù)據(jù)和功能碼封裝在應(yīng)答的協(xié)議數(shù)據(jù)單元,再按協(xié)議規(guī)范封裝MBAP 報頭,構(gòu)成Modbus/TCP應(yīng)用數(shù)據(jù)單元;⑤通信程序調(diào)用SFC58(WR_REC),通過內(nèi)部總線將應(yīng)答的應(yīng)用數(shù)據(jù)單元寫入以太網(wǎng)模件;⑥以太網(wǎng)模件TCP/IP 協(xié)議棧將應(yīng)用數(shù)據(jù)單元在TCP 層、IP層、數(shù)據(jù)鏈路層和以太網(wǎng)物理層逐層封裝,構(gòu)成完整的IEEE802.3以太網(wǎng)報文[12],最終通過TCP/IP通信將Modbus/TCP應(yīng)用數(shù)據(jù)單元封裝在內(nèi)的應(yīng)答以太網(wǎng)報文發(fā)送至上位機(jī)。過程①和⑥需要通過硬件組態(tài)和網(wǎng)絡(luò)配置,由以太網(wǎng)模件自動完成,其他過程則通過編寫應(yīng)用層通信程序FB實現(xiàn),設(shè)計應(yīng)用層用戶通信程序也是本文研究重點(diǎn)。

2 請求和應(yīng)答數(shù)據(jù)幀解析

S7-PLC作為服務(wù)器與作為客戶機(jī)的上位機(jī)基于請求/響應(yīng)機(jī)制進(jìn)行Modbus/TCP 通信。本文S7-PLC 的Modbus/TCP通信功能碼有8種,功能碼和功能作用見表2。

表2 功能碼和功能作用

上位機(jī)向S7-PLC 發(fā)送請求,S7-PLC 分析請求,處理請求,向客戶機(jī)發(fā)送應(yīng)答。當(dāng)S7-PLC對上位機(jī)響應(yīng)時,它使用功能碼來指示正常 (無差錯)響應(yīng)或者出現(xiàn)某種差錯(稱為異常響應(yīng))。對于一個正常響應(yīng)來說,S7-PLC僅復(fù)制原始功能碼。對于異常響應(yīng),S7-PLC將原始功能碼加0x80(即其字節(jié)的最高有效位設(shè)置邏輯1)后返回。

請求報文用RQ 數(shù)組表示,正常響應(yīng)的應(yīng)答報文用SN數(shù)組表示,異常響應(yīng)的應(yīng)答報文用EX 數(shù)組表示,數(shù)組單位均為字節(jié)。各數(shù)組的第1、2個單元分別存貯事務(wù)元標(biāo)識符的高、低字節(jié),各數(shù)組的第3、4個單元分別存貯協(xié)議標(biāo)識符的高、低字節(jié)。各數(shù)組的第7個單元存貯單元標(biāo)識符SID。各數(shù)組的第5、6個單元分別存貯長度的高、低字節(jié),因為長度為余下域的字節(jié)數(shù),小于256,RQ [4]、SN[4]、EX [4]為0,事務(wù)元標(biāo)識符和協(xié)議標(biāo)識符的值均為0,請求報文、正常響應(yīng)報文、異常響應(yīng)報文中前5字節(jié)值均為0,即RQ [0]… RQ [4]、SN [0]… SN [4]、EX[0]… EX [4]=0x00。分3種類型深入解析8種功能請求報文和正常應(yīng)答報文,并對異常響應(yīng)的應(yīng)答報文解析。

(1)對于讀取數(shù)據(jù)功能報文,即功能碼FNC 為0x01、0x02、0x03或0x04,請求報文的幀長度為12 個字節(jié),其余下域的字節(jié)數(shù)為6 個;正常應(yīng)答的幀長度為B+9 個字節(jié),其余下域的字節(jié)數(shù)為B+3個。B為實際數(shù)據(jù) (開關(guān)量或寄存器)的字節(jié)數(shù),D1…DB為從地址ADD 開始需要讀取的B個實際數(shù)據(jù);QNT 為實際數(shù)據(jù) (開關(guān)量或寄存器)的數(shù)量,QNTH 為其高字節(jié),QNTL 為其低字節(jié);ADD為讀取的起始地址,ADDH 為其高字節(jié),ADDL 為其低字節(jié)。功能碼FNC為0x01或0x02,是對輸出型或輸入型開關(guān)量進(jìn)行讀取操作,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,正常響應(yīng)的應(yīng)答報文數(shù)據(jù)幀見表4。

(2)對單個開關(guān)輸出量或保持寄存器寫操作功能,即功能碼FNC為0x05或0x06,正常響應(yīng)報文與請求報文完全相同,報文幀長度為12 個字節(jié),余下域的字節(jié)數(shù)為6個,對地址ADD 的開關(guān)輸出量或保持寄存器的進(jìn)行寫操作。功能碼FUNC 為0x05,是對單個開關(guān)輸出量寫操作,包括置位和復(fù)位兩種操作:對地址ADD 的開關(guān)輸出量進(jìn)行置位操作請求 (當(dāng)RQ [10]=VDH=0xFF,同時RQ [11]=VDL=0x00,即VD=0xFF00),對地址ADD 開出位進(jìn)行復(fù)位操作請求 (當(dāng)RQ [10]=VDL=0x00,RQ [11]=VDH=0x00,即VD=0x0000)。功能碼FUNC 為0x06,是對單個保持寄存器寫操作,將VD 賦值于地址為ADD 的保持寄存器,VD 為寫入寄存器的數(shù)值,VDH 為其高字節(jié),VDL為低字節(jié)。請求和應(yīng)答報文數(shù)據(jù)幀見表5。

表3 FNC為0x01、0x02、0x03、0x04的請求報文

表4 FNC為0x01、0x02、0x03、0x04的應(yīng)答報文

表5 FNC為0x05、0x06的請求和應(yīng)答報文

(3)對多個開關(guān)輸出量或保持寄存器寫操作功能,即功能碼FNC為0x0F或0x10,請求報文的幀長度為B+13個字節(jié),其余下域的字節(jié)數(shù)為B+7個;正常應(yīng)答的幀長度為12個字節(jié),其余下域的字節(jié)數(shù)為6 個。B 為實際數(shù)據(jù)(開關(guān)量或保持寄存器)的字節(jié)數(shù),VD1…VDB為需要從地址ADD 開始寫入的B 個實際數(shù)據(jù);QNT 為實際數(shù)據(jù) (開關(guān)量或保持寄存器)的數(shù)量,QNTH 為其高字節(jié),QNTL為其低字節(jié);ADD 為讀取的起始地址,ADDH 為其高字節(jié),ADDL為其低字節(jié)。功能碼FNC 為0x0F,是對QNT個開關(guān)輸出量進(jìn)行寫入操作,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,正常應(yīng)答報文數(shù)據(jù)幀見表7。

(4)異常應(yīng)答報文的幀長度為9個字節(jié),余下域的字節(jié)數(shù)為3個,功能碼EXF 為原始功能碼FNC 加0x80,異常碼EXC 表明出錯的原因。異常應(yīng)答報文見表8,異常碼0x01、0x02、0x03或0x0B分別表示S7-PLC分析請求報文時發(fā)現(xiàn)功能碼非法、地址非法、數(shù)值或數(shù)量非法和單元標(biāo)識符不一致,以及異常碼0x04表示S7-PLC 進(jìn)行相應(yīng)操作過程中出現(xiàn)差錯。

表6 FNC為0x0F、0x10的請求報文

表7 FNC為0x0F、0x10的應(yīng)答報文

表8 異常應(yīng)答報文

3 通信程序架構(gòu)

在S7-PLC的開關(guān)輸入量、開關(guān)輸出量和模擬輸入量硬件組態(tài)中同一類型按槽位順序連續(xù)地分配地址,保持寄存器由數(shù)據(jù)塊DB數(shù)據(jù)存儲[13],將數(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 通 信 程 序 架 構(gòu) 如 圖1 所示,在通信程序架構(gòu)中,在S7-PLC作為服務(wù)器,通信程序由通信邏輯處理和通信接口兩部分組成,一個通信邏輯處理程序需要數(shù)個不同通信邏輯處理程序一起應(yīng)用,實現(xiàn)對開關(guān)輸入量、開關(guā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 塊左右兩側(cè),而STAT 為內(nèi)部參數(shù)。通信接口程序在其不同背景數(shù)據(jù)塊中建立相應(yīng)存儲區(qū),通信接口程序?qū)⑽锢頂?shù)據(jù)按類型映射至其背景數(shù)據(jù)塊中存儲區(qū),通信接口程序在物理數(shù)據(jù)和通信邏輯處理程序中的靜態(tài)變量收發(fā)區(qū)進(jìn)行數(shù)據(jù)轉(zhuǎn)移作用,系統(tǒng)功能SFC59 (RD_REC)和SFC58 (WR_REC)數(shù)據(jù)記錄區(qū)以字節(jié)為單位,因此通信接口程序還將物理數(shù)據(jù)按字節(jié)進(jìn)行組塊。通信邏輯處理程序在其背景數(shù)據(jù)塊中建立相應(yīng)收發(fā)區(qū),在其背景數(shù)據(jù)塊中收發(fā)區(qū)從以太網(wǎng)模件CP接收Modbus/TCP請求報文,分析請求報文,并根據(jù)請求報文對通信接口程序中的靜態(tài)變量存貯區(qū)進(jìn)行訪問操作,按規(guī)范將數(shù)據(jù)組成Modbus/TCP應(yīng)答報文,返回給以太網(wǎng)模件。

圖1 S7-PLC基于Modbus/TCP協(xié)議通信程序架構(gòu)

4 通信程序設(shè)計

通信邏輯處理程序和通信接口程序采用SCL 語言編寫,通信邏輯處理程序包含變量定義、讀取請求報文、分析報文、處理報文和發(fā)送響應(yīng)報文5部分。

4.1 變量定義

服務(wù)器邏輯功能塊定義模件邏輯輸入地址 (CP_LAD-DR)、模件連接標(biāo)識號 (CONN_ID)等輸入變量,定義單元標(biāo)識 (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 讀取請求應(yīng)用數(shù)據(jù)報文

對于上述8種功能碼,Modbus/TCP 請求應(yīng)用數(shù)據(jù)報文總長度均大于或等于12 個字節(jié)。當(dāng)功能碼為0x10 或0x0F時,請求報文總長度大于12個字節(jié),12個字節(jié)后數(shù)據(jù)域為寫入開關(guān)輸出量或寄存器數(shù)據(jù)的字節(jié)數(shù)和寫入數(shù)據(jù),對于其它功能碼,請求應(yīng)用數(shù)據(jù)報文總長度為12個字節(jié)。調(diào)用SFC59讀取首12個字節(jié)報文數(shù)據(jù)記錄,這12個字節(jié)數(shù)據(jù)不僅包含報文頭,還包含功能碼、寄存器或開關(guān)量的起始地址、數(shù)量或數(shù)值 (QntVal)。當(dāng)功能碼為0x05 或0x06 時,QntVal表示數(shù)值,對于其他功能碼,QntVal表示數(shù)量。

4.3 分析請求應(yīng)用數(shù)據(jù)報文

分析請求應(yīng)用數(shù)據(jù)報文包含判斷單元標(biāo)識符、判斷功能碼、判斷數(shù)量或數(shù)據(jù)和判斷地址范圍,若超出范圍,返回非法信息。

4.4 請求處理

當(dāng)功能碼為0x01、0x02、0x03 或0x04 時,首先按規(guī)范組建應(yīng)答報文的首9個字節(jié)數(shù)據(jù),再從通信接口程序的數(shù)據(jù)存儲區(qū)讀取數(shù)據(jù),并將數(shù)據(jù)存入應(yīng)答報文9個字節(jié)后的數(shù)據(jù)域組成應(yīng)答報文應(yīng)用數(shù)據(jù)區(qū)。當(dāng)功能碼為0x05時,對單個開關(guān)輸出量寫操作,當(dāng)QntVal為0xFF00時,對起始地址的開關(guān)輸出量進(jìn)行置位操作,當(dāng)QntVal為0x0000時,對起始地址的開關(guān)輸出量進(jìn)行復(fù)位操作。當(dāng)功能碼為0x06時,將QntVal賦值予起始地址相應(yīng)的寄存器。對于功能碼為0x05或0x06,將12個字節(jié)請求報文不需修改存入應(yīng)答報文應(yīng)用數(shù)據(jù)區(qū)。當(dāng)功能碼為0x0F時,按位對開關(guān)輸出量相應(yīng)通信接口程序的存儲區(qū)操作,當(dāng)功能碼為0x10時,按字對寄存器相應(yīng)通信接口程序的存儲區(qū)寫操作。當(dāng)功能碼為0x0F或0x10時,首先通過SFC59從以太網(wǎng)模件讀取單字節(jié)的字節(jié)數(shù)BytCnt,再通過SFC59讀取BytCnt個字節(jié)數(shù)據(jù),并接收到的數(shù)據(jù)寫入相應(yīng)通信接口程序的存儲區(qū),操作成功后,將請求報文首12個字節(jié)中的長度值更改為0x0006,并將修改后的12個字節(jié)數(shù)據(jù)存入應(yīng)答報文應(yīng)用數(shù)據(jù)區(qū)。

4.5 正常響應(yīng)或異常響應(yīng)

操作成功后,將anySnd 指向正常應(yīng)答報文應(yīng)用數(shù)據(jù)區(qū);報文有誤以及操作失敗,按規(guī)范組建相應(yīng)的異常應(yīng)答報文應(yīng)用數(shù)據(jù)區(qū),同時將anySnd指向異常應(yīng)答報文應(yīng)用數(shù)據(jù)區(qū);調(diào)用系統(tǒng)功能SFC58將應(yīng)答報文發(fā)送至以太網(wǎng)模件。

5 工程應(yīng)用

5.1 系統(tǒng)結(jié)構(gòu)

某水電廠采用基于Modbus/TCP協(xié)議的計算機(jī)監(jiān)控系統(tǒng),上位機(jī)采用NC2000監(jiān)控系統(tǒng)軟件,現(xiàn)地控制層采用SJ-500LCU 裝置,LCU 采用S7-PLC,見圖2。對于每套PLC,均需要設(shè)定站地址,Modbus/TCP協(xié)議報頭中單元標(biāo)識符來定義和區(qū)分各套PLC。上位機(jī)作為發(fā)起者將請求數(shù)據(jù)幀的以太網(wǎng)報文至PLC,PLC根據(jù)請求要求做出處理和響應(yīng)。

圖2 系統(tǒng)結(jié)構(gòu)

5.2 PLC 硬件組態(tài)與網(wǎng)絡(luò)配置

編程者在Step7 軟件平臺的硬件組態(tài)窗口中,為主機(jī)架上分別配置電源模件、CPU 模件和以太網(wǎng)模件,設(shè)置以太網(wǎng)模件的邏輯輸入地址,選擇100Mbps全雙工方式通信參數(shù),設(shè)置相應(yīng)IP地址,在Step7 軟件平臺網(wǎng)絡(luò)配置組態(tài)窗口,為以太網(wǎng)模件配置網(wǎng)絡(luò)連接,并配置本地連接標(biāo)識號,協(xié)議選用TCP協(xié)議,端口號設(shè)置為502,通信模式選用發(fā)送/接收模式。

5.3 運(yùn)行結(jié)果及分析

該水電廠計算機(jī)監(jiān)控系統(tǒng)在現(xiàn)場成功運(yùn)行數(shù)年,對各設(shè)備進(jìn)行過程監(jiān)測、數(shù)據(jù)采集、控制調(diào)節(jié)。系統(tǒng)運(yùn)行至今沒有出現(xiàn)過通信上的誤報、重報、漏報現(xiàn)象,水電廠所有S7-PLC的采集數(shù)據(jù)傳入上位機(jī)數(shù)據(jù)庫的時間小于1s,上位機(jī)發(fā)出命令到S7-PLC接受命令的時間小于200ms。系統(tǒng)通信快速、安全、穩(wěn)定及可靠,驗證了Modbus/TCP 協(xié)議通信在S7-PLC系統(tǒng)上實現(xiàn)。

6 結(jié)束語

本文通過對Modbus/TCP 協(xié)議和對S7-PLC 通信程序資源研究,提出了Modbus/TCP 通信協(xié)議在S7-PLC 系統(tǒng)上應(yīng)用模型,對8種功能碼分3類進(jìn)行分析請求報文和正常響應(yīng)報文以及異常響應(yīng)報文等的數(shù)據(jù)幀,構(gòu)建S7-PLC基于Modbus/TCP通信程序架構(gòu),在此設(shè)計了S7-PLC 基于Modbus/TCP協(xié)議通信程序。在某水電廠計算機(jī)監(jiān)控系統(tǒng)中通過硬件組態(tài)和網(wǎng)絡(luò)配置實現(xiàn)上位機(jī)與S7-PLC 基于Modbus/TCP協(xié)議 通 信。Modbus/TCP 通 信 在S7-PLC 系統(tǒng)上成功實現(xiàn),為Modbus/TCP 協(xié)議在S7-PLC 系統(tǒng)上推廣應(yīng)用具有重要意義。

[1]ZHANG Shiyou.Direct communication between PC and S7PLC by fetch/write method [J].Anhui Metallurgy,2012,27 (1):31-33 (in Chinese). [張世友.利用FETCH/WRITE 方式實現(xiàn)PC機(jī)與S7PLC 的直接通訊 [J].安徽冶金,2012,27(1):31-33.]

[2]CHEN Qun.Non-driver application of modbus protocol in S7-300 [J].Computer Engineering,2009,35 (1):254-255,259 (in Chinese).[陳群.S7-300中Modbus協(xié)議的免驅(qū)動應(yīng)用 [J].計算機(jī)工程,2009,35 (1):254-255.]

[3]Siemens A G.SIMATIC factory automation [EB/OL].[2012-08-15].http://www.ad.siemens.com.

[4]GB/T 19582-2008.Modbus industrial automation network specification[S](in Chinese).[GB/T 19582-2008,基于Modbus協(xié)議的工業(yè)自動化網(wǎng)絡(luò)規(guī)范[S].]

[5]Modbus_IDA.Modbus messaging on TCP/IP implementation guide V1.0b[EB/OL].[2006-10-24].http://www.modbus.org.

[6]Modbus_IDA.Modbus over serial line specification and implementation guide V1.02 [EB/OL].[2006-12-20].http://www.modbus.org.

[7]Modbus_IDA.Modbus TCP conformance test specification V3.0[EB/OL].[2009-12-15].http://www.modbus.org.

[8]Modbus_IDA.Modbus application protocol specification VI.1b3 [EB/OL].[2012-04-26].http://www.modbus.org.

[9]ZHAO Yixin,TANG Yan.Static active optimizing technique investigation for modbus TCP/IP system [J].Journal of Southwest China Normal University (Natural Science),2006,31(4):116-120 (in Chinese).[趙亦欣,唐雁.Modbus TCP/IP系統(tǒng)靜態(tài)主動優(yōu)化技術(shù)研究 [J].西南師范大學(xué)學(xué)報 (自然科學(xué)版),2006,31 (4):116-120.]

[10]GAO Hongbin,KONG Meijing,HE Menghe.Siemens PLC and industrial control network applications [M].Beijing:Publishing House of Electronics Industry,2006:52-64 (in Chinese).[高鴻斌,孔美靜,赫孟合.西門子PLC 與工業(yè)控制網(wǎng)絡(luò)應(yīng)用 [M].北京:電子工業(yè)出版社,2006:52-64.]

[11]Siemens AG.System software for S7-300/400 system and standard functions [EB/OL].[2010-10-31].http://www.ad.siemens.com.

[12]LIU Zhenhua,ZHU Mingfu.Research and implementation of Modbus protocol over UDP/IP [J].Microcomputer Applications,2010,31 (12):20-27 (in Chinese).[劉振華,朱 明富.UDP/IP協(xié)議下Modbus協(xié)議的研究與實現(xiàn) [J].微計算機(jī)應(yīng)用,2010,31 (12):20-27.]

[13]Siemens AG.Addressing for S7-300and S7-400 [EB/OL].[2010-09-30].http://www.ad.siemens.com.

猜你喜歡
模件字節(jié)寄存器
伺服卡模件更換時負(fù)荷突降原因分析
No.8 字節(jié)跳動將推出獨(dú)立出口電商APP
N95口罩機(jī)刀模件的設(shè)計及加工
Lite寄存器模型的設(shè)計與實現(xiàn)
No.10 “字節(jié)跳動手機(jī)”要來了?
簡談MC7字節(jié)碼
maxDNA分散控制系統(tǒng)I/O模件冗余實現(xiàn)機(jī)制
DCS過程控制站內(nèi)IO模件地址重疊識別方法
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
一種可重構(gòu)線性反饋移位寄存器設(shè)計