韓濱旭,沈玉玲,龐海亮
(上海電氣集團(tuán)股份有限公司中央研究院,上海 200070)
組態(tài)軟件作為現(xiàn)今中央監(jiān)控系統(tǒng)的主要開發(fā)工具正運(yùn)用于眾多工業(yè)控制領(lǐng)域例如:石油、化工、制造業(yè)、污水處理、樓宇、軌道交通。在具體的監(jiān)控系統(tǒng)工程實(shí)施中,所使用的設(shè)備例如終端信號(hào)采集設(shè)備和信號(hào)傳輸設(shè)備因行業(yè)需求的不同而有所區(qū)別。比如,在污水處理、軌道交通等環(huán)境監(jiān)控系統(tǒng)中,大多使用PLC、智能儀表等信號(hào)采集和自動(dòng)控制設(shè)備,這就導(dǎo)致了設(shè)備端到中央監(jiān)控系統(tǒng)的數(shù)據(jù)傳輸通信協(xié)議也有所不同。另外,行業(yè)內(nèi)的設(shè)備的通信協(xié)議尚無統(tǒng)一標(biāo)準(zhǔn),因?yàn)閭鬏斀橘|(zhì)的不同又衍生了眾多不同的通信準(zhǔn)則。例如基于串口的施耐德公司莫迪康Modbus-RTU協(xié)議和其基于網(wǎng)絡(luò)TCP/IP的Modbus-TCP/IP協(xié)議,它們是基于兩種傳輸接口與介質(zhì)的不同協(xié)議。因此,組態(tài)軟件作為可以適應(yīng)于多行業(yè)的中央監(jiān)控系統(tǒng)開發(fā)工具,需要多種通信協(xié)議驅(qū)動(dòng)支持。
目前,在電力行業(yè)需求側(cè)監(jiān)控系統(tǒng)開發(fā)過程中,組態(tài)軟件作為上位機(jī)系統(tǒng)開發(fā)的工具正廣泛被使用。IEC60870-5-104規(guī)約是基于網(wǎng)絡(luò)的對(duì)電力系統(tǒng)進(jìn)行調(diào)度通信的通信標(biāo)準(zhǔn),已經(jīng)在上位中央監(jiān)控系統(tǒng)與電力二級(jí)設(shè)備之間廣泛的使用,比如電力遠(yuǎn)動(dòng)終端單元RTU、通信管理機(jī)等等。如何在組態(tài)軟件中實(shí)現(xiàn)IEC60870-5-104規(guī)約推動(dòng)組態(tài)軟件在電力行業(yè)應(yīng)用的關(guān)鍵問題。本文將討論IEC60870-5-104規(guī)約在組態(tài)軟件中具體的驅(qū)動(dòng)開發(fā)實(shí)現(xiàn)。
組態(tài)軟件是針對(duì)監(jiān)控系統(tǒng)開發(fā)的專業(yè)工具,可為用戶提供針對(duì)數(shù)據(jù)采集以及過程控制的專業(yè)開發(fā)環(huán)境和系統(tǒng)運(yùn)行環(huán)境。它們是在自動(dòng)控制系統(tǒng)監(jiān)控層一級(jí)的軟件平臺(tái),通過用圖像組態(tài)形式替代傳統(tǒng)的編程方式,友好的開發(fā)環(huán)境為高效開發(fā)監(jiān)控系統(tǒng)打下堅(jiān)實(shí)的基礎(chǔ)[1]。上海電氣集團(tuán)股份有限公司的NetControl是一款針對(duì)多行業(yè)監(jiān)控系統(tǒng)應(yīng)用的組態(tài)開發(fā)工具,此軟件基于Windows操作系統(tǒng)與微軟.NET的技術(shù)平臺(tái)通過C#編程語言進(jìn)行開發(fā),即將推出的2.0版本可在Windows所有32位和64位操作系統(tǒng)環(huán)境下運(yùn)行,其具有內(nèi)涵豐富的動(dòng)畫圖庫、工程控件庫以及具有良好的網(wǎng)絡(luò)及數(shù)據(jù)管理能力。
由于組態(tài)軟件的通信驅(qū)動(dòng)是相對(duì)獨(dú)立的,所以組態(tài)軟件對(duì)于通信驅(qū)動(dòng)的管理方式都有其獨(dú)特性。NetControl的I/O采用的是基于接口與協(xié)議廠家的驅(qū)動(dòng)管理方式,通信驅(qū)動(dòng)的開發(fā)是基于不同的接口方式與軟件I/O服務(wù)器進(jìn)行數(shù)據(jù)交互,現(xiàn)在所有的接口方式分類為串口類、以太網(wǎng)類以及板卡類型,根據(jù)三種不同驅(qū)動(dòng)開發(fā)類型提供與I/O服務(wù)器連接的不同接口。同時(shí)通信驅(qū)動(dòng)的開發(fā)具有與軟件開發(fā)界面的接口以及軟件工程變量讀寫的接口。由于組態(tài)軟件的通信驅(qū)動(dòng)的開發(fā)與組態(tài)軟件的開發(fā)環(huán)境與運(yùn)行環(huán)境的高度相關(guān),通信驅(qū)動(dòng)首先要讀取用戶配置并根據(jù)用戶配置與具體協(xié)議形成報(bào)文格式和解析方式。本文將以NetControl軟件為例具體介紹IEC60870-5-104規(guī)約的軟件通信驅(qū)動(dòng)實(shí)現(xiàn)。
由于組態(tài)軟件NetControl具體傳輸方式以及物理接口調(diào)用等與OSI七層模型中應(yīng)用層之下層的處理均在I/O服務(wù)器完成,針對(duì)本文所探討的問題即TCP/IP的網(wǎng)絡(luò)服務(wù)處理均在I/O服務(wù)器中完成。通信驅(qū)動(dòng)只需要考慮104規(guī)約如何與NetControl的結(jié)合,即具體實(shí)現(xiàn)組態(tài)軟件中的報(bào)文組成和解析。
104規(guī)約中報(bào)文幀格式有兩種,即變長幀與定長幀,而每一幀均是一個(gè)應(yīng)用規(guī)約數(shù)據(jù)單元(APDU),變長幀由應(yīng)用規(guī)約控制信息(APCI)與應(yīng)用服務(wù)數(shù)據(jù)單元(ASDU)組成,應(yīng)用規(guī)約數(shù)據(jù)單元(APDU)長度是指從控制域第一個(gè)八位位組開始到幀尾的長度,APDU的最大長度為253(減去啟動(dòng)字符與長度兩個(gè)字節(jié)),啟動(dòng)字符68H十進(jìn)制為104定義了數(shù)據(jù)流的起點(diǎn),如圖1所示。
圖1 104規(guī)約變長幀格式[2]
定長幀僅由應(yīng)用規(guī)約控制信息(APCI)構(gòu)成,沒有應(yīng)用數(shù)據(jù)服務(wù)單元(ASDU),總長度為6個(gè)八位位組即6個(gè)字節(jié),而應(yīng)用規(guī)約數(shù)據(jù)單元(APDU)長度固定為4個(gè)字節(jié),通常,定長幀用于通信的監(jiān)視功能以及通信過程的控制如激活連接、激活停止連接等,如圖2所示。
圖2 104規(guī)約定長幀格式[2]
根據(jù)應(yīng)用規(guī)約控制信息的不同組成,104規(guī)約應(yīng)用數(shù)據(jù)單元可分成三種不同幀類型:編號(hào)的信息傳輸類型I格式幀、編號(hào)的監(jiān)視功能類型S格式幀與未編號(hào)的控制功能類型U格式幀。
同時(shí)根據(jù)報(bào)文所包含的數(shù)據(jù)類型的不同,數(shù)據(jù)功能不同,傳輸類型的不同等,104規(guī)約規(guī)定了ASDU的幀組成結(jié)構(gòu),如圖3所示。
圖3 應(yīng)用規(guī)約數(shù)據(jù)單元ASDU結(jié)構(gòu)[2]
在組態(tài)軟件的104規(guī)約通信驅(qū)動(dòng)開發(fā)中正是結(jié)合用戶開發(fā)環(huán)境接口與運(yùn)行環(huán)境還有以上報(bào)文格式根據(jù)規(guī)約的通信過程以及功能描述進(jìn)行程序開發(fā)。
在組態(tài)軟件中,用戶進(jìn)行I/O配置時(shí)首先需要選擇與現(xiàn)場(chǎng)實(shí)際情況相符的通信協(xié)議。之后如果是基于以太網(wǎng)的協(xié)議需要配置TCP/IP的相關(guān)參數(shù)例如:IP地址、端口號(hào)(104規(guī)約中規(guī)定為2404)等。同時(shí)還要針對(duì)具體規(guī)約例如104規(guī)約的具體內(nèi)容進(jìn)行配置,因?yàn)椴煌O(shè)備廠家在104規(guī)約的報(bào)文組成格式上是有差異的。如果要適用于多數(shù)場(chǎng)合那么在驅(qū)動(dòng)開發(fā)時(shí)就要開放104規(guī)約幀結(jié)構(gòu)中數(shù)據(jù)長度可自定義的部分的接口供用戶根據(jù)實(shí)際壞境設(shè)定,例如設(shè)備站號(hào)(即公共地址)、公共地址長度、信息體長度、傳輸原因長度[2],在驅(qū)動(dòng)開發(fā)中通過開發(fā)環(huán)境開放的接口進(jìn)行XAML語言設(shè)計(jì),效果如圖4所示。
圖4 用戶信息配置效果
而對(duì)于用戶配置信息讀寫的后臺(tái)邏輯則通過XAML的后臺(tái)源代碼與其他類進(jìn)行綁定,
類IEC104ConfigData可為后續(xù)的在運(yùn)行環(huán)境下的報(bào)文組成與報(bào)文解析提供用戶信息配置的參數(shù)。
雙Boost單相逆變器并網(wǎng)控制策略//黃松偉,唐芬,肖琦,劉京斗,辛振,PohChiang LOH//(16):167
在運(yùn)行環(huán)境的驅(qū)動(dòng)開發(fā)中,首先需要讀取用戶在開發(fā)環(huán)境下的參數(shù)配置。通過新建一個(gè)104規(guī)約的模型類IEC104Protocol并生成一個(gè)類IEC104ConfigData在IEC104Protocol的實(shí)例可以獲得用戶在開發(fā)環(huán)境下的參數(shù)配置,之后在IEC104Protocol中根據(jù)參數(shù)配置定義104規(guī)約的幀結(jié)構(gòu)。
在一般電力中央監(jiān)控系統(tǒng)中,組態(tài)軟件提供遙信(只讀開關(guān)量)、遙測(cè)(只讀模擬量)、遙控(只寫開關(guān)量)、遙調(diào)(只寫模擬量)等四個(gè)“四遙”的寄存器區(qū)間。NetControl運(yùn)行環(huán)境中,因?yàn)橥ㄐ欧绞降年P(guān)系104規(guī)約通信過程的實(shí)現(xiàn)又分為兩個(gè)部分:讀指令與寫指令。在只讀部分中,104規(guī)約中在總召喚指令發(fā)出后,設(shè)備端即被控站會(huì)將遙信與遙測(cè)的信息主動(dòng)陸續(xù)上發(fā)到控制站即中央監(jiān)控系統(tǒng)所以這相當(dāng)于是一個(gè)類似于“主動(dòng)上傳”的方式而寫指令的步驟是“預(yù)置”、“預(yù)置確認(rèn)”、“遙控執(zhí)行”一直到“執(zhí)行確認(rèn)”,這個(gè)過程類似是“輪詢”的機(jī)制[4]。組態(tài)軟件的I/O服務(wù)器接口提供了選擇通信工程收發(fā)報(bào)文方式的接口,104規(guī)約屬于輪詢與主動(dòng)上傳的聯(lián)合模式。
104規(guī)約在運(yùn)行環(huán)境中的過程首先是從本地初始化開始,一直到總召喚后進(jìn)入數(shù)據(jù)采集階段,過程如圖5所示。
圖5 104規(guī)約驅(qū)動(dòng)流程
中間沒有寫指令的內(nèi)容是因?yàn)樵贗/O服務(wù)器中寫指令作為高優(yōu)先級(jí)可中斷通信過程直接執(zhí)行而并不是周期性的執(zhí)行,由于104規(guī)約對(duì)于初始化沒有特殊要求則初始化選擇默認(rèn)的系統(tǒng)初始化,并將用戶參數(shù)傳遞到新生成的IEC104Protocol實(shí)例中:
通過調(diào)用重載的方法Connect()完成鏈路連接,它需要生成一個(gè)新的TaskInfo實(shí)例,其中包含了驅(qū)動(dòng)需要封裝的下發(fā)報(bào)文CommandInfo(),以及需要返回的報(bào)文格式信息ResponseInfo(),之后通過I/O服務(wù)器執(zhí)行發(fā)送CommandInfo()中需要下發(fā)的報(bào)文并按照ResponseInfo()中規(guī)定的格式篩選返回報(bào)文,建立連接的第一步就是首次握手,首次握手的報(bào)文獲取是從類UFrame中獲?。?/p>
在服務(wù)方法ServiceMethod中,重載ProcessServiceR esponse(ServiceProcessInfo info, byte[] data)依據(jù)功能具體定義的名字info.ServiceID對(duì)特定過程(例如首次握手“FirstHandshake”)返回結(jié)果data進(jìn)行解析并通過SetServiceResult(serviceID,result)返回解析結(jié)果,并可以進(jìn)行下一步對(duì)時(shí)和總召喚過程與首次握手一致??傉賳疽?yàn)閺S家的區(qū)別,有全程只做一次總召喚也有定時(shí)總召喚或事件觸發(fā)下次總召喚,但進(jìn)行下次總召喚前都需要設(shè)備端即被控端發(fā)送本次總召喚的結(jié)束楨。所以104規(guī)約在組態(tài)軟件中的驅(qū)動(dòng)可根據(jù)總召喚的結(jié)束楨來發(fā)下一次的總召喚,而判斷是否發(fā)下一次總召喚是在重載主動(dòng)上發(fā)的報(bào)文分析重載方法中進(jìn)行的:如果收到的字節(jié)數(shù)組的傳輸原因即第九和第十個(gè)字節(jié)是0x0A和0x00那么就是總召喚結(jié)束楨[2]。而其他所有的遙信與遙測(cè)楨以及變位主動(dòng)上傳均是在此方法中進(jìn)行解析,并通過Registers()的方法返回給組態(tài)軟件中的寄存器組:b
當(dāng)在傳輸過程中出現(xiàn)遙控或者遙調(diào)這些高優(yōu)先級(jí)寫指令時(shí),如前所述的傳輸過程會(huì)出現(xiàn)中斷并執(zhí)行寫指令的傳輸過程,如圖6所示。
圖6 遙控指令傳輸過程
而組態(tài)軟件提供用戶對(duì)組態(tài)軟件中用戶生成寄存器組(即通常工程中的點(diǎn)表)的讀取,則使用CreateSampleGroup的方法建立數(shù)據(jù)下發(fā)的打包,最后根據(jù)具體遙控、遙調(diào)的報(bào)文屬性(例如是單點(diǎn)或是雙點(diǎn))生成IFrame中的新實(shí)例并通過重載方法BuildWriteTaskInfo配置報(bào)文信息,再通過執(zhí)行寫指令重載方法ExecuteWriteCommand進(jìn)行下發(fā)。
本文詳細(xì)介紹了組態(tài)軟件中IEC60870-5-104規(guī)約通信驅(qū)動(dòng)的實(shí)現(xiàn)過程,解決了104規(guī)約與組態(tài)軟件應(yīng)如何結(jié)合以適應(yīng)不同場(chǎng)合的應(yīng)用,通過對(duì)用戶配置信息的讀取和104規(guī)約幀格式模式的建立,與軟件各項(xiàng)接口配合開發(fā)出具體的104規(guī)約驅(qū)動(dòng)。此方法適用于多種商用組態(tài)軟件,并在之后的使用過程中不斷改進(jìn),為相關(guān)組態(tài)軟件產(chǎn)品在電力行業(yè)的推廣應(yīng)奠定基礎(chǔ)。
[1] 歐金成,歐世樂,林德杰,彭備戰(zhàn).組態(tài)軟件的現(xiàn)狀與發(fā)展[J].自動(dòng)化博覽,2002,19(2):42-45.
[2] DL/T634.5104-2002.遠(yuǎn)動(dòng)設(shè)備及系統(tǒng)第5-104部分:傳輸規(guī)約采用標(biāo)準(zhǔn)傳輸協(xié)議子集的IEC60870-5-101,網(wǎng)絡(luò)訪問[S].
[3] 馬曉紅,管荑,林祺蓉.104規(guī)約在調(diào)度自動(dòng)化系統(tǒng)中的應(yīng)用[J].山東電力技術(shù),2011,(6):1-5,14.
[4] 趙淵,沈智健.基于TCP/IP的IEC60870-5-104遠(yuǎn)動(dòng)規(guī)約在電力系統(tǒng)中的應(yīng)用[J].電網(wǎng)技術(shù),2003:27(10):56-60,71.