劉雪飛 ,蘇師師 ,蒯 亮 ,韓慶敏 ,王 帥 ,吳云峰
(1.中國電子信息產(chǎn)業(yè)集團(tuán)有限公司第六研究所,北京 102209;2.中軟信息系統(tǒng)工程有限公司,北京 102209)
可編程邏輯控制器(Programmable Logic Controller,PLC)與分布式I/O 協(xié)同工作[1],廣泛應(yīng)用于石油、高鐵、電力等工業(yè)環(huán)境下的自動化控制系統(tǒng)中[2]。國產(chǎn)超御PLC 分布式I/O(EtherCAT 從站)負(fù)責(zé)在現(xiàn)場準(zhǔn)備編碼器和執(zhí)行器數(shù)據(jù),使得數(shù)據(jù)可以通過EtherCAT 總線發(fā)送至控制CPU。惡劣的環(huán)境、系統(tǒng)本身的干擾擾造成采集環(huán)節(jié)出現(xiàn)問題[3],即使CPU 進(jìn)行何種冗余方式[4],此時都無濟(jì)于事,結(jié)果導(dǎo)致系統(tǒng)部分功能失效或引發(fā)控制系統(tǒng)故障等事故。目前提高可靠性的方案主要是通過CPU、核心設(shè)備雙備份冗余技術(shù)[5-6];應(yīng)用硬件、軟件抗干擾措施[7],定期進(jìn)行檢測和維護(hù);或者根據(jù)信號類型的不同選取“與”或“或”這種比較簡單的I/O 冗余模塊間的冗余策略確保PLC 控制系統(tǒng)安全可靠地運行[8-10]。上述冗余機(jī)制簡單,但安全系數(shù)不高;模塊間I/O 冗余,當(dāng)某一通道級故障發(fā)生時,整個模塊采集數(shù)據(jù)不可信任,造成硬件資源的浪費;數(shù)據(jù)自身的不準(zhǔn)確、采集模塊的故障都將影響冗余機(jī)制本身的可靠性。
針對該情況,本文對控制系統(tǒng)基本結(jié)構(gòu)充分了解熟悉、對主要硬件故障現(xiàn)象認(rèn)真分析后[11-12],綜合運用各種故障處理方法,對冗余理論分析提出了基于國產(chǎn)PLC的分布式I/O 冗余方法,通過提高現(xiàn)場數(shù)據(jù)的準(zhǔn)確性,進(jìn)而提高控制系統(tǒng)的健壯性,保障自動化系統(tǒng)運行通暢。
可靠度是指系統(tǒng)無故障正常工作狀態(tài)的概率R(t),它是規(guī)定時間t 的函數(shù)。F(t)表示失效分布函數(shù),則有[13]:
故障率λ(t)與可靠度之間的基本關(guān)系為:
其中,f(t)為失效密度函數(shù)。
電子產(chǎn)品及控制設(shè)備的失效分布大致服從參數(shù)為λ的指數(shù)分布。并聯(lián)的主備冗余系統(tǒng)平均故障時間MTBF為:
式(3)表明冗余度越高,可靠性相應(yīng)越高,同時對硬件資源需求也越大。
3 選2 表決冗余系統(tǒng)平均故障時間MTBF:
由式(3)和式(4),結(jié)合經(jīng)濟(jì)實用性綜合考慮,本文選擇主備冗余方案。
分布式I/O 冗余依據(jù)故障自診斷,是基于通道級冗余的方式,即模塊上出現(xiàn)通道級故障后,只會鈍化該通道,其他通道工作正常;模塊上出現(xiàn)模塊級故障后,鈍化整個模塊,所有通道停止工作。
根據(jù)冗余通道對是否在同一模塊分為圖1 所示的模塊間通道冗余、圖2 所示的模塊內(nèi)不同通道冗余。
圖1 模塊間通道冗余架構(gòu)
圖2 模塊內(nèi)通道冗余架構(gòu)
不同模塊間通道冗余,相同通道序號才可構(gòu)成冗余通道對,例如,I/OA_0 與I/OB_0 構(gòu)成冗余通道對,I/OA_1與I/OB_1 構(gòu)成冗余通道對,依次類推。
同一模塊內(nèi)可配置任意兩通道構(gòu)成冗余通道對,例如,I/OA_0 與I/OA_9 構(gòu)成冗余通道對。
輸人單元常見的故障就是輸電線路的信號輸人與外部開關(guān)的信號不匹配,容易出現(xiàn)混亂的情況、特定點信號時有時無等[14],表現(xiàn)為輸出信號時有時無、特定點信號不穩(wěn)定以及PLC 輸出信號與外接設(shè)備工作不統(tǒng)一。可發(fā)現(xiàn),故障的發(fā)生是不可預(yù)見的,但是可以防御或在故障發(fā)生時提供解決方案。
為了降低故障影響,冗余技術(shù)必須包含高精確的故障在線檢測技術(shù),發(fā)現(xiàn)故障、定位故障、隔離故障并能有效進(jìn)行故障報警。常見的系統(tǒng)故障查找方法有:直接檢查法(簡易故障診斷法)、折半查找法、對比替換法、邏輯分析法、儀器專項檢測法、智能診斷法等[15]。下文介紹了本文國產(chǎn)化I/O 從站采用的故障檢測技術(shù)。
2.2.1 斷線診斷
每個通道都有一個特定的GPI/O 管腳來監(jiān)測是否發(fā)生了斷線,斷線診斷模塊通過讀取GPI/O 采集值來判斷是否發(fā)生了斷線。
首先判斷某通道的斷線診斷功能是否已經(jīng)使能,如果使能則接下來根據(jù)特定GPI/O 管腳的值判斷是否發(fā)生了斷線故障,如果發(fā)生了故障則發(fā)送緊急報文將通道號和故障狀態(tài)告知主站;然后如果該通道是從斷線故障中恢復(fù)成正常狀態(tài),則也發(fā)送緊急報文將故障恢復(fù)告知主站。斷線診斷流程如圖3 所示。
圖3 斷線診斷流程圖
斷線檢測電路包括濾波單元、電壓比較單元和報警單元,其中,電壓比較單元包括:電壓比較器、第一電阻、第二電阻、第三電阻、第一電容。濾波單元與分布式I/O模塊的通道連接,濾波單元用于將分布式I/O 模塊的通道在發(fā)生斷線故障或未發(fā)生斷線故障時產(chǎn)生的不同電壓信號發(fā)送至電壓比較器的異相輸入端,該電壓比較器根據(jù)該電壓信號判斷分布式I/O 模塊的通道是否發(fā)生故障,并在發(fā)生故障時輸出一啟動信號至報警單元,以使該報警單元執(zhí)行相應(yīng)的報警動作。斷線監(jiān)測電路如圖4 所示。
圖4 斷線檢測電路
2.2.2 信號變化監(jiān)測及上報
在獲取了采集值后,通過監(jiān)測輸入信號的變化來判斷是否發(fā)生了信號上升沿或下降沿。如果上一次采集值為0,本次采集值為1,則發(fā)生了上升沿變化;如果上一次采集值為1,本次采集值為0,則發(fā)生了下降沿變化。
首先判斷系統(tǒng)狀態(tài)是否處于SafeOP 態(tài)或OP 態(tài),如果是則接下來需要判斷通道的上升沿/下降沿監(jiān)測功能是否已使能,如果使能就可以開始判斷是否發(fā)生了上升沿/下降沿,如果發(fā)生則發(fā)送緊急報文將監(jiān)測到信號變化的通道號告知主站。
2.2.3 輸出回采診斷
通過回采特定的GPI/O 管腳值并與輸出指令值進(jìn)行比較,即采用標(biāo)準(zhǔn)信號來檢測是否正常。
首先判斷某通道的輸出回采診斷功能是否已經(jīng)使能,如果使能則接下來通過比較指令值和回采值判斷通道是否發(fā)生輸出異常故障,如果發(fā)生了故障則發(fā)送緊急報文將通道號和故障狀態(tài)告知主站;如果該通道是從輸出異常故障中恢復(fù)成正常狀態(tài),則也發(fā)送緊急報文將故障恢復(fù)告知主站。
用戶在上位機(jī)組態(tài)時,根據(jù)實際應(yīng)用將所組態(tài)冗余通道對配置,生成配置文件。配置文件中包含了冗余通道對信息、冗余策略。
I/O 冗余機(jī)制的執(zhí)行在PLC 控制器中進(jìn)行。PLC 系統(tǒng)的I/O 冗余管理軟件采集EtherCAT 主站刷新的I/O信號、現(xiàn)場診斷數(shù)據(jù),然后結(jié)合用戶組態(tài)的冗余策略實現(xiàn)分布式I/O 冗余機(jī)制。I/O 冗余流程如圖5 所示。
圖5 I/O 冗余流程
2.3.1 數(shù)字量輸入模塊
數(shù)字量輸入模塊冗余策略,超出預(yù)設(shè)差異時間,冗余通道對仍存在差異,此時,有效值(用戶組態(tài)值)的產(chǎn)生策略主要有3 種:或操作(or)、與操作(and)以及最近有效值(last valid value),即用戶組態(tài)值會有3 種。數(shù)字量輸入模塊有效值產(chǎn)生有如下4 種情況:
(1)冗余通道對輸入值相同(無差異),有效值即為通道的采集值。
(2)冗余通道對輸入值首次存在差異,將被標(biāo)記并開始差異計時。在差異時間期間,最近的匹配值(非差異值)為有效值。該步驟將重復(fù)直到在差異時間內(nèi)數(shù)值再次匹配或超出差異時間。
(3)差異時間到后,通道不會立即被鈍化。在信號跳變前,根據(jù)用戶組態(tài)值輸出冗余結(jié)果。如果輸入數(shù)值中仍然存在差異,則需要執(zhí)行冗余策略,同時產(chǎn)生一個錯誤,將錯誤報告上去。差異分析時仍需要檢測數(shù)字量輸入模塊的“持續(xù)1”和“持續(xù)0”錯誤。持續(xù)1 錯誤表示輸入上持續(xù)為數(shù)值1,持續(xù)0 錯誤表示輸入持續(xù)為0。例如,這可能引起L+或M 短路。
(4)信號跳變后,鈍化信號未跳變的模塊,即刻起有效值恒為未被鈍化通道的采集值。
2.3.2 模擬量輸入模塊
計算容差閾值,組態(tài)為測量范圍最終數(shù)值的百分比,如果兩個模擬值都在容差閾值內(nèi),則視它們相等。允許兩個通道出現(xiàn)差異的最大閾值,即相對偏差,取值范圍為0~20%。AI 通道值的相對偏差為兩個通道差值除以通道量程。
有效值的產(chǎn)生策略,對于模擬量,可選擇的冗余策略主要有兩種:二者之間的較大值、二者之間的較小值。即用戶組態(tài)值為lower value、higher value。
有效值是指兩個模擬量輸入數(shù)值中最終輸入到用戶程序中被應(yīng)用的數(shù)值。有效值的產(chǎn)生有如下3 種情況:
(1)系統(tǒng)將檢查這兩個模擬值是否在組態(tài)的容差閾值內(nèi)。冗余通道對輸入值差異在容差閾值之內(nèi),有效值根據(jù)冗余策略選擇二者之間的較大值或較小值。
(2)冗余通道對輸入值出現(xiàn)差異(相對偏差超過容差閾值)且未達(dá)到預(yù)設(shè)差異時間,有效值為開始出現(xiàn)差異時刻,根據(jù)冗余策略選取的輸入值,該有效值一直保持到差異達(dá)到最大差異時間。
(3)如果在預(yù)設(shè)差異時間內(nèi)的出現(xiàn)下面兩種特殊情況,將做對應(yīng)處理:如果在差異時間內(nèi)差異被中止,系統(tǒng)將重新開始分析冗余輸入信號;在差異時間內(nèi),如果出現(xiàn)兩路信號反轉(zhuǎn)并且繼續(xù)超過閾值,則重新進(jìn)入新的差異時間計時,且當(dāng)前超過容差閾值這一刻的采樣值按照用戶配置/組態(tài)選擇(lower or higher)選取有效值為“最近有效值”,該“最近有效值”一直保持到差異時間到或者小于容差閾值,或者再次出現(xiàn)反轉(zhuǎn)且繼續(xù)超閾值的情況。
差異時間內(nèi)出現(xiàn)反轉(zhuǎn)情況如圖6 所示。
圖6 差異時間內(nèi)出現(xiàn)反轉(zhuǎn)情況
最近的有效值指:當(dāng)超過容差閾值時,以差異時間開始計時那一刻的采樣,按照用戶配置/組態(tài)選擇(lower or higher),選取的有效值為最近有效值(the most recent valid value)。
冗余通道對差異時間達(dá)到預(yù)設(shè)差異時間,未被選為有效值的模塊將會被鈍化掉,即超過設(shè)定差異時間后,如果還有輸入數(shù)值的差異說明有通道出現(xiàn)故障,將有一個通道會被鈍化掉。此后,有效值恒為未被鈍化的模塊的輸入值。如果兩個通道中的最大值被組態(tài)為標(biāo)準(zhǔn)值,該數(shù)值將被用于進(jìn)一步程序執(zhí)行,其他通道被鈍化。如果設(shè)定了最小值,該模塊將最小值用于過程而具有最大值的通道被鈍化。
2.3.3 數(shù)字量輸出模塊
通過并聯(lián)兩個數(shù)字量輸出(2 選1 組態(tài)),可以實現(xiàn)執(zhí)行器的冗余控制。
同一模塊DO,任意兩個通道可組成冗余通道對。不同模塊之間,同一通道號可組成冗余通道對。組成通道級冗余時,通道故障狀態(tài)與工作狀態(tài)的關(guān)系見表1。
表1 單個DO 模塊的通道冗余工作狀態(tài)
相同的DO 模塊才能組成冗余對,不同型號的DO模塊不能組成冗余對,不同版本的DO 模塊不能組成冗余對。
2.3.4 模擬量輸出模塊
只有電流輸出型模擬量輸出模塊可以進(jìn)行冗余操作,量程為4~20 mA。
冗余通道對都正常工作時,兩個通道各輸出一半值。如果其中一個通道出現(xiàn)故障,則故障會被檢測出來,另一個通道就會輸出完整的值。這樣,因錯誤而在輸出模塊上引起的電涌不會太高。當(dāng)兩個通道都鈍化時,兩個通道各輸出一半值。
通道故障與其工作狀態(tài)見表2。
表2 單個AO 模塊通道冗余工作狀態(tài)
相同的AO 模塊才能組成冗余對,不同型號的AO模塊不能組成冗余對,不同版本的AO 模塊不能組成冗余對。
通過自主研發(fā)的PLC 編程工具SC-ProSys,對構(gòu)成I/O 模塊冗余對的每個通道單獨設(shè)置冗余條件以及冗余策略等配置信息,編譯時將配置信息寫入配置文件,在線下裝給控制器,控制器根據(jù)用戶I/O 冗余配置信息,對相關(guān)冗余通道的數(shù)據(jù)刷新執(zhí)行相應(yīng)的冗余操作。
用戶可選擇通道冗余是否使能。
圖7 冗余參數(shù)配置
以自主研制AI 模塊進(jìn)行實驗,冗余參數(shù)的配置是指配置好模塊對之后,配置冗余結(jié)果變量、差分時間等參數(shù)。
勾選通道00 的冗余使能;在硬件配置中雙擊第一個槽位的AI(NT3009)和第二個槽位的AI(NT3009),勾選通道診斷;配置冗余結(jié)果變量。在AI 模塊所屬任務(wù)1 中創(chuàng)建一個任務(wù)變量p1,p1 數(shù)據(jù)類型與AI 模塊通道類型匹配,在冗余界面中配置有效值變量;配置差異時間,范圍為任務(wù)周期~30 000 ms,修改差異時間為200;配置容差閾值,范圍為0~20%,修改容差閾值為20;配置差異反應(yīng),選項包括:高值/低值,選擇高值;冗余配置完成,點擊編譯,提示編譯通過。參數(shù)配置如圖7 所示。
本文簡單介紹了冗余的基本概念,重點提出了分布式I/O 冗余技術(shù)方案,并將該方案應(yīng)用于國產(chǎn)超御PLC。通過實驗驗證,該方案與現(xiàn)有技術(shù)相比,有如下優(yōu)點:集成于國產(chǎn)CPU 中實現(xiàn),應(yīng)用于國產(chǎn)自主I/O 從站;冗余時只需要用戶配置;I/O 從站模塊的接線方式與非冗余模式?jīng)]有任何區(qū)別,使用戶對從站模塊的使用非常容易;支持通道級冗余、模塊級冗余;用戶根據(jù)現(xiàn)場實際情況選擇冗余方式;考慮了采集模塊硬件故障、電源故障、斷線故障;可提高PLC 控制系統(tǒng)可靠性。相比于單純提升數(shù)據(jù)采集模塊可靠性的方式,分布式I/O 雙機(jī)冗余方式可以使整個控制系統(tǒng)最大限度地消除異常故障的影響,將控制系統(tǒng)的可用性提高了一個數(shù)量級。