北京廣利核系統工程有限公司開(kāi)發(fā)的核電專(zhuān)用儀控系統(SpeedyHold)是以核電站數據快速采集、核電站試驗數據采集和核電站三廢處理系統等系統需求為基礎,開(kāi)發(fā)出的能用于核電站眾多儀控系統的產(chǎn)品系統平臺,該平臺具有高性能、高可靠性等系統特性,主要用于核電站對采樣速度、采樣精度和長(cháng)期穩定性等方面特殊要求的相關(guān)系統。
在核電站各種儀控系統的招標書(shū)中均明確要求系統設計中應采用合適的冗余配置,使系統具有高度的可靠性。對于冗余系統而言,系統的無(wú)擾動(dòng)切換以及系統數據的一致性是兩個(gè)重點(diǎn)的設計對象,其設計的合理性和有效性直接影響到冗余系統的正常運行。
本文通過(guò)對數據服務(wù)器冗余設計中最為關(guān)鍵的無(wú)擾動(dòng)切換以及數據一致性進(jìn)行研究,借此來(lái)增強核電專(zhuān)用儀控系統的可靠性,為核電站的安全穩定運行創(chuàng )建良好的基礎。
1 核電專(zhuān)用儀控系統設計
核電專(zhuān)用儀控系統為兩層網(wǎng)絡(luò )架構,管理網(wǎng)連接著(zhù)工程師站、操作員站和數據服務(wù)器,系統網(wǎng)連接著(zhù)控制站與數據服務(wù)器。數據服務(wù)器所處的位置如圖1紅色虛框所示。數據服務(wù)器承擔著(zhù)往下連接控制站,往上連接操作站,自身還要對數據進(jìn)行分析和處理的重要作用。
圖1 核電專(zhuān)用儀控系統架構圖
2 核電專(zhuān)用儀控系統數據服務(wù)器冗余設計
數據服務(wù)器是核電專(zhuān)用儀控系統數據的核心及數據鏈路的橋梁, 在實(shí)際應用中一般配置兩臺數據服務(wù)器,這兩臺數據服務(wù)器采用主從機運行方式運行,只有主機對外提供服務(wù),從機不對外提供服務(wù),從機在主機發(fā)生故障時(shí)能迅速切換為主機,對外提供服務(wù),切換過(guò)程無(wú)需人為干預。其對外提供服務(wù)的過(guò)程如圖2所示。
對于數據服務(wù)器而言,由于主從機器同時(shí)運行,在設計上必然會(huì )出現主從機進(jìn)行切換的情況,但是切換不能影響數據服務(wù)器對外提供服務(wù)的可靠性,因此對其進(jìn)行無(wú)擾動(dòng)的切換設計以及保證主從機數據的一致性尤為重要。
2.1 數據服務(wù)器無(wú)擾動(dòng)切換設計
對于數據服務(wù)器來(lái)說(shuō),其無(wú)擾動(dòng)切換需要達到的是對外服務(wù)的持續穩定,因此主從切換時(shí)首先要保證的是切換過(guò)程中對外服務(wù)的響應不能有丟失。其次,如果切換時(shí)間過(guò)長(cháng),會(huì )導致切換過(guò)程中對外服務(wù)的不確定性增加,也會(huì )影響數據服務(wù)器對外提供服務(wù)的效果。
(1)對外服務(wù)不間斷設計
為了達到更高的可靠性,核電專(zhuān)用儀控系統采用主從網(wǎng)絡(luò )和主從數據服務(wù)器設計,基于此數據服務(wù)器設計了三種對外提供服務(wù)的方式,即手動(dòng)指定服務(wù)端請求、手動(dòng)指定網(wǎng)絡(luò )請求和自動(dòng)服務(wù)端和網(wǎng)絡(luò )請求。下面論述一下如何在這三種方式下實(shí)現對外服務(wù)的不間斷設計。
手動(dòng)指定服務(wù)端請求
在這種方式下,外部請求直接通過(guò)服務(wù)端的IP地址將請求的數據包發(fā)送給服務(wù)端,服務(wù)端不會(huì )隨著(zhù)主從的切換,而不對外部請求進(jìn)行響應。即數據服務(wù)器的服務(wù)在主從切換過(guò)程中對外服務(wù)不會(huì )間斷。
手動(dòng)指定網(wǎng)絡(luò )請求
在這種方式下,外部請求直接通過(guò)網(wǎng)絡(luò )標識將請求的數據包發(fā)送給服務(wù)端,網(wǎng)絡(luò )標識是系統初始化設置完成的,不會(huì )隨著(zhù)主從的切換而變化。數據服務(wù)器在此網(wǎng)絡(luò )上的的服務(wù)不會(huì )在主從切換過(guò)程中間斷。
自動(dòng)服務(wù)端和網(wǎng)絡(luò )請求
這種方式是數據服務(wù)器最主要的對外提供服務(wù)的方式,即外部服務(wù)不用關(guān)心網(wǎng)絡(luò )的主從狀態(tài),也不用關(guān)心服務(wù)器的主從狀態(tài),直接將請求數據包通過(guò)主網(wǎng)絡(luò )發(fā)送給主服務(wù)器。這樣的設計基于在某些特定條件下,從服務(wù)器可能需要作為中轉站,將一些數據包轉發(fā)給主服務(wù)器。在這種方式下,為了避免通訊請求由于網(wǎng)絡(luò )或者服務(wù)端的狀態(tài)導致返回時(shí)間過(guò)長(cháng),核電儀控系統設計了請求超時(shí)時(shí)間,外部請求可以根據請求的數據量大小自主設置超時(shí)時(shí)間,當服務(wù)端未在此設置時(shí)間內返回數據時(shí),網(wǎng)絡(luò )通訊程序會(huì )自動(dòng)返回,這樣一方面避免了外部請求等待時(shí)間過(guò)長(cháng)導致的自身邏輯處理問(wèn)題。同時(shí),也增加了對外服務(wù)的響應,不會(huì )因為主從服務(wù)器的切換導致外部請求丟失,數據服務(wù)器在此種狀態(tài)下對外服務(wù)也不會(huì )中斷。
圖2 數據服務(wù)器外部請求處理圖
(2)主從快速切換設計
在核電儀控系統的數據服務(wù)器主從切換機制設計中,主要考慮了如下三種導致主從切換的因素:數據服務(wù)器任務(wù)故障、管理網(wǎng)雙網(wǎng)故障和用戶(hù)人為操作。針對每種因素導致的主從切換都有一個(gè)共同的前提條件,即主機需要切換時(shí)需要診斷從機是否正常,如果從機也處于故障狀態(tài),則不進(jìn)行主從切換。下面具體論述一下在這三種情況下主從快速切換的設計:
數據服務(wù)器任務(wù)故障
數據服務(wù)器任務(wù)故障指的是當主機的某個(gè)任務(wù)發(fā)生故障時(shí),從機如處于節點(diǎn)運行正常狀態(tài),則發(fā)生主從切換,否則不進(jìn)行切換。
數據服務(wù)器設計了主從服務(wù)任務(wù)診斷模塊進(jìn)行主從診斷,通過(guò)主從診斷規則,獲得和設置當前數據服務(wù)器的主從狀態(tài)。具體設計上主從服務(wù)任務(wù)診斷模塊首先進(jìn)行主從的判斷,然后提供主從狀態(tài)接口,來(lái)繼承主從診斷功能。服務(wù)任務(wù)之間的主從數據對齊由服務(wù)任務(wù)自己實(shí)現。每個(gè)服務(wù)任務(wù),通過(guò)檢測本機網(wǎng)絡(luò )故障情況以及檢測對方任務(wù)的狀態(tài),來(lái)決定自己的主從。診斷設計為在一定時(shí)間間隔內周期進(jìn)行診斷,以便在需要進(jìn)行主從切換時(shí)能迅速進(jìn)行主從屬性切換,而又不會(huì )影響計算機CPU的瞬時(shí)負荷。當前數據服務(wù)器任務(wù)故障的診斷時(shí)間不超過(guò)150ms,由數據服務(wù)器任務(wù)故障導致的主從服務(wù)器切換時(shí)間不超過(guò)200ms。
管理網(wǎng)雙網(wǎng)故障
管理網(wǎng)雙網(wǎng)故障指的是當主機的雙網(wǎng)都故障時(shí),主機節點(diǎn)直接退出,當從機網(wǎng)絡(luò )能正常使用時(shí)自動(dòng)升級為主機。
數據服務(wù)器設計了雙網(wǎng)冗余模塊進(jìn)行管理網(wǎng)的雙網(wǎng)故障診斷,在一個(gè)網(wǎng)絡(luò )出現故障時(shí)以不影響數據傳輸為前提將數據從備用網(wǎng)發(fā)送出去。在設計中如果請求數據包選擇具體的網(wǎng)絡(luò ),則可以根據其選擇直接進(jìn)行數據的發(fā)送。同時(shí)提供任意網(wǎng)絡(luò )發(fā)送的功能,任意網(wǎng)絡(luò )發(fā)送時(shí)可以隨機選擇一個(gè)進(jìn)行診斷,如果診斷成功,則使用此網(wǎng)絡(luò )進(jìn)行發(fā)送,并且記錄下此網(wǎng)絡(luò )屬性,在以后的請求中繼續使用此網(wǎng)絡(luò ),如果診斷失敗,則需要切換到另外一個(gè)進(jìn)行發(fā)送,同時(shí)也記錄下此網(wǎng)絡(luò )的屬性,在以后的請求中使用此網(wǎng)絡(luò )。通過(guò)這樣的手段可以達到主從網(wǎng)絡(luò )診斷的目的。同時(shí)減少切換時(shí)間,在最壞情況下(即依次需要診斷管理網(wǎng)雙服務(wù)器和雙網(wǎng)絡(luò )),由管理網(wǎng)雙網(wǎng)故障導致的主從服務(wù)器切換時(shí)間不超過(guò)200ms。
用戶(hù)人為操作
人為操作指的是當用戶(hù)人為停止了主從機監視,此時(shí)認為此節點(diǎn)故障。是否可以進(jìn)行切換,取決于對方節點(diǎn)運行是否正常。如果對方節點(diǎn)正常運行,則進(jìn)行主從切換。另外無(wú)論主從機哪一方發(fā)生系統退出,另一方都會(huì )自動(dòng)升為主機,此時(shí)不再判斷對方是否處于運行故障狀態(tài)。
在這種情況下,服務(wù)器主機會(huì )直接通知服務(wù)器從機升為主機,并且自身降為從機,其切換是實(shí)時(shí)的,整個(gè)切換時(shí)間取決于服務(wù)器主從機通訊的時(shí)間,由用戶(hù)人為操作導致的服務(wù)器主從切換時(shí)間不超過(guò)50ms。
綜合上述設計,數據服務(wù)器在切換過(guò)程中對外服務(wù)不會(huì )間斷,且切換時(shí)間最長(cháng)不超過(guò)200ms,對于核電站儀控系統來(lái)說(shuō),這樣的指標已經(jīng)超越了服務(wù)器切換時(shí)間不超過(guò)500ms的技術(shù)規格書(shū)要求。
2.2 數據服務(wù)器數據一致性設計
對于數據服務(wù)器來(lái)說(shuō),雖然冗余能確保系統可靠性的增加,但是如果冗余的系統數據不一致,則在冗余切換的過(guò)程中會(huì )出現同一時(shí)刻不一致的數據,給系統的運行帶來(lái)不確定的問(wèn)題,針對這個(gè)問(wèn)題,核電專(zhuān)用儀控系統進(jìn)行了數據對齊的設計,確保系統的數據保持一致。在數據對齊的設計中,有兩個(gè)至關(guān)重要的設計,即啟動(dòng)數據對齊設計和運行數據一致性設計。
(1)啟動(dòng)數據對齊設計
為了保持啟動(dòng)數據對齊,數據服務(wù)器中的各個(gè)任務(wù)在初始啟動(dòng)的數據創(chuàng )建時(shí)使用了磁盤(pán)文件與內存相映射的方式,并且將任務(wù)啟動(dòng)分為了冷啟動(dòng)、熱啟動(dòng)和備份啟動(dòng)三種不同的方式。
冷啟動(dòng)數據對齊
冷啟動(dòng)即系統在初始化狀態(tài)下啟動(dòng),在這種狀態(tài)下系統無(wú)任何歷史數據。系統離線(xiàn)編輯完初始啟動(dòng)的數據,這些數據稱(chēng)為冷數據,在主任務(wù)啟動(dòng)時(shí)讀取冷數據并創(chuàng )建其使用的實(shí)時(shí)數據,這個(gè)實(shí)時(shí)數據稱(chēng)為熱數據。從任務(wù)啟動(dòng)時(shí)向主任務(wù)請求當前的熱數據文件,并用請求的熱數據文件構建自己的實(shí)時(shí)數據,來(lái)保證啟動(dòng)時(shí)主從數據一致。在數據對齊的瞬間,將對齊的內存數據區上鎖。另外,對于長(cháng)期連續記錄歷史數據的任務(wù),由于歷史數據文件可能較大,如果啟動(dòng)時(shí)連續對齊將會(huì )導致系統負荷增加,因此系統設計了文件對齊線(xiàn)程,在啟動(dòng)后逐步對齊文件數據。
熱啟動(dòng)數據對齊
熱啟動(dòng)即系統在上次運行數據的基礎上啟動(dòng)。主任務(wù)熱啟動(dòng)時(shí)加載之前保存的熱數據,從任務(wù)啟動(dòng)時(shí)向主任務(wù)請求當前的熱數據文件,并用請求的熱數據文件構建自己的實(shí)時(shí)數據,來(lái)保證啟動(dòng)時(shí)主從數據一致。在數據對齊的瞬間,也需要將對齊的內存數據區上鎖以保證數據的一致性。
備份啟動(dòng)數據對齊
從任務(wù)的啟動(dòng)稱(chēng)為備份啟動(dòng)。從任務(wù)啟動(dòng)時(shí)向主任務(wù)請求當前的熱數據文件,并用請求的熱數據文件構建自己的實(shí)時(shí)數據,來(lái)保證啟動(dòng)時(shí)主從數據一致。在數據對齊的瞬間,也會(huì )將對齊的內存數據區上鎖來(lái)保證數據的一致性。
(2)運行數據一致性設計
在運行過(guò)程中只有主服務(wù)器對外提供數據服務(wù)。當主服務(wù)器處理更改實(shí)時(shí)數據狀態(tài)的數據時(shí),將此服務(wù)請求發(fā)送到主從一致消息隊列,由主從發(fā)送線(xiàn)程負責將此服務(wù)請求轉發(fā)從服務(wù)器。從服務(wù)器收到服務(wù)請求后執行與主服務(wù)器相同的處理邏輯,由此來(lái)保持運行過(guò)程中的主從數據一致。如圖3所示。
圖3 數據服務(wù)器運行主從一致設計圖
通過(guò)上述設計,數據服務(wù)器在運行過(guò)程中主從服務(wù)器數據保持一致,因此在冗余切換后也能保證對外提供服務(wù)的一致,提高了系統運行的可靠性。
3 結語(yǔ)
本文通過(guò)對核電專(zhuān)用儀控系統的數據服務(wù)器進(jìn)行冗余設計,驗證了數據服務(wù)器無(wú)擾動(dòng)切換和數據一致性功能,認為通過(guò)對數據服務(wù)器進(jìn)行冗余設計來(lái)提高核電專(zhuān)用儀控系統的可靠性是可行的。并且此套冗余方案在陽(yáng)江核電站3&4號機核電三廢處理系統項目中得到了實(shí)際的應用,順利通過(guò)了業(yè)主組織的工廠(chǎng)驗收測試,得到了陽(yáng)江核電站3&4號機業(yè)主和中廣核設計院專(zhuān)家的一致認可。
參考文獻:
[1] 王常力, 羅安. 分布式控制系統(DCS)設計與應用實(shí)例[M]. 北京: 電子工業(yè)出版社, 2010.
[2] 金以慧, 郭仲偉. 過(guò)程系統控制與管理[M]. 北京: 中國石化出版社, 1998.
[3] 郭宗仁. 可編程控制器應用系統設計及通信網(wǎng)絡(luò )技術(shù)[M]. 北京: 人民郵電出版社, 2002.
[4] 陽(yáng)憲惠. 工業(yè)數據通信與控制網(wǎng)絡(luò )[M]. 北京: 清華大學(xué)出版社, 2003.6.
[5] 顧興元. 計算機控制系統[M]. 北京: 冶金工業(yè)出版社, 1981.
[6] 黃錫滋. 軟件可靠性安全性與質(zhì)量保證[M]. 北京:機械工業(yè)出版社, 2003.
[7] Ian Sommerville著(zhù). 程成, 陳霞, 等譯. 軟件工程[M]. 北京: 機械工業(yè)出版社, 2003.
[8] Military Handbook. Reliability Prediction of Elevtronic Equipment[M].MIL-HDBK-217F, Washington, DC, U.S Department of Defense, 1991.
作者簡(jiǎn)介
彭立(1981-),男,湖北天門(mén)人,高級工程師,碩士,現就職于北京廣利核系統工程有限公司,主要研究方向為核電站數字化儀控系統。
摘自《自動(dòng)化博覽》2月刊