葉偉,丁桂林,顏毅斌,胡凱凱
(南車株洲電力機(jī)車研究所有限公司,湖南 株洲 412001)
風(fēng)能作為一種清潔的可再生能源,受到了世界各國的重視。中國風(fēng)能儲(chǔ)量大、分布面廣,僅陸上風(fēng)能儲(chǔ)量就有約253GW。2012年中國新增風(fēng)電裝機(jī)容量12960MW,累計(jì)風(fēng)電裝機(jī)容量為75324.2MW,雙居全球第一位[1]。發(fā)展風(fēng)電,不僅可以節(jié)約常規(guī)能源,而且有利于改善能源結(jié)構(gòu),減少環(huán)境污染。風(fēng)電機(jī)組的控制系統(tǒng)根據(jù)風(fēng)速、風(fēng)向?qū)︼L(fēng)電機(jī)組的各單元加以控制,穩(wěn)定輸出電壓和頻率,并實(shí)現(xiàn)最大風(fēng)能利用。
近年來,性能優(yōu)越的以太網(wǎng)應(yīng)用越來越廣泛。本文基于以太網(wǎng),提出了一種采用UDP協(xié)議的風(fēng)電機(jī)組通信方案。采用ABB公司的可編程邏輯控制器(PLC)作為核心控制器,PLC預(yù)留了1400多 Bytes的RAM作為數(shù)據(jù)發(fā)送和接收緩沖區(qū),能夠滿足系統(tǒng)需求。PLC與上位機(jī)通過以太網(wǎng)組成分布式計(jì)算機(jī)網(wǎng)絡(luò)通信系統(tǒng),如圖1所示。
TCP/IP協(xié)議是目前網(wǎng)絡(luò)協(xié)議中的實(shí)際工業(yè)標(biāo)準(zhǔn),采用TCP/IP協(xié)議會(huì)帶來諸多好處,網(wǎng)絡(luò)設(shè)備可以連接到Internet,實(shí)現(xiàn)風(fēng)電機(jī)組真正意義上的遠(yuǎn)程監(jiān)控。TCP/IP是一個(gè)4層協(xié)議系統(tǒng),可以分為鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層[2]。每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。TCP/IP協(xié)議族的4個(gè)層次如圖2所示。
圖1 風(fēng)電機(jī)組分布式計(jì)算機(jī)網(wǎng)絡(luò)通信系統(tǒng)
圖2 TCP/IP協(xié)議族的4個(gè)層次
圖3 PLC與上位機(jī)通信示意圖
圖4 UDP報(bào)文結(jié)構(gòu)
鏈路層完成以太網(wǎng)設(shè)備的驅(qū)動(dòng)、物理接口的處理等任務(wù)。網(wǎng)絡(luò)層由多種協(xié)議組成,IP協(xié)議是其中最重要的一個(gè),主要完成網(wǎng)絡(luò)互連和路由選擇。應(yīng)用層則負(fù)責(zé)處理特定的應(yīng)用服務(wù)。TCP/IP傳輸層有兩個(gè)并列的協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)。二者的共同點(diǎn)是均提供了進(jìn)程通信的能力,主要差別在于:TCP面向連接,需要建立“握手信息”,提供可靠通信保證;而UDP是一種無連接的服務(wù)。TCP較UDP占用較多系統(tǒng)資源。通信速度上,UDP比TCP快。UDP能夠達(dá)到較高的通信速率[3]。
PLC給上位機(jī)傳輸?shù)臄?shù)據(jù)主要有:報(bào)文信息;總發(fā)電量、總耗電量等全局統(tǒng)計(jì)量;日發(fā)電量等日統(tǒng)計(jì)量;機(jī)組登錄信息;風(fēng)機(jī)狀態(tài)機(jī)信息;10分鐘記錄值;功率曲線;故障信息等;風(fēng)電場的專用以太網(wǎng)帶寬可以保證通信質(zhì)量,故選用UDP協(xié)議,加快通信速度,減輕控制器的負(fù)擔(dān)。
上位機(jī)向PLC發(fā)送UDP請(qǐng)求報(bào)文,該報(bào)文中的數(shù)據(jù)“告訴”PLC需要什么信息。PLC收到UDP請(qǐng)求報(bào)文后,給上位機(jī)發(fā)送UDP響應(yīng)報(bào)文,該報(bào)文中含有對(duì)應(yīng)的信息。其通信結(jié)構(gòu)如圖3。
每一個(gè)UDP報(bào)文分為UDP首部和UDP數(shù)據(jù)區(qū)兩部分。UDP協(xié)議規(guī)定UDP首部由4個(gè)字段組成,且長度固定為8個(gè)字節(jié),每個(gè)字段占2個(gè)字節(jié)。分別為源端口號(hào),目的端口號(hào),UDP長度以及校驗(yàn)和[4]。UDP數(shù)據(jù)區(qū)由開發(fā)人員定義。UDP報(bào)文結(jié)構(gòu)如圖4所示。
上位機(jī)向PLC發(fā)送UDP請(qǐng)求報(bào)文,源端口號(hào)為1026(該端口號(hào)可以根據(jù)實(shí)際情況確定,通常建議使用較大的端口號(hào),避免與其他應(yīng)用沖突),目的端口號(hào)為32768。PLC給上位機(jī)發(fā)送UDP響應(yīng)報(bào)文,源端口號(hào)與目的端口號(hào)都為32768。UDP長度是指每1條UDP報(bào)文的長度。UDP校驗(yàn)和提供差錯(cuò)檢測。由于PLC需要給上位機(jī)發(fā)送的數(shù)據(jù)量較大,我們將數(shù)據(jù)分為99個(gè)UDP響應(yīng)報(bào)文發(fā)送;因而上位機(jī)也需要給PLC發(fā)送99個(gè)UDP請(qǐng)求報(bào)文,UDP請(qǐng)求報(bào)文和UDP響應(yīng)報(bào)文一一對(duì)應(yīng)。UDP請(qǐng)求報(bào)文長度統(tǒng)一為37個(gè)字節(jié),對(duì)應(yīng)UDP數(shù)據(jù)區(qū)長度為29個(gè)字節(jié),UDP響應(yīng)報(bào)文長度(共99個(gè))各不一樣。UDP請(qǐng)求報(bào)文數(shù)據(jù)區(qū)格式與值如表1所示(16進(jìn)制表示,每格代表1個(gè)字節(jié))。
表1前7個(gè)字節(jié)為UDP協(xié)議底層自動(dòng)增加的部分,其余字節(jié)預(yù)留給上位機(jī)做標(biāo)志位使用。第1個(gè)字節(jié)為PLC的標(biāo)識(shí)值,值為0x 5A;第6(LL)與第7(HL)字節(jié)內(nèi)的數(shù)據(jù)為UDP請(qǐng)求報(bào)文數(shù)據(jù)區(qū)從第8字節(jié)開始到尾部的字節(jié)數(shù),第6字節(jié)為低位,第7字節(jié)為高位,值為0x0016。第8(高8位)和第9字節(jié)(低8位),為PLC響應(yīng)并返回?cái)?shù)據(jù)的條件(可自由定義,這里定義為0x0008,)。IF1,IF2和IF3(14~16字節(jié))是UDP請(qǐng)求報(bào)文的用戶標(biāo)識(shí)符,可自由定義。26、27、28和29這四個(gè)字節(jié)規(guī)定了具體的UDP請(qǐng)求報(bào)文類型及索引。其中FCH(高8位)和FCL(低8位)為UDP請(qǐng)求報(bào)文類型;CIH(高8位)和CIL(低8位)為UDP請(qǐng)求報(bào)文類型對(duì)應(yīng)的索引。一般情況下,F(xiàn)CH和CIH總為0,F(xiàn)CL和CIL的意義如表2所示,由類型值和其對(duì)應(yīng)的索引值,可以得到UDP請(qǐng)求報(bào)文為99個(gè),分別是1個(gè)報(bào)文信息、1個(gè)全局統(tǒng)計(jì)量報(bào)文、20個(gè)日統(tǒng)計(jì)量報(bào)文、2個(gè)登錄信息報(bào)文、2個(gè)風(fēng)電機(jī)組狀態(tài)機(jī)報(bào)文、18個(gè)10分鐘記錄值報(bào)文、3個(gè)功率曲線報(bào)文和52個(gè)故障信息報(bào)文。請(qǐng)求報(bào)文中未說明的字節(jié)可為任意值,應(yīng)用中未作處理,直接丟棄。
由表2中FCL和CIL的值,可知UDP響應(yīng)報(bào)文的數(shù)量為99個(gè)。UDP響應(yīng)報(bào)文數(shù)據(jù)區(qū)長度不一,前25個(gè)字節(jié)為標(biāo)識(shí)值,第26字節(jié)到報(bào)文尾部為機(jī)組具體數(shù)據(jù)。UDP響應(yīng)報(bào)文數(shù)據(jù)區(qū)前25個(gè)字節(jié)格式如表3所示(每格代表一個(gè)字節(jié))。
第1~7字節(jié)為PLC系統(tǒng)底層自動(dòng)添加。第一個(gè)字節(jié)為PLC規(guī)定的標(biāo)識(shí)值,與請(qǐng)求報(bào)文相對(duì)應(yīng),值為5A;ID(第2~5字節(jié))為PLC生成的標(biāo)識(shí)值;LL(低8位)和HL(高8位)表明了UDP響應(yīng)報(bào)文數(shù)據(jù)區(qū)從第8字節(jié)到尾部的字節(jié)數(shù)。FCL(低8位)和FCH(高8位)是指UDP報(bào)文類型,CIL(低8位)和CIH(高8位)是指UDP報(bào)文類型對(duì)應(yīng)的索引,與UDP請(qǐng)求報(bào)文相對(duì)應(yīng)。NOH(高8位)和NOL(低8位)表示由FCL所確定的某一類型響應(yīng)報(bào)文的總數(shù)量;IF1,IF2和IF3是指UDP請(qǐng)求報(bào)文的用戶標(biāo)識(shí)符,PLC不做處理將其返回給上位機(jī)。DT4,DT3,DT2,DT1是指PLC系統(tǒng)響應(yīng)時(shí)刻的時(shí)間值;AFNH(高8位)和AFNL(低8位)是PLC標(biāo)識(shí)值;FNH(高8位)和FNL(低8位)標(biāo)識(shí)了該UDP響應(yīng)報(bào)文幀數(shù);第25字節(jié)的值總是00,預(yù)留備用。
表1 UDP請(qǐng)求報(bào)文數(shù)據(jù)區(qū)格式與值
表3 UDP響應(yīng)報(bào)文數(shù)據(jù)區(qū)前25個(gè)字節(jié)格式
PLC和上位機(jī)所采用的操作系統(tǒng)都能為以太網(wǎng)提供良好的支持。當(dāng)上位機(jī)啟動(dòng)應(yīng)用程序時(shí),調(diào)用UDP發(fā)送進(jìn)程,把相關(guān)數(shù)據(jù)封裝成一個(gè)UDP報(bào)文,并進(jìn)一步組裝成一個(gè)IP報(bào)文。當(dāng)PLC接收到上位機(jī)發(fā)送的IP報(bào)文,它會(huì)將報(bào)文中的IP首部取出,判斷IP地址是否正確,若正確則判斷端口號(hào)以及UDP首部的校驗(yàn)和。如果上述條件都滿足,說明此報(bào)文是有效的,接下來的工作就是將有效信息從報(bào)文中提取出來,按照規(guī)約進(jìn)行解析即可。然后PLC會(huì)給上位機(jī)發(fā)送UDP響應(yīng)報(bào)文,上位機(jī)接收后,對(duì)報(bào)文進(jìn)行判斷和解析[5]。圖5為UDP發(fā)送-接收流程圖。
圖5 UDP發(fā)送-接收流程圖
UDP的配置主要包括硬件組態(tài)和端口設(shè)置,如圖6和圖7。圖6是在以太網(wǎng)接口上添加UDP協(xié)議。圖7是UDP參數(shù)設(shè)置以及端口的設(shè)置,除了端口設(shè)置之外,其他參數(shù)可以使用缺省參數(shù)。
核心代碼段包括UDP接收指令和發(fā)送指令、以及UDP請(qǐng)求報(bào)文解析語句。
圖6 UDP硬件組態(tài)一
圖7 UDP硬件組態(tài)二
圖8 UDP報(bào)文截圖
圖9 UDP請(qǐng)求報(bào)文
在風(fēng)電機(jī)組分布式計(jì)算機(jī)網(wǎng)絡(luò)通信系統(tǒng)中,上位機(jī)通過UDP協(xié)議從機(jī)組得到相關(guān)數(shù)據(jù)。圖8是上位機(jī)與風(fēng)電場某一臺(tái)機(jī)組之間的UDP報(bào)文截圖。PLC的IP是192.168.1.130,上位機(jī)的IP是192.168.1.138。
從圖8中提取一個(gè)UDP請(qǐng)求報(bào)文,如圖9所示。其源端口號(hào)為1026,目的端口號(hào)為32768,UDP報(bào)文長度為37個(gè)字節(jié),其中UDP數(shù)據(jù)區(qū)為29個(gè)字節(jié)(圖9灰色部分)。FCH和FCL的值分別為0x00和0x02,即請(qǐng)求報(bào)文的類型為0x0002;CIH和CIL的值分別是0x00和0x01,即請(qǐng)求報(bào)文類型的索引為0x0001。表明上位機(jī)向PLC請(qǐng)求全局統(tǒng)計(jì)量的數(shù)據(jù)。
圖9對(duì)應(yīng)的UDP響應(yīng)報(bào)文如圖10所示,其源端口號(hào)為32768,目的端口號(hào)為32768,UDP報(bào)文長度為257個(gè)字節(jié),其中UDP數(shù)據(jù)區(qū)為249個(gè)字節(jié)(圖10灰色部分)。上位機(jī)根據(jù)規(guī)約解析數(shù)據(jù),便可得到全局統(tǒng)計(jì)量,包括總發(fā)電量、總耗電量、并網(wǎng)次數(shù)、變漿次數(shù)、偏航次數(shù)、故障次數(shù)、制動(dòng)次數(shù)等。
圖10 UDP響應(yīng)報(bào)文
UDP協(xié)議由于其簡潔、高效性而被廣泛應(yīng)用。本文提出了一種基于以太網(wǎng)的風(fēng)電機(jī)組通信系統(tǒng)方案。詳細(xì)闡述了UDP協(xié)議的實(shí)現(xiàn)過程,并分析了截取的實(shí)際UDP報(bào)文。從風(fēng)電場實(shí)際運(yùn)行情況看,該方案高效可靠,充分發(fā)揮了以太網(wǎng)的優(yōu)點(diǎn),能夠滿足要求。
[1] 中國可再生能源學(xué)會(huì)風(fēng)能專業(yè)委員會(huì).2012年中國風(fēng)電裝機(jī)容量統(tǒng)計(jì)[R].2013(3):44-55.
[2] W.Richard Stevens.TCP/IP Illustrated Volume 1:The Protocol[M].北京:機(jī)械工業(yè)出版社,2000.
[3]李淑君,陳新,季寶杰.UDP協(xié)議在現(xiàn)場實(shí)時(shí)通信中的應(yīng)[J].總線與網(wǎng)絡(luò),2002(4):35-38.
[4] 竇曉波,吳在鈞,胡敏強(qiáng),鄭健勇.UDP協(xié)議在變電站自動(dòng)化通信系統(tǒng)中的實(shí)現(xiàn)[J].電力自動(dòng)化設(shè)備,2003(12):39-42.
[5] 王海軍,劉彩霞,程?hào)|年.一種基于UDP的可靠傳輸協(xié)議分析與研究[J].計(jì)算機(jī)應(yīng)用研究, 2005,(11):181-183.