馬小軍,馬建新,楊 利
(北京廣利核系統(tǒng)工程有限公司,北京 100094)
核安全級(jí)數(shù)字化儀控系統(tǒng)是核電廠的“中樞神經(jīng)”系統(tǒng),對(duì)確保核電廠的安全、經(jīng)濟(jì)運(yùn)行起著至關(guān)重要的作用,是構(gòu)成大型核電站的關(guān)鍵裝備之一。
核安全級(jí)數(shù)字化儀控系統(tǒng)主要包括工程師站、主控站、網(wǎng)關(guān)站、安全顯示站。在該系統(tǒng)中,工程師站稱為上位機(jī),主控站、網(wǎng)關(guān)站、安全顯示站稱為下位機(jī)。
核電站運(yùn)行的設(shè)備組態(tài)、算法組態(tài)、圖形組態(tài),經(jīng)過(guò)工程師站組態(tài),由維護(hù)軟件下裝到下位機(jī),并且通過(guò)維護(hù)軟件對(duì)下位機(jī)進(jìn)行回讀、監(jiān)視、強(qiáng)制、釋放強(qiáng)制、參數(shù)整定、校時(shí)、定期試驗(yàn)等維護(hù)操作[1]。維護(hù)軟件中間件是維護(hù)軟件的核心模塊,對(duì)維護(hù)軟件的數(shù)據(jù)傳輸和維護(hù)操作起到關(guān)鍵性作用。
本文通過(guò)對(duì)維護(hù)系統(tǒng)的分析,設(shè)計(jì)了維護(hù)軟件中間件,主要包括下裝、回讀、監(jiān)視、強(qiáng)制、釋放強(qiáng)制、參數(shù)整定、校時(shí)、定期試驗(yàn)等接口。該設(shè)計(jì)滿足了維護(hù)軟件對(duì)不同上位機(jī)軟件和不同網(wǎng)絡(luò)傳輸協(xié)議下位機(jī)的適應(yīng)性要求,增強(qiáng)了數(shù)據(jù)傳輸?shù)目煽啃浴踩?。該中間件設(shè)計(jì)靈活、方便調(diào)用和擴(kuò)展,并已成功應(yīng)用到和睦系統(tǒng)當(dāng)中。
核安全級(jí)儀控系統(tǒng)主要包括工程師站、主控站、網(wǎng)關(guān)站、安全顯示站。
維護(hù)軟件運(yùn)行在工程師站中,主要包括下裝軟件、監(jiān)視軟件、參數(shù)整定軟件和定期試驗(yàn)軟件。維護(hù)軟件中間件供維護(hù)軟件調(diào)用,并與下位機(jī)通信,完成下裝、回讀、監(jiān)視、強(qiáng)制、釋放強(qiáng)制、參數(shù)整定、校時(shí)、定期試驗(yàn)等維護(hù)操作。
核安全級(jí)儀控系統(tǒng)中的設(shè)備種類很多:主控站是基于鏈路層協(xié)議的設(shè)備;安全顯示站和網(wǎng)關(guān)站既有基于傳輸層協(xié)議的設(shè)備,又有基于鏈路層協(xié)議的設(shè)備[2-3]。其中:有的設(shè)備的通信格式是大端,有的設(shè)備的通信格式是小端。而維護(hù)軟件要與不同的下位機(jī)進(jìn)行數(shù)據(jù)傳輸。
核安全級(jí)儀控系統(tǒng)對(duì)數(shù)據(jù)傳輸?shù)目煽啃砸髽O高,必須保證每條指令和數(shù)據(jù)在規(guī)定的時(shí)間內(nèi)傳輸完成。如果在傳輸過(guò)程中出現(xiàn)異常情況,必須有處理機(jī)制[4]。因此,系統(tǒng)必須對(duì)數(shù)據(jù)進(jìn)行完整性校驗(yàn),在出現(xiàn)丟包時(shí)要進(jìn)行重傳,并在超時(shí)后作超時(shí)處理[5]。
核安全級(jí)儀控系統(tǒng)必須安全,傳輸?shù)臄?shù)據(jù)必須保密,并且不能受到黑客攻擊和破壞[6]。為保證傳輸?shù)臄?shù)據(jù)安全和抵御黑客攻擊,維護(hù)軟件必須對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密和解密,并防止黑客進(jìn)行攻擊和破壞。
根據(jù)維護(hù)軟件的功能要求,并結(jié)合核安全級(jí)儀控系統(tǒng)的復(fù)雜性、可靠性和安全性,設(shè)計(jì)了維護(hù)軟件中間件。該中間件抽象出應(yīng)用協(xié)議層、數(shù)據(jù)收發(fā)層和網(wǎng)絡(luò)協(xié)議適配層。通過(guò)應(yīng)用協(xié)議層,為上層維護(hù)軟件提供統(tǒng)一的調(diào)用接口。上層軟件只負(fù)責(zé)調(diào)用下載、監(jiān)視、參數(shù)整定和定期試驗(yàn)接口,不用關(guān)心具體實(shí)現(xiàn)細(xì)節(jié),屏蔽了不同設(shè)備數(shù)據(jù)格式的復(fù)雜性,便于上層維護(hù)軟件的維護(hù)。通過(guò)數(shù)據(jù)收發(fā)層和網(wǎng)絡(luò)協(xié)議適配層的設(shè)計(jì),可以適用不同網(wǎng)絡(luò)傳輸協(xié)議的安全級(jí)設(shè)備。比如:主控站采用數(shù)據(jù)鏈路層協(xié)議通信;安全顯示站采用用戶數(shù)據(jù)報(bào)協(xié)議(user datagram protocol,UDP)通信,還可以擴(kuò)充傳輸控制協(xié)議(transmission control protocol,TCP)等其他協(xié)議,便于維護(hù)軟件的擴(kuò)展。此外,該中間件通過(guò)丟包重傳、超時(shí)重傳、心跳機(jī)制增強(qiáng)了維護(hù)網(wǎng)絡(luò)通信的可靠性,通過(guò)數(shù)據(jù)加密機(jī)制保證了數(shù)據(jù)傳輸?shù)陌踩浴?/p>
①軟件邏輯分層。
維護(hù)軟件中間件適配不同的網(wǎng)絡(luò)協(xié)議,并為工程師站維護(hù)軟件提供統(tǒng)一的功能調(diào)用。
軟件邏輯分層具體分為三層,分別是應(yīng)用協(xié)議層、數(shù)據(jù)收發(fā)層和網(wǎng)絡(luò)協(xié)議適配層。邏輯分層如圖1所示。
圖1 邏輯分層示意圖Fig.1 Schematic diagram of logical layering
維護(hù)軟件中間件分層如表1 所示。
表1 維護(hù)軟件中間件分層Tab.1 Maintenance software middleware layering
②軟件模型。
軟件模型主要按照面向?qū)ο蟮脑O(shè)計(jì)思路進(jìn)行設(shè)計(jì)。根據(jù)邏輯分層,在應(yīng)用協(xié)議層設(shè)計(jì)了CMachine、CApplicationLayerProtocol 和MachineInfo_t,在數(shù)據(jù)收發(fā)層設(shè)計(jì)了CCommunicate,在網(wǎng)絡(luò)協(xié)議適配層設(shè)計(jì)了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ù)中主要包含目標(biāo)MAC、源MAC、標(biāo)識(shí)、預(yù)留位、應(yīng)用數(shù)據(jù)、校驗(yàn)碼等。
數(shù)據(jù)幀格式如表3 所示。
表3 數(shù)據(jù)幀格式Tab.3 Data frame format
目標(biāo)MAC:表示數(shù)據(jù)包接收方的物理地址。
標(biāo)識(shí):采用固定值“XX”填充,作為特殊標(biāo)識(shí),表示維護(hù)協(xié)議數(shù)據(jù)。
預(yù)留位:采用固定值“0”填充,以便將來(lái)擴(kuò)充協(xié)議。
應(yīng)用數(shù)據(jù):表示應(yīng)用數(shù)據(jù)信息,具體見下文描述。
校驗(yàn)碼:循環(huán)冗余校驗(yàn)(cyclic redumdancy check,CRC)碼的校驗(yàn)范圍為:從協(xié)議的第一個(gè)字節(jié)到校驗(yàn)碼的前一個(gè)字節(jié)。
②應(yīng)用數(shù)據(jù)主要包括功能碼、授權(quán)碼、總幀數(shù)、幀序號(hào)、應(yīng)用數(shù)據(jù)總長(zhǎng)度、本幀應(yīng)用數(shù)據(jù)長(zhǎng)度、預(yù)留位。
應(yīng)用數(shù)據(jù)格式如表4 所示。
表4 應(yīng)用數(shù)據(jù)格式Tab.4 Application data format
功能碼:表示該幀功能含義,如下裝或監(jiān)視等業(yè)務(wù)流程。
授權(quán)碼:起始數(shù)據(jù)由下位機(jī)隨機(jī)生成。下位機(jī)每次發(fā)送命令請(qǐng)求回復(fù)幀時(shí)生成新的授權(quán)碼。工程師站發(fā)送的數(shù)據(jù)幀中填寫的授權(quán)碼為下位機(jī)生成的授權(quán)碼。授權(quán)碼可有效抵御重放攻擊,校驗(yàn)接收到的數(shù)據(jù)是否有效。
Milk-run系統(tǒng)的運(yùn)行模式是配送人員使用設(shè)備通過(guò)固定的路線在固定的時(shí)間段內(nèi)進(jìn)行小批量零件配送。Milk-run系統(tǒng)的路線規(guī)劃在設(shè)計(jì)時(shí)必須重點(diǎn)考慮,合理的路線規(guī)劃能有效提高其效率,保證系統(tǒng)的可實(shí)施性。一般Milk-run供貨路線模式可以分為以下幾種模式:兩站式、中心倉(cāng)庫(kù)式、多重停靠點(diǎn)式、差異化??奎c(diǎn)式。車間Milk-run供貨模式多采用1∶n的中心倉(cāng)庫(kù)式。
總幀數(shù):表示當(dāng)前任務(wù)的總幀數(shù)。有的任務(wù)需要由多幀發(fā)送,規(guī)定總幀數(shù)可識(shí)別是否接收完整。
幀序號(hào):表示本幀為當(dāng)前任務(wù)的第幾幀。
應(yīng)用數(shù)據(jù)總長(zhǎng)度:表示當(dāng)前任務(wù)的應(yīng)用數(shù)據(jù)總長(zhǎng)。應(yīng)用數(shù)據(jù)總長(zhǎng)的計(jì)算方法為計(jì)算每幀應(yīng)用數(shù)據(jù)的總和。
本幀應(yīng)用數(shù)據(jù)長(zhǎng)度:表示“應(yīng)用數(shù)據(jù)內(nèi)容”有效數(shù)據(jù)所占的字節(jié)數(shù),從應(yīng)用數(shù)據(jù)內(nèi)容開始計(jì)算。
預(yù)留位:后續(xù)擴(kuò)展可使用該字段,未使用時(shí)填寫默認(rèn)值“0”。
維護(hù)軟件和下位機(jī)的交互主要包括建立連接、獲取連接狀態(tài)、發(fā)送具體業(yè)務(wù)消息、獲取具體業(yè)務(wù)消息的返回信息、斷開連接。
交互流程圖如圖3 所示。
圖3 交互流程圖Fig.3 Interaction process flowchart
上位機(jī)(工程師站)與下位機(jī)具體通信過(guò)程如下。
①上位機(jī)給下位機(jī)發(fā)送連接請(qǐng)求。
②下位機(jī)返回連接狀態(tài)。
③如果下位機(jī)返回連接成功,上位機(jī)發(fā)送業(yè)務(wù)請(qǐng)求(業(yè)務(wù)流程包括下裝、回讀、監(jiān)視、強(qiáng)制、釋放強(qiáng)制、參數(shù)整定、校時(shí)等);如果下位機(jī)返回連接失敗,上位機(jī)則提示連接錯(cuò)誤。
④下位機(jī)返回業(yè)務(wù)消息。
⑤業(yè)務(wù)處理完成后,上位機(jī)發(fā)送命令,斷開連接。
維護(hù)軟件中間件提供大端數(shù)據(jù)和小端數(shù)據(jù)的處理模塊,通過(guò)設(shè)置可以適應(yīng)大、小端數(shù)據(jù)的傳輸。
如果下位機(jī)是基于鏈路層協(xié)議,則維護(hù)軟件中間件通過(guò)鏈路層通信庫(kù)與下位機(jī)進(jìn)行通信。其允許應(yīng)用程序不用網(wǎng)絡(luò)協(xié)議棧來(lái)捕獲與發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包。
如果下位機(jī)是基于傳輸層協(xié)議,則維護(hù)軟件中間件通過(guò)TCP/IP 協(xié)議棧與下位機(jī)進(jìn)行通信。維護(hù)軟件中間件可以支持UDP 和TCP 協(xié)議。
①數(shù)據(jù)完整性。
為了保證數(shù)據(jù)在傳輸過(guò)程中的完整性,采用了CRC 方式。在數(shù)據(jù)格式中加入了CRC 字段,在收到協(xié)議數(shù)據(jù)包后,首先進(jìn)行CRC 驗(yàn)證,確保數(shù)據(jù)的完整性。
②丟包重傳機(jī)制。
在網(wǎng)絡(luò)環(huán)境異常時(shí),針對(duì)不可靠的傳輸協(xié)議,設(shè)計(jì)了丟包重傳機(jī)制。當(dāng)出現(xiàn)丟包情況時(shí),啟用丟包重傳流程對(duì)丟包數(shù)據(jù)進(jìn)行處理。丟包重傳采用一問(wèn)一答方式實(shí)現(xiàn)丟包重傳。所有包都重傳成功后,回到正常通信流程中,通知對(duì)方接收完成。如果仍然不能收到重傳包,接收方就繼續(xù)要求重傳當(dāng)前包。直到累計(jì)n次丟包后,發(fā)錯(cuò)誤通知報(bào)文,標(biāo)記通信異常,并在通知報(bào)文的異常碼中標(biāo)記重傳失敗。
③超時(shí)重傳。
發(fā)送方需要對(duì)當(dāng)前發(fā)出的數(shù)據(jù)包進(jìn)行緩存。當(dāng)檢測(cè)到超時(shí)發(fā)生時(shí),需要對(duì)當(dāng)前數(shù)據(jù)包執(zhí)行重發(fā)操作。累計(jì)發(fā)送n次均超時(shí)后,停止發(fā)送,并給出錯(cuò)誤提示。
④心跳檢測(cè)。
發(fā)送心跳數(shù)據(jù)的目的是通知接收方,發(fā)送方當(dāng)前處于在線狀態(tài)。心跳檢測(cè)采用單獨(dú)的線程進(jìn)行通信。心跳檢測(cè)不能影響正常的業(yè)務(wù)流程。
數(shù)據(jù)發(fā)送前要進(jìn)行加密,收到后要進(jìn)行解密。加密、解密采用一種對(duì)稱加密算法。該算法使用的密鑰為私鑰,以字節(jié)流的方式依次對(duì)明文中的每個(gè)字節(jié)加密,解密的時(shí)候也是依次對(duì)密文中的每個(gè)字節(jié)進(jìn)行解密。該算法的特點(diǎn)是算法簡(jiǎn)單、運(yùn)行速度快,且密鑰的長(zhǎng)度是可變的。以如今的技術(shù),當(dāng)密鑰長(zhǎng)度為128 bit時(shí),已經(jīng)無(wú)法用暴力法破解。
針對(duì)核安全級(jí)儀控系統(tǒng)維護(hù)網(wǎng)絡(luò),本文介紹了維護(hù)軟件中間件的軟件架構(gòu)、協(xié)議格式、交互流程,并從適應(yīng)性、數(shù)據(jù)傳輸可靠性、數(shù)據(jù)傳輸安全性方面對(duì)維護(hù)軟件中間件進(jìn)行了設(shè)計(jì)。該設(shè)計(jì)在和睦系統(tǒng)中得到了充分的驗(yàn)證,達(dá)到了核電站儀控系統(tǒng)對(duì)于數(shù)據(jù)傳輸?shù)目煽啃?、安全性要求?/p>