【摘要】本文介紹了常規(guī)PLC與安全PLC的很多不同點,然后通過安全PLC的CPU、I/O模塊舉例說明了它們不同的具體內(nèi)容。
安全型可編程邏輯控制器(PLC)是為特殊用途的機器設(shè)備而設(shè)計的,用于關(guān)鍵型控制和安全型應用。這些控制器通常是安全儀表系統(tǒng)(SIS)的一部分,用在檢測具有潛在危險的流程工業(yè)環(huán)境中。一旦檢測出危險,SIS的應用程序能自動作用,把流程切換到安全狀態(tài)。談到這里,用戶可能會有一系列的問題:常規(guī)PLC已經(jīng)成功地使用了這么多年了,與安全PLC相比有什么不同?為什么在關(guān)鍵型控制和安全型應用中,不能使用常規(guī)的PLC?
一、綜述
一臺安全PLC采用了特殊的設(shè)計,能夠?qū)崿F(xiàn)兩個重要目標:
1.系統(tǒng)不會失效(采用冗余的工作方式),即使元件的失效不可避免;
2.失效是在可預測的范圍內(nèi),一旦失效,系統(tǒng)將進入安全模式。
在設(shè)計安全PLC時,要考慮到很多因素,需要很多的特殊設(shè)計。比如:一臺安全PLC更強調(diào)內(nèi)部診斷,結(jié)合硬件和軟件,可以讓設(shè)備隨時檢測自身工作狀態(tài)的不適;一臺安全PLC具有的軟件,要使用一系列的特殊技術(shù),能確保軟件的可靠性;一臺安全PLC具有冗余功能,即使一部分失效,也能夠維持系統(tǒng)運行;一臺安全PLC還具有外加的安全機制,不允許通過數(shù)字通信接口隨便讀寫內(nèi)部的數(shù)據(jù)。
安全PLC與常規(guī)PLC的不同還在于:安全PLC需要得到第三方專業(yè)機構(gòu)的安全認證,滿足苛刻的安全性和可靠性國際標準。必須徹底地采用系統(tǒng)方法,來設(shè)計和測試安全PLC。德國的TUV專家和美國的FM專家會提供對安全PLC設(shè)計和測試過程的、第三方獨立的確認和驗證,
特殊的電子線路,細致的診斷軟件分析,再加上對所有可能失效進行測試的完整性設(shè)計,確保了安全PLC具有測定99%以上的內(nèi)部元件潛在危險失效的能力。一種失效模式、影響和診斷分析(FMEDA)方法一直指導著設(shè)計,這種方法會指出每個元件是怎樣引起系統(tǒng)失效,并且告訴你系統(tǒng)應該如何檢測這個失效。TUV的工程師會親自執(zhí)行失效測試,把它作為他們認證過程的一個部分。
嚴格的國際標準軟件應用于安全PLC。這些標準需要特殊技術(shù),避免復雜性。更進一步的分析和測試,細致地檢查操作系統(tǒng)的任務交互操作。這種測試包括實時的交互操作,比如多任務(當使用時)和中斷。還需要進行一種特殊的診斷,被稱為"程序流控制"和"數(shù)據(jù)確認"。程序流檢查能確;竟δ苣馨凑_的順序執(zhí)行,數(shù)據(jù)確認使所有的關(guān)鍵數(shù)據(jù)在存儲器里進行冗余存儲,并且在使用前進行有效性測試。在軟件開發(fā)過程中,一個安全PLC需要附加的軟件測試技術(shù)。為了核實數(shù)據(jù)完整性檢查,必須執(zhí)行一系列"軟件失效注入"測試,也就是人為對程序進行故意破壞,來檢查PLC的響應是否運行在預計的安全方式。軟件的設(shè)計和測試帶有詳細的文件資料,這樣第三方的檢查員就能夠明白PLC的運行原理,而多數(shù)軟件開發(fā)沒有使用這種規(guī)范的操作流程,這也正好說明為什么眾多的垃圾軟件會出現(xiàn)那么多的臭蟲而無法發(fā)現(xiàn)了。
二、舉例
下面試通過施耐德電氣公司的一款安全PLC,來更具體地說明安全PLC與常規(guī)PLC的區(qū)別。
2.1 安全PLC與常規(guī)PLC的CPU的差別
常規(guī)PLC內(nèi)部CPU的數(shù)量有一個或多個,它或它們的作用是:執(zhí)行用戶的程序、進行I/O的掃描和系統(tǒng)的診斷。但用戶的程序通常就進行一次處理,多個CPU的功能是把程序中的邏輯運算、算數(shù)運算、通信功能等分擔實現(xiàn),也就是協(xié)作處理。
而安全PLC的CPU至少有兩個或多個,兩個CPU的功能是:分別對同一個用戶程序各自執(zhí)行一次,然后再把兩個結(jié)果放在一起進行比較,如果比較的結(jié)果是一致的,就輸出這個結(jié)果,如果是不一致的,選擇安全的結(jié)果輸出。由此看出,這才是安全PLC與常規(guī)PLC最大的不同:冗余+比較。
2.2 安全PLC內(nèi)部CPU的結(jié)構(gòu)
安全PLC包含2個處理器,每個處理器在自己的存儲器區(qū)中,執(zhí)行它們自己的安全邏輯,然后在每個周期的結(jié)尾和對方的結(jié)果進行比較,每個處理器有它自己獨立的停機通道,如果檢測到結(jié)果的不同或有失效成分,它能夠?qū)崿F(xiàn)系統(tǒng)停機,切到安全狀態(tài)。這種雙處理結(jié)構(gòu)被稱為內(nèi)部的二選一結(jié)構(gòu)。
下圖表示了這種安全PLC的內(nèi)部結(jié)構(gòu):
安全PLC通常都有兩個處理器,同時進行解碼和執(zhí)行。這種差異性提供了失效檢測的下列優(yōu)點:
•兩個可執(zhí)行碼獨自生成,編譯的差異性使得在代碼生成時,容易檢測系統(tǒng)失效。
•兩個生成碼由不同的處理器執(zhí)行,因此,CPU能夠在代碼執(zhí)行時,檢測出系統(tǒng)失效和PLC的隨機失效。
•兩個獨立的存儲器區(qū)用于兩個處理器,因此,CPU能夠檢測出RAM的隨機失效,而這在每個掃描周期的全部RAM檢查時測不出來。
這里我們接著引出安全PLC與常規(guī)PLC第二個最大的不同:隨時+步步進行診斷和檢測。這種檢測有的是通過自身信息進行的,稱為自檢;還有的通過對方的信息進行檢測,稱為互檢。后面我們還會提到更多的檢測。
2. 3 安全PLC CPU中的檢測
時鐘測量:在處理器電路中,有兩個不同的振蕩器交叉檢查它們的行為,每個處理器使用一個時鐘檢查另外一個是否運行。如果在一個確定的周期里,檢測到對方?jīng)]有運行,CPU就會進入安全狀態(tài)。固件每秒鐘會檢查兩個振蕩器的精度。
監(jiān)視時鐘:一個硬件和一個固件的監(jiān)視時鐘檢查PLC的活動和執(zhí)行用戶邏輯的執(zhí)行時間。這和常規(guī)的PLC系統(tǒng)是相同的。
序列檢查:序列檢查監(jiān)視CPU操作系統(tǒng)不同部分的執(zhí)行。
存儲器檢查:所有靜態(tài)存儲器區(qū),包括Flash存儲器和RAM,使用循環(huán)冗余碼(CRC)進行檢測,并且雙碼執(zhí)行。動態(tài)存儲器區(qū)由雙碼執(zhí)行保護,周期性進行檢測。在冷啟動時,這些檢測重新進行初始化。
從上面的分析可以看出,安全PLC的診斷和檢測比常規(guī)的PLC的檢測要多很多,所以相對來說,硬件和軟件的設(shè)計更復雜。當然,檢測和診斷的范圍也更廣范,更細致。
2.4 安全PLC I/O診斷概述
上面我們對安全PLC的CPU的情況進行了一個簡單的分析,下面我們再來看看安全輸入/輸出模塊的情況。
所有安全I/O模塊都要執(zhí)行以下兩個診斷功能:
•更多的系統(tǒng)層面的診斷,包括了:RAM測試、ROM測試、以及
•根據(jù)模塊的類型不同,現(xiàn)場層面的診斷,
下面的表格列出了安全I/O模塊的現(xiàn)場診斷情況:
還有,安全PLC要對安全CPU和安全I/O之間的通信進行診斷,比如使用CRC校驗。因此,不僅要檢查接收的數(shù)據(jù)是否等于發(fā)送的數(shù)據(jù),而且要檢查數(shù)據(jù)變化。為了解決擾動問題,比如EMC的影響,它可能瞬間破壞你的數(shù)據(jù),所以你需要對每個模塊,配置一個很大的連續(xù)CRC錯誤診斷。
上電時診斷:在