馬小軍,馬建新,楊 利
(北京廣利核系統(tǒng)工程有限公司,北京 100094)
核安全級數(shù)字化儀控系統(tǒng)是核電廠的“中樞神經(jīng)”系統(tǒng),對確保核電廠的安全、經(jīng)濟運行起著至關(guān)重要的作用,是構(gòu)成大型核電站的關(guān)鍵裝備之一。
核安全級數(shù)字化儀控系統(tǒng)主要包括工程師站、主控站、網(wǎng)關(guān)站、安全顯示站。在該系統(tǒng)中,工程師站稱為上位機,主控站、網(wǎng)關(guān)站、安全顯示站稱為下位機。
核電站運行的設(shè)備組態(tài)、算法組態(tài)、圖形組態(tài),經(jīng)過工程師站組態(tài),由維護軟件下裝到下位機,并且通過維護軟件對下位機進行回讀、監(jiān)視、強制、釋放強制、參數(shù)整定、校時、定期試驗等維護操作[1]。維護軟件中間件是維護軟件的核心模塊,對維護軟件的數(shù)據(jù)傳輸和維護操作起到關(guān)鍵性作用。
本文通過對維護系統(tǒng)的分析,設(shè)計了維護軟件中間件,主要包括下裝、回讀、監(jiān)視、強制、釋放強制、參數(shù)整定、校時、定期試驗等接口。該設(shè)計滿足了維護軟件對不同上位機軟件和不同網(wǎng)絡(luò)傳輸協(xié)議下位機的適應(yīng)性要求,增強了數(shù)據(jù)傳輸?shù)目煽啃?、安全性。該中間件設(shè)計靈活、方便調(diào)用和擴展,并已成功應(yīng)用到和睦系統(tǒng)當中。
核安全級儀控系統(tǒng)主要包括工程師站、主控站、網(wǎng)關(guān)站、安全顯示站。
維護軟件運行在工程師站中,主要包括下裝軟件、監(jiān)視軟件、參數(shù)整定軟件和定期試驗軟件。維護軟件中間件供維護軟件調(diào)用,并與下位機通信,完成下裝、回讀、監(jiān)視、強制、釋放強制、參數(shù)整定、校時、定期試驗等維護操作。
核安全級儀控系統(tǒng)中的設(shè)備種類很多:主控站是基于鏈路層協(xié)議的設(shè)備;安全顯示站和網(wǎng)關(guān)站既有基于傳輸層協(xié)議的設(shè)備,又有基于鏈路層協(xié)議的設(shè)備[2-3]。其中:有的設(shè)備的通信格式是大端,有的設(shè)備的通信格式是小端。而維護軟件要與不同的下位機進行數(shù)據(jù)傳輸。
核安全級儀控系統(tǒng)對數(shù)據(jù)傳輸?shù)目煽啃砸髽O高,必須保證每條指令和數(shù)據(jù)在規(guī)定的時間內(nèi)傳輸完成。如果在傳輸過程中出現(xiàn)異常情況,必須有處理機制[4]。因此,系統(tǒng)必須對數(shù)據(jù)進行完整性校驗,在出現(xiàn)丟包時要進行重傳,并在超時后作超時處理[5]。
核安全級儀控系統(tǒng)必須安全,傳輸?shù)臄?shù)據(jù)必須保密,并且不能受到黑客攻擊和破壞[6]。為保證傳輸?shù)臄?shù)據(jù)安全和抵御黑客攻擊,維護軟件必須對傳輸?shù)臄?shù)據(jù)進行加密和解密,并防止黑客進行攻擊和破壞。
根據(jù)維護軟件的功能要求,并結(jié)合核安全級儀控系統(tǒng)的復雜性、可靠性和安全性,設(shè)計了維護軟件中間件。該中間件抽象出應(yīng)用協(xié)議層、數(shù)據(jù)收發(fā)層和網(wǎng)絡(luò)協(xié)議適配層。通過應(yīng)用協(xié)議層,為上層維護軟件提供統(tǒng)一的調(diào)用接口。上層軟件只負責調(diào)用下載、監(jiān)視、參數(shù)整定和定期試驗接口,不用關(guān)心具體實現(xiàn)細節(jié),屏蔽了不同設(shè)備數(shù)據(jù)格式的復雜性,便于上層維護軟件的維護。通過數(shù)據(jù)收發(fā)層和網(wǎng)絡(luò)協(xié)議適配層的設(shè)計,可以適用不同網(wǎng)絡(luò)傳輸協(xié)議的安全級設(shè)備。比如:主控站采用數(shù)據(jù)鏈路層協(xié)議通信;安全顯示站采用用戶數(shù)據(jù)報協(xié)議(user datagram protocol,UDP)通信,還可以擴充傳輸控制協(xié)議(transmission control protocol,TCP)等其他協(xié)議,便于維護軟件的擴展。此外,該中間件通過丟包重傳、超時重傳、心跳機制增強了維護網(wǎng)絡(luò)通信的可靠性,通過數(shù)據(jù)加密機制保證了數(shù)據(jù)傳輸?shù)陌踩浴?/p>
①軟件邏輯分層。
維護軟件中間件適配不同的網(wǎng)絡(luò)協(xié)議,并為工程師站維護軟件提供統(tǒng)一的功能調(diào)用。
軟件邏輯分層具體分為三層,分別是應(yīng)用協(xié)議層、數(shù)據(jù)收發(fā)層和網(wǎng)絡(luò)協(xié)議適配層。邏輯分層如圖1所示。

圖1 邏輯分層示意圖Fig.1 Schematic diagram of logical layering
維護軟件中間件分層如表1 所示。

表1 維護軟件中間件分層Tab.1 Maintenance software middleware layering
②軟件模型。
軟件模型主要按照面向?qū)ο蟮脑O(shè)計思路進行設(shè)計。根據(jù)邏輯分層,在應(yīng)用協(xié)議層設(shè)計了CMachine、CApplicationLayerProtocol 和MachineInfo_t,在數(shù)據(jù)收發(fā)層設(shè)計了CCommunicate,在網(wǎng)絡(luò)協(xié)議適配層設(shè)計了CNetService、CDataLinkLayerNetService、CUDPLayerNetService、CTCPLayerNetService 和CRc。
軟件模型如圖2 所示。

圖2 軟件模型示意圖Fig.2 Schematic diagram of software model
靜態(tài)類軟件模型的具體描述如表2 所示。

表2 靜態(tài)類軟件模型具體描述Tab.2 Specific description of static class software model
①協(xié)議數(shù)據(jù)中主要包含目標MAC、源MAC、標識、預留位、應(yīng)用數(shù)據(jù)、校驗碼等。
數(shù)據(jù)幀格式如表3 所示。

表3 數(shù)據(jù)幀格式Tab.3 Data frame format
目標MAC:表示數(shù)據(jù)包接收方的物理地址。
標識:采用固定值“XX”填充,作為特殊標識,表示維護協(xié)議數(shù)據(jù)。
預留位:采用固定值“0”填充,以便將來擴充協(xié)議。
應(yīng)用數(shù)據(jù):表示應(yīng)用數(shù)據(jù)信息,具體見下文描述。
校驗碼:循環(huán)冗余校驗(cyclic redumdancy check,CRC)碼的校驗范圍為:從協(xié)議的第一個字節(jié)到校驗碼的前一個字節(jié)。
②應(yīng)用數(shù)據(jù)主要包括功能碼、授權(quán)碼、總幀數(shù)、幀序號、應(yīng)用數(shù)據(jù)總長度、本幀應(yīng)用數(shù)據(jù)長度、預留位。
應(yīng)用數(shù)據(jù)格式如表4 所示。

表4 應(yīng)用數(shù)據(jù)格式Tab.4 Application data format
功能碼:表示該幀功能含義,如下裝或監(jiān)視等業(yè)務(wù)流程。
授權(quán)碼:起始數(shù)據(jù)由下位機隨機生成。下位機每次發(fā)送命令請求回復幀時生成新的授權(quán)碼。工程師站發(fā)送的數(shù)據(jù)幀中填寫的授權(quán)碼為下位機生成的授權(quán)碼。授權(quán)碼可有效抵御重放攻擊,校驗接收到的數(shù)據(jù)是否有效。
Milk-run系統(tǒng)的運行模式是配送人員使用設(shè)備通過固定的路線在固定的時間段內(nèi)進行小批量零件配送。Milk-run系統(tǒng)的路線規(guī)劃在設(shè)計時必須重點考慮,合理的路線規(guī)劃能有效提高其效率,保證系統(tǒng)的可實施性。一般Milk-run供貨路線模式可以分為以下幾種模式:兩站式、中心倉庫式、多重??奎c式、差異化停靠點式。車間Milk-run供貨模式多采用1∶n的中心倉庫式。
總幀數(shù):表示當前任務(wù)的總幀數(shù)。有的任務(wù)需要由多幀發(fā)送,規(guī)定總幀數(shù)可識別是否接收完整。
幀序號:表示本幀為當前任務(wù)的第幾幀。
應(yīng)用數(shù)據(jù)總長度:表示當前任務(wù)的應(yīng)用數(shù)據(jù)總長。應(yīng)用數(shù)據(jù)總長的計算方法為計算每幀應(yīng)用數(shù)據(jù)的總和。
本幀應(yīng)用數(shù)據(jù)長度:表示“應(yīng)用數(shù)據(jù)內(nèi)容”有效數(shù)據(jù)所占的字節(jié)數(shù),從應(yīng)用數(shù)據(jù)內(nèi)容開始計算。
預留位:后續(xù)擴展可使用該字段,未使用時填寫默認值“0”。
維護軟件和下位機的交互主要包括建立連接、獲取連接狀態(tài)、發(fā)送具體業(yè)務(wù)消息、獲取具體業(yè)務(wù)消息的返回信息、斷開連接。
交互流程圖如圖3 所示。

圖3 交互流程圖Fig.3 Interaction process flowchart
上位機(工程師站)與下位機具體通信過程如下。
①上位機給下位機發(fā)送連接請求。
②下位機返回連接狀態(tài)。
③如果下位機返回連接成功,上位機發(fā)送業(yè)務(wù)請求(業(yè)務(wù)流程包括下裝、回讀、監(jiān)視、強制、釋放強制、參數(shù)整定、校時等);如果下位機返回連接失敗,上位機則提示連接錯誤。
④下位機返回業(yè)務(wù)消息。
⑤業(yè)務(wù)處理完成后,上位機發(fā)送命令,斷開連接。
維護軟件中間件提供大端數(shù)據(jù)和小端數(shù)據(jù)的處理模塊,通過設(shè)置可以適應(yīng)大、小端數(shù)據(jù)的傳輸。
如果下位機是基于鏈路層協(xié)議,則維護軟件中間件通過鏈路層通信庫與下位機進行通信。其允許應(yīng)用程序不用網(wǎng)絡(luò)協(xié)議棧來捕獲與發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包。
如果下位機是基于傳輸層協(xié)議,則維護軟件中間件通過TCP/IP 協(xié)議棧與下位機進行通信。維護軟件中間件可以支持UDP 和TCP 協(xié)議。
①數(shù)據(jù)完整性。
為了保證數(shù)據(jù)在傳輸過程中的完整性,采用了CRC 方式。在數(shù)據(jù)格式中加入了CRC 字段,在收到協(xié)議數(shù)據(jù)包后,首先進行CRC 驗證,確保數(shù)據(jù)的完整性。
②丟包重傳機制。
在網(wǎng)絡(luò)環(huán)境異常時,針對不可靠的傳輸協(xié)議,設(shè)計了丟包重傳機制。當出現(xiàn)丟包情況時,啟用丟包重傳流程對丟包數(shù)據(jù)進行處理。丟包重傳采用一問一答方式實現(xiàn)丟包重傳。所有包都重傳成功后,回到正常通信流程中,通知對方接收完成。如果仍然不能收到重傳包,接收方就繼續(xù)要求重傳當前包。直到累計n次丟包后,發(fā)錯誤通知報文,標記通信異常,并在通知報文的異常碼中標記重傳失敗。
③超時重傳。
發(fā)送方需要對當前發(fā)出的數(shù)據(jù)包進行緩存。當檢測到超時發(fā)生時,需要對當前數(shù)據(jù)包執(zhí)行重發(fā)操作。累計發(fā)送n次均超時后,停止發(fā)送,并給出錯誤提示。
④心跳檢測。
發(fā)送心跳數(shù)據(jù)的目的是通知接收方,發(fā)送方當前處于在線狀態(tài)。心跳檢測采用單獨的線程進行通信。心跳檢測不能影響正常的業(yè)務(wù)流程。
數(shù)據(jù)發(fā)送前要進行加密,收到后要進行解密。加密、解密采用一種對稱加密算法。該算法使用的密鑰為私鑰,以字節(jié)流的方式依次對明文中的每個字節(jié)加密,解密的時候也是依次對密文中的每個字節(jié)進行解密。該算法的特點是算法簡單、運行速度快,且密鑰的長度是可變的。以如今的技術(shù),當密鑰長度為128 bit時,已經(jīng)無法用暴力法破解。
針對核安全級儀控系統(tǒng)維護網(wǎng)絡(luò),本文介紹了維護軟件中間件的軟件架構(gòu)、協(xié)議格式、交互流程,并從適應(yīng)性、數(shù)據(jù)傳輸可靠性、數(shù)據(jù)傳輸安全性方面對維護軟件中間件進行了設(shè)計。該設(shè)計在和睦系統(tǒng)中得到了充分的驗證,達到了核電站儀控系統(tǒng)對于數(shù)據(jù)傳輸?shù)目煽啃浴踩砸蟆?/p>