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

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

表1 維護軟件中間件分層Tab.1 Maintenance software middleware layering
②軟件模型。
軟件模型主要按照面向對象的設計思路進行設計。根據邏輯分層,在應用協議層設計了CMachine、CApplicationLayerProtocol 和MachineInfo_t,在數據收發層設計了CCommunicate,在網絡協議適配層設計了CNetService、CDataLinkLayerNetService、CUDPLayerNetService、CTCPLayerNetService 和CRc。
軟件模型如圖2 所示。

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

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

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

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

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