章 奇, 安博文, 陳元林
(上海海事大學(xué) 信息工程學(xué)院, 上海 201306)
海底電纜綜合在線監(jiān)測系統(tǒng)主要包括海纜溫度監(jiān)測系統(tǒng)、海纜應(yīng)變監(jiān)測系統(tǒng)、海纜振動(擾動)監(jiān)測系統(tǒng)、船舶自動識別(AIS)系統(tǒng)以及海纜載流量分析系統(tǒng)等, 遠(yuǎn)端數(shù)據(jù)的獲取和發(fā)布是該系統(tǒng)中尤為重要的一環(huán). IEC60870-5-104規(guī)約是IEC(國際電工委員會)制定的一套通用的數(shù)據(jù)傳輸規(guī)則, 文獻(xiàn)[1]定義了該規(guī)約的數(shù)據(jù)格式和結(jié)構(gòu)模型. 文獻(xiàn)[2]介紹了基于該規(guī)約的基本應(yīng)用功能和通信過程. 文獻(xiàn)[3,4]介紹了用于文件傳輸?shù)腁SDU定義和結(jié)構(gòu).
基于IEC60870-5-104規(guī)約的數(shù)據(jù)通信因具有開放、安全、實時等諸多良好特性長久以來一直是人們研究的熱點, 廣泛應(yīng)用于各種電力系統(tǒng)中. 文獻(xiàn)[5]分析了規(guī)約在電力系統(tǒng)中的實現(xiàn)方法. 文獻(xiàn)[6]介紹了規(guī)約在SCADA(數(shù)據(jù)采集與監(jiān)視監(jiān)控)系統(tǒng)中的應(yīng)用, 給出了調(diào)度自動化軟件的設(shè)計思路, 并針對基于TCP/IP的網(wǎng)絡(luò)編程作了相應(yīng)的闡述. 文獻(xiàn)[7]設(shè)計了一種基于IEC60870-5-104規(guī)約的硬件通信模塊平臺, 實現(xiàn)了規(guī)約在工業(yè)通信領(lǐng)域的應(yīng)用. 文獻(xiàn)[8–10]分別介紹了規(guī)約在光伏電站、變電站輔助系統(tǒng)以及水電廠中的應(yīng)用.
目前, 基于IEC60870-5-104規(guī)約的通信技術(shù)的研究漸漸趨于成熟, 然而隨著工業(yè)標(biāo)準(zhǔn)規(guī)范的提高, 不同場合中的實際需求給系統(tǒng)軟件的開發(fā)和升級不斷地提出了難題. 綜上研究發(fā)現(xiàn), 在系統(tǒng)軟件的設(shè)計過程中對于系統(tǒng)動態(tài)配置技術(shù)和海量數(shù)據(jù)傳輸技術(shù)仍然缺乏深入的探討. 考慮到在實際應(yīng)用中控制站和被控站會根據(jù)不同情況進(jìn)行擴(kuò)展和變動, 系統(tǒng)動態(tài)配置技術(shù)的研究能夠很好地解決這個問題, 增加了系統(tǒng)的兼容性和開放性. 此外, 文件傳輸技術(shù)能夠解決大部分遠(yuǎn)動系統(tǒng)中存在的海量數(shù)據(jù)信息的發(fā)布問題, 適應(yīng)了多種場合中數(shù)據(jù)信息繁雜的情況.
圖1顯示了海底電纜綜合在線監(jiān)測系統(tǒng)的一般結(jié)構(gòu), 被控站(服務(wù)器端)的監(jiān)測設(shè)備將采集到的數(shù)據(jù)存儲在數(shù)據(jù)庫服務(wù)器中, 等待控制站(客戶端)的數(shù)據(jù)召喚.
圖1 海底電纜綜合在線監(jiān)測系統(tǒng)
應(yīng)用于該系統(tǒng)的數(shù)據(jù)按其類型和數(shù)量的大小大致可以根據(jù)表1所示進(jìn)行劃分. 其中單一類型、數(shù)量小的數(shù)據(jù)可以通過IEC60870-5-104規(guī)約中的類型標(biāo)識TypeID=9(歸一化遙測值), 11(標(biāo)度化遙測值), 13(短浮點遙測值)等APDU數(shù)據(jù)報文進(jìn)行傳輸. 報警和AIS這類數(shù)據(jù)類型比較復(fù)雜, 包含整型、字符型、浮點型等多種數(shù)據(jù)類型. 針對這種類型復(fù)雜的數(shù)據(jù)信息,本文考慮將不同類型的數(shù)據(jù)信息組合成字符串, 再根據(jù)配置好的信息對象地址用文件進(jìn)行傳輸.
表1 需要傳輸?shù)臄?shù)據(jù)類型
對于溫度、應(yīng)變、擾動這些單一類型但是數(shù)量比較大的數(shù)據(jù), 利用IEC60870-5-104規(guī)約定義的APDU進(jìn)行數(shù)據(jù)傳輸有一定的局限性, 據(jù)此本文也考慮采用文件形式進(jìn)行傳輸.
IEC60870-5-104規(guī)約采用標(biāo)準(zhǔn)傳輸協(xié)議子集的IEC60870-5-101網(wǎng)絡(luò)訪問, 用于網(wǎng)絡(luò)通信中的數(shù)據(jù)傳輸. 它規(guī)定將IEC60870-5-104的應(yīng)用層與TCP/IP提供的傳輸功能相結(jié)合, 采用平衡方式通信, 即通信雙方都可以發(fā)起信息傳輸, 一旦鏈路建立成功, 變化信息除了響應(yīng)召喚應(yīng)答還可以主動發(fā)送而無需等待查詢. 同時規(guī)約詳細(xì)定義了應(yīng)用規(guī)約控制信息(APCI)以及三種格式報文(I、S、U)的用途和使用方法, 并且規(guī)定了TCP連接的端口號等重要參數(shù).
圖2所示是IEC60870-5-104規(guī)約對于APDU的定義, 它包括APCI和ASDU兩個部分, APCI(應(yīng)用規(guī)約控制信息)定義了數(shù)據(jù)流的起點、APDU的長度和控制域. 控制域定義了保護(hù)報文不致丟失和重復(fù)傳送的控制信息、報文傳輸?shù)膯?停止,以及傳輸連接的監(jiān)視等信息. IEC60870-5-104規(guī)約在延續(xù)了IEC60870-5-101規(guī)約中ASDU(應(yīng)用服務(wù)數(shù)據(jù)單元)內(nèi)容的基礎(chǔ)上, 擴(kuò)展了相應(yīng)的部分, 定義了數(shù)據(jù)傳輸過程中信息的類型、傳送原因、公共地址和信息對象地址等信息.
IEC60870-5-104規(guī)約定義了兩個方向上用于傳輸不同報文的信息類型標(biāo)識, 分別是監(jiān)視方向(被控站到控制站)的過程信息和系統(tǒng)信息, 以及控制方向(控制站到被控站)的過程信息和系統(tǒng)信息. 基于IEC60870-5-104規(guī)約的主要通信過程有:TCP的連接建立和站初始化、首次握手啟動連接、總召喚、對時、累計量(電度)總召喚以及遙控/遙調(diào)過程.
圖2 遠(yuǎn)動配套標(biāo)準(zhǔn)的APDU定義
圖3所示為基于IEC60870-5-104規(guī)約的數(shù)據(jù)發(fā)布系統(tǒng)的層次結(jié)構(gòu), 主要分為伺服應(yīng)用、協(xié)議處理和數(shù)據(jù)媒介三個層次.
圖3 基于IEC60870-5-104規(guī)約的數(shù)據(jù)發(fā)布系統(tǒng)的層次結(jié)構(gòu)
(1) 伺服應(yīng)用層:作為被控站的最高層, 在啟動連接后伺服應(yīng)用層一直處于等待監(jiān)聽的狀態(tài), 當(dāng)接收到來自控制站數(shù)據(jù)請求的報文后開始向控制站發(fā)送由數(shù)據(jù)媒介層提取出來的數(shù)據(jù).
(2) 協(xié)議處理層:系統(tǒng)的中間層, 主要完成基于IEC60870-5-104規(guī)約的底層動態(tài)配置和數(shù)據(jù)處理功能,針對伺服應(yīng)用層發(fā)來的數(shù)據(jù)請求報文進(jìn)行解析, 同時進(jìn)行相關(guān)的數(shù)據(jù)庫操作.
(3) 數(shù)據(jù)媒介層:該層存儲監(jiān)測設(shè)備采集的數(shù)據(jù)信息. 每個監(jiān)測平臺都有相應(yīng)的數(shù)據(jù)庫, 監(jiān)測系統(tǒng)將采集到的數(shù)據(jù)信息不斷地刷新填入到每個數(shù)據(jù)庫每張表相應(yīng)的字段中. 當(dāng)收到召喚開始傳輸數(shù)據(jù)時, 被控站將數(shù)據(jù)庫中的數(shù)據(jù)提取出來填入到APDU中并賦予其相應(yīng)的地址進(jìn)行傳輸, 考慮到存儲容量和實時性的問題, 每個數(shù)據(jù)庫也會作定期地刷新刪除.
啟動連接后系統(tǒng)開始讀取配置, 此時被控站處于監(jiān)聽并等待召喚狀態(tài), 若在規(guī)定的時間范圍內(nèi)沒有收到控制站發(fā)來的召喚報文命令則判定為等待超時, 須重新連接. 當(dāng)被控站收到了控制站發(fā)來的召喚報文命令后便開始對其進(jìn)行解析并組織數(shù)據(jù)類型及地址, 從而從數(shù)據(jù)庫中提取相應(yīng)的數(shù)據(jù)并按一定頻率發(fā)送至控制站, 待所有數(shù)據(jù)發(fā)送完之后被控站將發(fā)送結(jié)束召喚的報文命令終止數(shù)據(jù)傳輸.
圖4 系統(tǒng)運行流程
圖5所示為系統(tǒng)的主要線程設(shè)計, 數(shù)據(jù)庫連接線程主要實現(xiàn)數(shù)據(jù)庫的連接及相關(guān)操作, 數(shù)據(jù)發(fā)送和接收顯示線程主要實現(xiàn)控制站和被控站的數(shù)據(jù)交互. 通信雙方在啟動連接后開始讀取配置, 隨后進(jìn)入等待監(jiān)聽狀態(tài), 當(dāng)通信一方接收到數(shù)據(jù)庫中讀取的數(shù)據(jù)后開始對其進(jìn)行打包整理, 最后發(fā)送至另一方解析并顯示.
控制站和被控站的動態(tài)配置是遠(yuǎn)端發(fā)布系統(tǒng)中非常重要的環(huán)節(jié), 它解決了控制站和被控站對于每個物理量、數(shù)據(jù)類型及其地址分配的約束問題, 使得通信雙方的數(shù)據(jù)傳輸有章可循.
(1) 單一類型數(shù)據(jù)的動態(tài)配置
類型單一且數(shù)量比較小的數(shù)據(jù)信息對象可以通過IEC60870-5-104規(guī)約定義的APDU進(jìn)行數(shù)據(jù)傳輸, 為此需要設(shè)計信息對象、地址以及在數(shù)據(jù)庫中的存儲位置之間的映射關(guān)系. 設(shè)計的映射方案如表2所示, 信息量的個數(shù)取決于信息數(shù)量的大小, 在數(shù)據(jù)庫SeaCableMonitor(存儲位置:D:MySQLSeaCableMonitor)中建有三張表Current、ProtectiveLayer和State, 分別用于存儲電能、護(hù)層監(jiān)測和設(shè)備狀態(tài)三種數(shù)據(jù)信息, 每張表分別包含若干記錄(行)和字段(列), 記錄顯示每條通道的電纜數(shù)據(jù)信息, 字段存儲某一時刻下的電纜編號、位置、時間以及信息量等數(shù)據(jù)信息, 監(jiān)測設(shè)備將某一時刻采集到的數(shù)據(jù)存于每張表相應(yīng)的字段下. 當(dāng)被控站收到數(shù)據(jù)請求時, 從相應(yīng)表的字段中取出并賦予信息對象地址, 從而打包發(fā)送至控制站.
圖5 系統(tǒng)主要線程設(shè)計
表2 信息對象地址分配
(2) 文件傳輸?shù)膭討B(tài)配置
文件傳輸?shù)膭討B(tài)配置需要解決的問題是生成數(shù)據(jù)文件的存儲位置以及建立文件的節(jié)名和信息對象之間的映射關(guān)系, 文件存儲在D:SeaCableMonitorFiles目錄下, 表3顯示了文件節(jié)名信息對象的映射關(guān)系.
表3 文件名與信息對象映射關(guān)系
綜合考慮可擴(kuò)展、互操作、可視化等多種特性,本文選取XML(擴(kuò)展標(biāo)記語言)實現(xiàn)以上動態(tài)配置.XML是一種簡單的數(shù)據(jù)存儲語言, 當(dāng)控制站或者被控站需要擴(kuò)展或者改變時, 只要修改配置文件而不需要處理繁雜的源代碼. 下面的代碼顯示了信息對象及其地址的配置過程:
IEC60870-5-104規(guī)約中定義的信息體地址的范圍是 1~65 534, 即最大能容納 65 534個數(shù)據(jù), 而ASDU的最大長度是249(APDU最大值=255減去啟動和長度八位位組), 這樣信息體的字節(jié)數(shù)就很可能會超過ASDU的最大長度, 顯然無法進(jìn)行海量數(shù)據(jù)傳輸.此外, 報警和AIS這類數(shù)據(jù)信息包含了整型、字符型、浮點型等多種數(shù)據(jù)類型, 導(dǎo)致了數(shù)據(jù)傳輸過程中信息體的字節(jié)數(shù)不固定, 無法進(jìn)行地址分配. 鑒于以上兩種情況, 本文考慮采用文件傳輸?shù)姆桨?
文件傳輸用于遠(yuǎn)動系統(tǒng)中信息體的字節(jié)數(shù)超過ASDU規(guī)定的最大長度的情況, 以分段的形式將數(shù)據(jù)信息傳送到目的地. 兩個方向上傳輸?shù)奈募Y(jié)構(gòu)相同,通常一個文件包含若干個節(jié), 一個節(jié)包含若干個段, 兩個方向按照段的順序進(jìn)行傳輸. 在遠(yuǎn)動系統(tǒng)中, 文件可以雙向傳輸, 表4所示為IEC60870-5-104規(guī)約定義的用于文件傳輸?shù)念愋蜆?biāo)識.
表4 文件傳輸?shù)念愋蜆?biāo)識
監(jiān)視方向(被控站到控制站)的文件傳輸主要用于通知控制站已發(fā)生事件并已登錄大量數(shù)據(jù). 在開始進(jìn)行文件傳輸之前, 被控站須向控制站發(fā)送一個文件目錄DIRECTORY PDU F_DR, 將文件數(shù)量、登錄時間和事件類型等信息以PDU的形式告知控制站. 收到目錄PDU后, 控制站發(fā)送一個SELECT_FILE PDU F_SC通知被控站開始選擇文件. 此時被控站返回FILE_READY PDU F_FR表示文件已準(zhǔn)備好, 可以進(jìn)行文件召喚. 接下來被控站根據(jù)文件結(jié)構(gòu)將文件逐節(jié)逐段地上傳至控制站. 待所有文件傳輸結(jié)束后, 被控站將已成功傳輸文件的數(shù)據(jù)記錄刪除, 為新文件騰出空間. 控制方向(控制站到被控站)的文件傳輸主要用于下載參數(shù)表或程序, 控制站安排傳輸數(shù)據(jù)文件的類型、數(shù)量和規(guī)模, 不需要傳輸目錄. 表5和表6所示為IEC60870-5-104規(guī)約定義的文件傳輸?shù)哪夸汚SDU(TypeID=F_DR_TA_1)和段ASDU(TypeID=F_SG_NA_1)的定義.
表5 文件傳輸?shù)哪夸汚SDU定義(類型標(biāo)識:F_DR_TA_1)
表6 文件傳輸?shù)亩蜛SDU定義(類型標(biāo)識:F_SG_NA_1)
本文以某海上風(fēng)電場在線監(jiān)測系統(tǒng)工程項目為應(yīng)用實例, 傳輸海纜某一時刻采集到的電能數(shù)據(jù)以及溫度數(shù)據(jù).
以單個電能數(shù)據(jù)的傳輸為例, 設(shè)置配置參數(shù)信息如表7所示.
表7 單個電能數(shù)據(jù)傳輸配置信息
系統(tǒng)啟動讀取配置完成之后等待數(shù)據(jù)召喚, 利用Wireshark軟件對通信過程進(jìn)行網(wǎng)絡(luò)抓包分析得到控制站收到的報文如表8所示.
從表8中可以看到傳輸?shù)臍w一化遙測值的編碼是10a1(16進(jìn)制), 如果要得到具體的傳輸值則需要通過給定的參數(shù)進(jìn)行進(jìn)一步計算, 例如假設(shè)滿碼值為5000 A,則傳輸值為:
得到的電能數(shù)據(jù)為649.6 A.
以系統(tǒng)某一次溫度數(shù)據(jù)文件的傳輸為例, 表9為其參數(shù)配置信息, 從中可以知道, 文件的長度為750 KB,節(jié)的長度為7680 B, 段的長度為120 B, 則節(jié)和段的數(shù)量分別為:
表8 控制站接收類型標(biāo)識TypeID=9的歸一化遙測報文
表9 溫度數(shù)據(jù)文件傳輸配置信息
同樣用Wireshark軟件對該溫度數(shù)據(jù)文件傳輸過程進(jìn)行網(wǎng)絡(luò)抓包分析, 可以得到報文如下(僅顯示傳輸?shù)牡谝还?jié)第一段的報文):
表10顯示了文件傳輸中控制站接收到類型標(biāo)識TypeID=7 d的段報文, 根據(jù)配置信息可以解析出控制站收到了文件名為1, 節(jié)名為1(溫度)以及段內(nèi)容為1的文件數(shù)據(jù)信息.
本文深入分析了IEC60870-5-104規(guī)約的結(jié)構(gòu)模型和通信過程, 設(shè)計并實現(xiàn)了基于該規(guī)約的海底電纜綜合在線監(jiān)測系統(tǒng)數(shù)據(jù)遠(yuǎn)端發(fā)布系統(tǒng), 針對其中存在的系統(tǒng)動態(tài)配置和海量數(shù)據(jù)傳輸關(guān)鍵技術(shù)作了分析與研究, 最后通過實驗用例驗證了該系統(tǒng)的可行性. 本文的研究結(jié)果適用于更寬泛的電力系統(tǒng)場合以及更豐富的數(shù)據(jù)類型傳輸, 具有可觀的應(yīng)用價值.
表10 文件傳輸中控制站接收類型標(biāo)識TypeID=7d的段報文