肖輝 崔剛 吳翔虎
摘要: 在實(shí)時(shí)嵌入式工控領(lǐng)域中,系統(tǒng)的實(shí)時(shí)性和高可靠性尤為重要。針對(duì)實(shí)時(shí)嵌入式領(lǐng)域中的工業(yè)現(xiàn)場(chǎng)分布式控制系統(tǒng),設(shè)計(jì)了雙冗余熱備份PROFIBUS主站仲裁模塊,提出了雙冗余主站工作保持?jǐn)?shù)據(jù)一致性問題以及雙冗余PROFIBUS總線的工作與切換方案,并且設(shè)計(jì)了虛擬雙端口存儲(chǔ)器通信協(xié)議,提高了系統(tǒng)的可用性和可靠性。
關(guān)鍵詞:
中圖分類號(hào):TP302.8文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2095-2163(2012)05-0013-03
0 引言
實(shí)時(shí)嵌入式系統(tǒng)是計(jì)算機(jī)應(yīng)用領(lǐng)域的一個(gè)重要分支,被廣泛應(yīng)用于工業(yè)過程控制領(lǐng)域中。工業(yè)過程控制系統(tǒng)需要進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,不僅對(duì)系統(tǒng)的實(shí)時(shí)性要求高,同時(shí),要求系統(tǒng)不間斷運(yùn)行、可靠性高?眼1-2?演。PROFIBUS總線是一種應(yīng)用于工業(yè)現(xiàn)場(chǎng)控制的總線標(biāo)準(zhǔn),提供了高速低成本的通信解決方案,保證了系統(tǒng)的實(shí)時(shí)性。
工業(yè)現(xiàn)場(chǎng)控制系統(tǒng)常采用雙冗余容錯(cuò)設(shè)計(jì)。與以前容錯(cuò)研究和設(shè)計(jì)中使用的多模冗余系統(tǒng)相比,雙冗余系統(tǒng)實(shí)現(xiàn)不如多模冗余系統(tǒng)復(fù)雜,實(shí)現(xiàn)成本更低。在單機(jī)穩(wěn)定性不斷提高,平均無故障時(shí)間不斷延長(zhǎng)的今天,使用多模容錯(cuò)系統(tǒng)的代價(jià)太高,因此對(duì)雙冗余容錯(cuò)系統(tǒng)的研究具有重要意義。PROFIBUS主站使用雙冗余熱備份,在單個(gè)主站出現(xiàn)故障時(shí),可以無縫切換,系統(tǒng)保持連續(xù)運(yùn)行,提高了系統(tǒng)的可靠性?眼3-4?演。同時(shí),雙冗余PROFIBUS總線設(shè)計(jì),可以在保證系統(tǒng)實(shí)時(shí)性的基礎(chǔ)之上,提供了總線故障檢測(cè)和無縫故障切換功能?眼5?演。
本文重點(diǎn)分析了基于PROFIBUS總線的分布式控制系統(tǒng)中的關(guān)鍵容錯(cuò)技術(shù),包括仲裁模塊的原理和設(shè)計(jì),雙冗余熱備份PROFIBUS主站數(shù)據(jù)一致性問題,雙冗余PROFIBUS總線切換技術(shù)以及虛擬雙端口存儲(chǔ)器通信協(xié)議設(shè)計(jì)。
1 基本原理
1.1雙冗余PROFIBUS總線
PROFIBUS總線是一種廣泛應(yīng)用于工業(yè)現(xiàn)場(chǎng)控制系統(tǒng)的現(xiàn)場(chǎng)總線技術(shù),提供高速度低成本的解決方案。使用雙冗余PROFIBUS總線,在保持PROFIBUS總線的高速度低成本的基礎(chǔ)之上,為系統(tǒng)增加了無縫總線切換,無故障延遲特點(diǎn),從而保證了系統(tǒng)的可靠性。
1.2 雙冗余熱備份PROFIBUS主站
PROFIBUS主站由通信板和上位機(jī)構(gòu)成,通信板負(fù)責(zé)主站和從站的PROFIBUS數(shù)據(jù)通信,上位機(jī)負(fù)責(zé)數(shù)據(jù)請(qǐng)求和數(shù)據(jù)處理。通信板和上位機(jī)之間通過虛擬雙端口存儲(chǔ)器通信。通信板包含四個(gè)任務(wù),上位機(jī)命令處理任務(wù)、雙網(wǎng)控制任務(wù)以及雙網(wǎng)獨(dú)立的兩個(gè)通信任務(wù)。在收到上位機(jī)命令后,雙網(wǎng)控制任務(wù)負(fù)責(zé)選擇PROFIBUS網(wǎng)絡(luò)與從站進(jìn)行數(shù)據(jù)通信。
仲裁模塊是雙冗余熱備系統(tǒng)的關(guān)鍵組成部分,雙冗余熱備份主站通過仲裁模塊來裁決工作狀態(tài),當(dāng)活動(dòng)站出現(xiàn)工作故障后,仲裁模塊立即將備份站切換為活動(dòng)站,系統(tǒng)無縫運(yùn)行。雙冗余PROFIBUS熱備份容錯(cuò)分布式控制系統(tǒng)整體框圖如圖1所示。
2 容錯(cuò)技術(shù)研究
2.1 仲裁模塊
仲裁模塊裁決雙冗余PROFIBUS主站的工作狀態(tài),一個(gè)作為活動(dòng)站,一個(gè)作為備份站,并將備份站從PROFIBUS總線中切出?;顒?dòng)站進(jìn)行正常PROFIBUS通信工作,同時(shí)通過心跳線與備份站互檢工作狀態(tài)。仲裁模塊的工作狀態(tài)有以下三種狀態(tài),上電識(shí)別、故障切換和故障恢復(fù)。對(duì)其分析如下:
(1)上電識(shí)別。系統(tǒng)剛上電時(shí),仲裁模塊需要對(duì)雙冗余PROFIBUS主站的工作狀態(tài)進(jìn)行裁決,兩個(gè)PROFIBUS主站對(duì)仲裁模塊產(chǎn)生的仲裁信號(hào)加以識(shí)別,并分別進(jìn)入活動(dòng)站和備份站狀態(tài)。
(2)故障切換。當(dāng)活動(dòng)PROFIBUS主站出現(xiàn)故障時(shí),需要進(jìn)行切換。備份站從接管成為活動(dòng)站,活動(dòng)站被仲裁模塊從PROFIBUS總線中切出?;顒?dòng)站和備份站的切換分為兩種類型。一是主動(dòng)讓出,活動(dòng)站故障后,看門狗溢出報(bào)警,仲裁模塊檢測(cè)到報(bào)警信號(hào)后,進(jìn)行仲裁切換。二是被動(dòng)搶占,雙機(jī)在通過心跳線互檢工作狀態(tài)時(shí),備份站發(fā)現(xiàn)活動(dòng)站出現(xiàn)故障,自動(dòng)向仲裁模塊發(fā)送控制信號(hào),搶占PROFIBUS控制器,成為活動(dòng)站。
(3)故障恢復(fù)。修復(fù)后的故障站重新加入系統(tǒng)中,首先通過仲裁模塊的仲裁信號(hào)判斷工作狀態(tài)。當(dāng)前另一主站已處于活動(dòng)站狀態(tài),則自己進(jìn)入備份站狀態(tài),系統(tǒng)正常工作。
2.2 雙冗余PROFIBUS主站數(shù)據(jù)一致性分析
在系統(tǒng)出現(xiàn)故障時(shí),進(jìn)行主備切換,備份站需要快速接管活動(dòng)站的工作與從站進(jìn)行通信,這就需要備份站在熱備過程中,與活動(dòng)站的狀態(tài)保持一致。
(1)雙主站同時(shí)進(jìn)入PROFIBUS總線,通過PROFIB-
US總線同步數(shù)據(jù)?;顒?dòng)站與備份站同時(shí)進(jìn)入PROFIBUS網(wǎng)絡(luò),分別設(shè)置不同的站地址。活動(dòng)站收到從站數(shù)據(jù)后,通過PROFIBUS總線與備份站同步數(shù)據(jù)。該方案充分利用了PROFIBUS總線進(jìn)行通信,但是備份站的站地址設(shè)置與活動(dòng)站不同,在活動(dòng)站出現(xiàn)故障,進(jìn)行切換時(shí),備份站需要重新進(jìn)行初始化,切換時(shí)間較慢。
(2)備份主站監(jiān)聽PROFIBUS總線,但屏蔽其PROF-
IBUS數(shù)據(jù)包發(fā)送。開始通信前,需要將其總線地址設(shè)置為與活動(dòng)站相同,當(dāng)活動(dòng)站與從站進(jìn)行通信時(shí),備份站也能接收總線上的數(shù)據(jù),從而保證雙模主站的數(shù)據(jù)一致。當(dāng)活動(dòng)站出現(xiàn)故障時(shí),備份站在規(guī)定時(shí)間內(nèi)收不到活動(dòng)主站發(fā)來的心跳數(shù)據(jù),即進(jìn)行故障切換,發(fā)送控制信號(hào)改變仲裁板的仲裁信號(hào),進(jìn)入活動(dòng)站狀態(tài),繼續(xù)與從站通信。當(dāng)故障站恢復(fù)后,通過檢測(cè)仲裁結(jié)果,進(jìn)入備份狀態(tài),并繼續(xù)與活動(dòng)主站發(fā)送心跳數(shù)據(jù)。該方案能夠減輕活動(dòng)主站的工作負(fù)載,并且避免心跳線成為系統(tǒng)性能瓶頸。但該方案需要修改PROFIBUS總線協(xié)議,實(shí)現(xiàn)較復(fù)雜。
(3)雙主站通過心跳線同步數(shù)據(jù)。備份站在初始化完成后,從PROFIBUS總線中切出,不進(jìn)行任何PROFIBUS通信,每個(gè)周期通過心跳線來接收活動(dòng)站發(fā)來的從站數(shù)據(jù)。該方案實(shí)現(xiàn)更為簡(jiǎn)單,但是心跳數(shù)據(jù)周期必須小于PROFIBUS輪詢所有從站一圈的通信周期,活動(dòng)站的工作負(fù)載較大。
2.3雙冗余PROFIBUS總線切換
PROFIBUS總線是主從式令牌環(huán)網(wǎng)絡(luò),采用雙網(wǎng)設(shè)計(jì)可以保證系統(tǒng)的高可靠性。為了保證從站采集數(shù)據(jù)的實(shí)時(shí)性,雙冗余PROFIBUS總線同時(shí)工作,活動(dòng)站能從兩條總線上同時(shí)發(fā)送和接收從站數(shù)據(jù),當(dāng)某個(gè)從站或某條總線出現(xiàn)故障時(shí),都能立刻從另外一條總線上獲得數(shù)據(jù),無需任何切換操作,系統(tǒng)能夠保持繼續(xù)運(yùn)行。同時(shí),通過雙網(wǎng)控制,對(duì)上位機(jī)隱藏雙冗余總線設(shè)計(jì),簡(jiǎn)化上位機(jī)軟件設(shè)計(jì)。雙冗余PROFIBUS總線的雙網(wǎng)控制設(shè)計(jì)方案如圖2所示。
通信任務(wù)0和1分別通過雙冗余PROFIBUS的0網(wǎng)和1網(wǎng)與從站通信,當(dāng)通信任務(wù)收到從站數(shù)據(jù)包以后,直接將其轉(zhuǎn)發(fā)給雙網(wǎng)控制任務(wù)。然后雙網(wǎng)控制任務(wù)通過數(shù)據(jù)包的狀態(tài),判斷通信是否出錯(cuò),如果出錯(cuò),則標(biāo)記數(shù)據(jù)包來源從站在對(duì)應(yīng)網(wǎng)絡(luò)上通信錯(cuò)誤。如果數(shù)據(jù)包狀態(tài)正確,則判斷其來源,這里假設(shè)0網(wǎng)的優(yōu)先級(jí)高于1網(wǎng),即0網(wǎng)收到的數(shù)據(jù)正確時(shí),就拋棄1網(wǎng)上接收的數(shù)據(jù),只有當(dāng)0網(wǎng)出錯(cuò)時(shí),才從1網(wǎng)接收數(shù)據(jù)。
當(dāng)數(shù)據(jù)包出錯(cuò)時(shí),根據(jù)雙網(wǎng)上接收的數(shù)據(jù)狀態(tài)來報(bào)警,如果只有一個(gè)網(wǎng)絡(luò)上出現(xiàn)錯(cuò)誤,則可判斷另一網(wǎng)絡(luò)故障,如果兩個(gè)網(wǎng)絡(luò)上都沒法收到數(shù)據(jù),則可判斷是相應(yīng)從站故障。
2.4 虛擬雙端口存儲(chǔ)器通信協(xié)議