摘要:本文介紹了水電站監(jiān)控系統(tǒng)、西門(mén)子PLC集成PROFINET接口的CPU315-2PN/DP模塊的開(kāi)放式IE通訊和Modbus/TCP協(xié)議,并詳細(xì)講述了使用開(kāi)放式IE通訊編程實(shí)現(xiàn)Modbus/TCP協(xié)議的方法,說(shuō)明了采用面向?qū)ο缶幊痰脑O(shè)計(jì)思想和軟件編程。在湖南銅信溪水電站中應(yīng)用證明通過(guò)開(kāi)放式IE通訊實(shí)現(xiàn)Modbus/TCP協(xié)議與上位機(jī)系統(tǒng)通訊時(shí)穩(wěn)定可靠,不需要采用西門(mén)子公司OPC、能有效降低整個(gè)水電站監(jiān)控系統(tǒng)成本。
關(guān)鍵詞:水電站,PLC,PROFINET,開(kāi)放式IE通訊,Modbus/TCP,面向?qū)ο?,OPC
1 引言
目前國(guó)內(nèi)的水電站從最初的“集中控制、功能分散方式”到當(dāng)今流行的“全分層分布開(kāi)放式運(yùn)行方式”,已全部采用計(jì)算機(jī)控制系統(tǒng)取代過(guò)去以繼電器常規(guī)控制方式,可實(shí)現(xiàn)“無(wú)人值班”(少人值守),大大提高了水電站的自動(dòng)化水平。一般整個(gè)水電站監(jiān)控系統(tǒng)在物理上分為兩層:電站控制層和現(xiàn)地控制層。電站控制層(或稱上位機(jī)系統(tǒng))主要用于監(jiān)控系統(tǒng)的組態(tài)、維護(hù),水電站運(yùn)行的監(jiān)視、操作、信息管理、遠(yuǎn)動(dòng)和優(yōu)化控制等.現(xiàn)地控制層按控制對(duì)象分散方式一般設(shè)置為機(jī)組現(xiàn)地控制單元(LCU)、開(kāi)關(guān)站及公用現(xiàn)地控制單元(LCU)和閘門(mén)現(xiàn)地控制單元(LCU),現(xiàn)地控制單元(LCU)主要采用PLC完成控制對(duì)象的數(shù)據(jù)采集與處理、控制與調(diào)節(jié)、安全運(yùn)行監(jiān)視、事件順序記錄(SOE)、數(shù)據(jù)及網(wǎng)絡(luò)通訊等。
2 項(xiàng)目簡(jiǎn)介
湖南銅信溪水電站裝設(shè)三臺(tái)10MW水輪發(fā)電機(jī)組,整個(gè)監(jiān)控系統(tǒng)采用“全分層分布開(kāi)放式運(yùn)行方式”,上位機(jī)系統(tǒng)設(shè)置二套操作員工作站、一套工程師工作站和一套通訊工作站,現(xiàn)地控制層設(shè)置三套機(jī)組LCU、一套開(kāi)關(guān)站及公用LCU和一套閘門(mén)LCU。LCU主要采用西門(mén)子S7-300集成PROFINET接口的CPU315-2PN/DP模塊,通過(guò)編程實(shí)現(xiàn)Modbus/TCP協(xié)議與上位機(jī)系統(tǒng)通訊;同時(shí)配置相應(yīng)的數(shù)字量輸入/輸出模塊和模擬量輸入模塊,完成機(jī)組、開(kāi)關(guān)站、公用和閘門(mén)等設(shè)備的控制與調(diào)節(jié)。具體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 湖南銅信溪水電站網(wǎng)絡(luò)結(jié)構(gòu)
3 CPU315-2PN/DP模塊及Modbus/TCP協(xié)議
CPU315-2PN/DP是西門(mén)子2004年底推出的一款高性價(jià)比S7-300 CPU.通過(guò)集成的通信接口(MPI/DP,PN),該CPU可直接連接MPI網(wǎng)絡(luò)、Profibus-DP網(wǎng)絡(luò)、開(kāi)放式工業(yè)以太網(wǎng),以及基于工業(yè)以太網(wǎng)技術(shù)的新一代現(xiàn)場(chǎng)總線PROFINET。該CPU的推出,進(jìn)一步增強(qiáng)了S7-300 PLC的通信功能,使S7-300連接以太網(wǎng)的成本大大降低,并為PROFINET技術(shù)的普及提供了強(qiáng)有力支持。集成的IE/PROFINET接口支持多種通訊服務(wù):基于PROFINET的開(kāi)放通訊 (PROFINET IO, PROFINET CBA)、S7 通訊、開(kāi)放式IE通訊、SIMATIC NET OPC Server和PG/OP通訊。本項(xiàng)目就是采用開(kāi)放式IE通訊編程實(shí)現(xiàn)Modbus/TCP協(xié)議與水電站上位機(jī)系統(tǒng)通訊。軟硬件版本為V2.3.0 或更高、帶有集成PROFINET接口的CPU,均支持開(kāi)放式IE 通訊,其具有不占用CPU連接資源、最多可建立八個(gè)TCP/IP連接,完全基于開(kāi)放式TCP/IP協(xié)議、可與第三方設(shè)備在以太網(wǎng)上進(jìn)行通訊等優(yōu)點(diǎn)。
Modbus/TCP協(xié)議是簡(jiǎn)單的、中立廠商的用于管理和控制自動(dòng)化設(shè)備的Modbus系列通訊協(xié)議的派生產(chǎn)品。Modbus/TCP協(xié)議是一種面向TCP連接的協(xié)議,只有在建立了TCP連接后,才能以半雙工的方式進(jìn)行數(shù)據(jù)交換。Modbus/TCP協(xié)議結(jié)構(gòu)要求請(qǐng)求和響應(yīng)帶有六個(gè)字節(jié)的前綴,具體結(jié)構(gòu)如下:
byte 0: 事務(wù)處理標(biāo)識(shí)符 –通常為 0
byte 1: 事務(wù)處理標(biāo)識(shí)符 –通常為 0
byte 2: 協(xié)議標(biāo)識(shí)符= 0
byte 3: 協(xié)議標(biāo)識(shí)符= 0
byte 4: 長(zhǎng)度字段 (上半部分字節(jié)) = 0 (所有的消息長(zhǎng)度小于256)
byte 5: 長(zhǎng)度字段 (下半部分字節(jié)) = 后面字節(jié)的數(shù)量
byte 6: 單元標(biāo)識(shí)符 (原“從站地址”)
byte 7: MODBUS 功能代碼
byte 8:寄存器地址(高字節(jié))
byte 9:寄存器地址(低字節(jié))
byte 10:寄存器數(shù)量(高字節(jié),固定為0)
byte 11:寄存器數(shù)量(低字節(jié))
byte 12:后面數(shù)據(jù)字節(jié)數(shù)量————-寫(xiě)寄存器時(shí)有效
byte 13:寄數(shù)據(jù)1(高字節(jié))————-寫(xiě)寄存器時(shí)有效
byte 14:寄數(shù)據(jù)1(低字節(jié))————-寫(xiě)寄存器時(shí)有效
需要注意的是Modbus/TCP協(xié)議所有的請(qǐng)求都是通過(guò)端口號(hào)502發(fā)送的,而CPU315-2PN/DP模塊的端口號(hào)只能設(shè)置為2000至5000。
4 軟件實(shí)現(xiàn)
4.1 編程指令說(shuō)明
在CPU315-2PN/DP這一邊,不是通過(guò)NetPro設(shè)置通訊連接,而是通過(guò)編寫(xiě)程序?qū)崿F(xiàn)。為了能通過(guò)用戶程序和其它與TCP/IP兼容的通訊伙伴通過(guò)開(kāi)放式IE通訊實(shí)現(xiàn)交換數(shù)據(jù),STEP7(V5.3+SP1或以上)提供了四個(gè)功能塊(FB)和一個(gè)用戶定義數(shù)據(jù)類型(UDT)用于組態(tài)連接和數(shù)據(jù)交換:
1) FB63“TSEND”:用于發(fā)送數(shù)據(jù)
2) FB64“TRCV”:用于接收數(shù)據(jù)
3) FB65“TCON”:用于建立連接
4) FB66“TDISCON”:用于斷開(kāi)連接
5) UDT65“TCON_PAR”:包括組態(tài)連接屬性的數(shù)據(jù)結(jié)構(gòu)
以上功能塊(FB)包含在Standard Library > Communication Blocks庫(kù)中。
開(kāi)放式IE通訊只能通過(guò)TCP/IP 建立以太網(wǎng)連接,通訊是面向連接的,只有與通訊伙伴建立了連接后才能傳送數(shù)據(jù)。
要編程建立連接,需要?jiǎng)?chuàng)建一個(gè)包含UDT65“TCON_PAR”數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)快(DB)。該數(shù)據(jù)結(jié)構(gòu)包含建立連接所需的所有參數(shù),需要為每個(gè)連接創(chuàng)建一個(gè)這樣的數(shù)據(jù)結(jié)構(gòu)。一個(gè)連接建立之后,將受到 CPU 的監(jiān)控,如果中間發(fā)生了中斷,則自動(dòng)嘗試重新建立連接。
4.2 程序執(zhí)行過(guò)程
整個(gè)以太網(wǎng)通訊程序分成以下五個(gè)部分:
1) 初始化
初始化程序在OB100中執(zhí)行,主要設(shè)置連接ID、CPU315-2PN/DP端口號(hào)、上位機(jī)系統(tǒng)中操作員工作站IP地址和開(kāi)始等待建立連接標(biāo)志(FB65_REQ=1)。
2) 建立連接
由開(kāi)始等待建立連接標(biāo)志(FB65_REQ=1)調(diào)用FB65等待上位機(jī)系統(tǒng)中操作員工作站請(qǐng)求建立連接。如果上位機(jī)系統(tǒng)中操作員工作站請(qǐng)求建立了連接,且FB65被無(wú)錯(cuò)誤執(zhí)行建立了連接(FB65_DONE=1),設(shè)置開(kāi)始接收數(shù)據(jù)標(biāo)志(FB64_EN_R=1)和復(fù)位開(kāi)始等待建立連接標(biāo)志(FB65_REQ=0)。如果上位機(jī)系統(tǒng)中操作員工作站沒(méi)有請(qǐng)求建立連接或請(qǐng)求建立了連接FB65執(zhí)行后有錯(cuò)誤發(fā)生,則程序不做任何處理,還是等待建立連接。
3) 接收數(shù)據(jù)
由開(kāi)始接收數(shù)據(jù)標(biāo)志(FB64_EN_R=1)調(diào)用FB64開(kāi)始接收數(shù)據(jù)。如果上位機(jī)系統(tǒng)中操作員工作站發(fā)送了數(shù)據(jù),且被FB64被無(wú)錯(cuò)誤接收后(FB64_BDR=1),則調(diào)用Modbus/TCP協(xié)議處理程序(FB74)對(duì)接收到的數(shù)據(jù)進(jìn)行判斷和處理。如果上位機(jī)系統(tǒng)中操作員工作站沒(méi)有發(fā)送數(shù)據(jù)或發(fā)生了數(shù)據(jù)FB64執(zhí)行后有錯(cuò)誤發(fā)生,則程序不做任何處理,還是等待接收數(shù)據(jù)。
4)Modbus/TCP協(xié)議處理
首先判斷接收數(shù)據(jù)數(shù)量、寄存器地址和功能碼是否正確。如果正確,則進(jìn)行讀/寫(xiě)數(shù)據(jù)處理,并準(zhǔn)備正確響應(yīng)所需數(shù)據(jù)。如果錯(cuò)誤,則設(shè)置非法數(shù)據(jù)地址或非法功能碼標(biāo)志,并準(zhǔn)備錯(cuò)誤響應(yīng)所需數(shù)據(jù)。程序執(zhí)行完成后設(shè)置發(fā)送數(shù)據(jù)標(biāo)志(FB63_REQ=1)和復(fù)位開(kāi)始接收數(shù)據(jù)標(biāo)志(FB64_EN_R=0)。
5) 發(fā)送數(shù)據(jù)
由開(kāi)始發(fā)送數(shù)據(jù)標(biāo)志(FB63_REQ=1)調(diào)用FB63開(kāi)始發(fā)送數(shù)據(jù)。不管發(fā)送完成是否正確,只要發(fā)送數(shù)據(jù)完成了就設(shè)置開(kāi)始接收數(shù)據(jù)標(biāo)志(FB64_EN_R=1)和復(fù)位發(fā)送數(shù)據(jù)標(biāo)志(FB63_REQ=0),然后開(kāi)始等待接收數(shù)據(jù)。
4.3 程序塊
為了實(shí)現(xiàn)CPU315-2PN/DP與水電站上位機(jī)系統(tǒng)中操作員工作站的數(shù)據(jù)交換,PLC需要下表1所示程序塊:
表1 PLC所需程序塊
為了正確組態(tài)連接參數(shù),必須了解連接結(jié)構(gòu)(UDT65)中每個(gè)參數(shù)的含義。連接結(jié)構(gòu)(UDT65)的說(shuō)明如下表2所示:
表2 連接結(jié)構(gòu)(UDT65)說(shuō)明
4.4 以太網(wǎng)通訊控制程序
以太網(wǎng)通訊控制程序采用面向?qū)ο蟮慕Y(jié)構(gòu)化編程方法,在一個(gè)功能塊(FB73)中封裝了以太網(wǎng)通訊的建立連接、接收數(shù)據(jù)、調(diào)用Modbus/TCP協(xié)議處理程序和發(fā)送數(shù)據(jù)等過(guò)程。為此必須聲明用于以太網(wǎng)通訊控制程序(FB73)輸入、輸出和輸入/輸出參數(shù)。具體聲明的參數(shù)如下表3所示:
表3 FB73聲明的參數(shù)
通過(guò)FB73封裝了以太網(wǎng)通訊控制程序,當(dāng)需要與計(jì)算機(jī)建立一個(gè)連接時(shí)只需在OB1調(diào)用一次FB73,當(dāng)需要建立多個(gè)連接時(shí)多次調(diào)用FB73即可。注意:CPU315-2PN/DP最多可建立八個(gè)TCP/IP連接。
4.5 Modbus/TCP協(xié)議處理程序
Modbus/TCP協(xié)議處理程序采用面向?qū)ο蟮慕Y(jié)構(gòu)化編程方法,在一個(gè)功能塊(FB74)中封裝了數(shù)據(jù)數(shù)量、數(shù)據(jù)地址和功能碼判斷,處理并準(zhǔn)備上傳所需數(shù)據(jù)等全部過(guò)程。為此必須聲明用于Modbus/TCP協(xié)議處理程序(FB74)輸入、輸出和輸入/輸出參數(shù)。具體聲明的參數(shù)如下表4所示:
地址 聲明 名稱 類型 初始值 說(shuō)明
0.0 IN_OUT Byte_Count Int 0 以太網(wǎng)通訊接收到數(shù)據(jù)的長(zhǎng)度
2.0 IN_OUT Data_DB Int 0 存放通訊臨時(shí)數(shù)據(jù)的數(shù)據(jù)塊
表4 FB74聲明的參數(shù)
5 結(jié)束語(yǔ)
本程序的難點(diǎn)在于實(shí)現(xiàn)對(duì)不同數(shù)據(jù)塊的讀取和寫(xiě)入,通過(guò)Modbus/TCP協(xié)議結(jié)構(gòu)中寄存器地址字節(jié)8 (寄存器高字節(jié))對(duì)應(yīng)數(shù)據(jù)塊號(hào)、寄存器地址字節(jié)9 (寄存器低字節(jié))對(duì)應(yīng)數(shù)據(jù)塊字節(jié)號(hào)就可解決。
自本系統(tǒng)運(yùn)行以來(lái),CPU315-2PN/DP與上位機(jī)系統(tǒng)操作員工作站1、2通訊一直正常,從未出現(xiàn)過(guò)通訊中斷現(xiàn)象,有效地保證了湖南銅信溪水電站監(jiān)控系統(tǒng)的正常運(yùn)行, 應(yīng)用這種方法不需要采用西門(mén)子公司OPC能有效降低整個(gè)水電站監(jiān)控系統(tǒng)成本。可見(jiàn),采用通過(guò)開(kāi)放式IE通訊與上位機(jī)系統(tǒng)通訊是一種行之有效的方法,實(shí)現(xiàn)了讀取遙信、遙測(cè)、定值、SOE和寫(xiě)入遙控、遙調(diào)和定值等功能,完全滿足《DL/T578-1995水電廠計(jì)算機(jī)監(jiān)控系統(tǒng)基本技術(shù)條件》實(shí)時(shí)性、可靠性和通訊安全性要求。由此看來(lái),西門(mén)子PLC集成PROFINET接口的CPU模塊采用開(kāi)放式IE通訊與第三方智能設(shè)備通過(guò)以太網(wǎng)交換數(shù)據(jù)是一種值得推廣的方式。