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