SIMATIC S7-300和S7-400使用廣泛,應用在各行各業(yè)的工業(yè)環(huán)境中。在調(diào)試和使用PLC和相關(guān)網(wǎng)絡(luò)過程中,發(fā)生一些PLC或者網(wǎng)絡(luò)故障是不可避免的。故障出現(xiàn)后,用戶可能無法從上位機獲取相關(guān)診斷信息,只有通過連接PG到PLC上,使用Step7在線的方式或者查看CPU的診斷信息來分析和判斷故障原因,根據(jù)所提示的內(nèi)容來解決現(xiàn)場問題。 但是通過上述方法,由于獲取故障信息緩慢,從而不能快速有效的解決現(xiàn)場問題。西門子對于PLC和相關(guān)網(wǎng)絡(luò)提供多種多樣的診斷方式,包括使用故障組織塊例如OB82,OB86,診斷功能塊,例如SFC51,SFC13,SFB52等,使用RSE/WinCC/WinCC flexible方式,使用Web服務(集成在新的PN CPU中),使用已有的診斷方式,例如FB126,或者使用Maintenance station(維護站)等方式。其中使用 OB8x ( 359 KB ) 是最簡單最基本的獲取基本故障信息的方法,同時也可以配合診斷功能塊進行詳細故障的診斷。 SIMATIC PLC判斷發(fā)生故障,會立即調(diào)用相應的故障組織塊OB,如果PLC中沒有加入相應的組織塊PLC可能會停機,停機的目的就是保證生產(chǎn)過程處于安全狀態(tài)。如果使用OB8x而沒有編寫任何診斷程序在用戶程序中,PLC雖然不會因為發(fā)生故障而停機,但是這種方式并不可取。不能讓產(chǎn)生故障的PLC仍無條件的運行,因為這種方式可能導致生產(chǎn)處于某種危險的狀態(tài)。例如,當DO模塊發(fā)生斷線故障,相關(guān)的控制設(shè)備因此停止,但是DO可能并沒有獲取故障信息而停止輸出,如果維護人員檢查故障并做好接線后,DO會立刻輸出控制信號導致相應的控制設(shè)備動作,這可能會造成現(xiàn)場人員或者設(shè)備的傷害。最好的方式之一就是通過OB8x獲取故障信息,然后通過編程連鎖該輸出信號,使其輸出為“0”,當維修完畢后,通過用戶確認后(例如上位機界面中的操作按鈕),然后再輸出信號“1”。所以使用OB8x就是快速的獲取故障信息,然后根據(jù)此類故障進行條件式的監(jiān)視和處理,這樣才是有效使用PLC的方法。 本文介紹如何使用OB82,OB83,以及OB86來判斷現(xiàn)場故障,并作出相應的處理。OB82為診斷中斷組織塊,相關(guān)的診斷報警例如“DO模板的DO信號斷線”會使PLC調(diào)用OB82;OB83為插拔中斷組織塊,當插拔機架上的模塊時PLC會調(diào)用OB83;OB86為機架故障組織塊,當擴展機架丟失,分布式IO掉站時,PLC會調(diào)用OB86。各個組織塊的詳細信息可以參看下面介紹。 上述組織塊都具有20個字節(jié)的臨時變量,對于用戶在編程時不能占用和修改這些臨時變量。這些臨時變量會由PLC在調(diào)用相應的故障組織塊時自動生成,所以這些臨時變量為只讀屬性,用戶只需要讀取這些臨時變量的數(shù)值或者狀態(tài)來判斷哪里出現(xiàn)什么樣的故障。每一個故障組織塊的臨時變量隨診斷功能的不同而不同,另外還可以根據(jù)相應故障組織塊的臨時變量OB8x_Date_Time得到故障出現(xiàn)的時間日期。該時間雖然是調(diào)用相關(guān)OB8x的時間,但是也可以參考故障出現(xiàn)的大致時間。 1, OB82診斷 OB82是診斷中斷組織塊。 PLC的模板狀態(tài)從嚴重程度上可以分為兩類,一類表示“完好”,一類表示“故障”。然而對于PROFINET模板其狀態(tài)具有另外一種中間狀態(tài),該狀態(tài)處于“完好”和“故障”之間,是一種臨界狀態(tài),稱為“維護”,利用該狀態(tài)用戶可以盡早的發(fā)現(xiàn)故障,盡快維護現(xiàn)場設(shè)備,可以有效的防止由于故障導致生產(chǎn)的停頓。 使用該組織塊診斷“故障”。首先要求PLC的模板具有診斷能力,然后通過組態(tài)使能相關(guān)診斷(Diagnostics:)去檢測一個故障事件,例如“斷線”(wire break),“短路”(short circuit to M)等,參考圖1 ET200S DO模塊的參數(shù)設(shè)置。相關(guān)的診斷“故障”的方法參考上述連接文檔。 使用該組織塊診斷“維護”。對于PROFINET的接口模板,例如ET200S IM151-3 PN HF接口模塊支持檢測網(wǎng)絡(luò)錯誤,包括同步丟失,端口連接狀態(tài),光纖信號質(zhì)量等。這些事件就是維護中斷事件,同樣也需要通過組態(tài)使能檢測網(wǎng)絡(luò)錯誤參考圖2,當這些事件出現(xiàn)后,接口模板的MAINT/FO燈亮。如果需要CPU獲取這些維護信息,需要在CPU的PN-IO屬性中設(shè)置使能OB82,參考圖3 使能OB82/I/O fault task。 圖1 ET200S DO模塊的參數(shù)設(shè)置 圖2 使能檢測ET200S接口模塊的網(wǎng)絡(luò)錯誤 圖3 使能OB82/I/O fault task 當它檢測到維護事件時,它輸出一個診斷中斷請求給CPU(到來和離去事件)。于是操作系統(tǒng)調(diào)用OB82。如果沒有下載OB82到PLC中,那么PLC會停機。 OB82 的局部變量中除了包含故障模塊的邏輯地址OB82_MDL_ADDR,還包含故障模板四個BYTE 的診斷數(shù)據(jù)LB8,OB82_MDL_TYPE,LB10,LB11。具體信息可以查看Step7在線幫助OB82。 下面舉一個維護的例子,組態(tài)參考圖4 PLC硬件組態(tài)。例如ET200S FO接收光纖信號質(zhì)量由于某種原因衰減,導致接收功率低于門檻值,從而產(chǎn)生MAINT信息。同時觸發(fā)診斷中斷OB82,PLC調(diào)用OB82來接收該中斷信息,通過在OB82中編程,獲取診斷信息。利用這些診斷信息可以顯示在上位機上,以便用戶快速的維護防止生產(chǎn)中斷。 圖4 PLC硬件組態(tài) 參考圖2設(shè)置,當出現(xiàn)信號質(zhì)量衰減時,通過Step7在線會出現(xiàn)“扳手”圖標,指示需要維護,參考圖5。 圖5 綠色扳手指示端口狀態(tài) 參考圖3設(shè)置CPU的PNIO屬性,然后在程序中加入OB82,進行編程。編程之前需要了解OB82臨時變量的意義。 對于PROFINET,OB82臨時變量的一些預留位,被賦予了一些新的含義。例如臨時變量OB82_MDL_TYPE的Bit7表示Maintenance required,與維護狀態(tài)綠色 相對應。臨時變量OB82_RESERVED_2表述Maintenance demanded,與維護狀態(tài)黃色 相對應。 例子程序如下:
通過上述簡單的程序?qū)嵗?,表明當在IM151-3接口模板的端口2出現(xiàn)光纖信號衰減而導致接收功率低于門檻值時,置位M100.0,同時獲取故障事件時間和日期存儲到MW120和MD124。這些變量可以編寫在WinCC/WinCC flexible中進行顯示,方便用戶維護現(xiàn)場故障。對于其它端口或者其它分布式IO上的接口模板的端口診斷可以按照上述方式自行添加。 2, OB83診斷 OB83是插拔中斷組織塊。 對于PROFINET IO,OB83賦予了一些新的特點,對于S7 CPU31x-2PN/DP可以使用OB83來評估模塊插拔中斷。而對于PROFIBUS-DP系統(tǒng)中的S7-300則無法使用OB83。 在下列情況下CPU 操作系統(tǒng)調(diào)用OB83: · 組態(tài)的模板插入/拔出之后。 · 在STEP 7 下修改了模板參數(shù)并在RUN 狀態(tài)下裝所作修改到CPU。 模板插入和拔出在RUN、STOP 和STARTUP 方式時每次組態(tài)的模板插入或拔出,就產(chǎn)生了插入/拔出中斷(電源模板、CPU、適配模塊和IM 不能在這種方式下移出)。 對于S7-300PLC不允許熱插拔中央機架的模塊。然而,存在一些特殊情況: · S7 CPU31x-2PN/DP僅支持分布式IO設(shè)備插拔模板中斷。 · S7 CPU IM151-7 DP和CPU IM151-8 PN支持中央機架IO的插拔(1塊IO模板)。 如果沒有遵守上述要求,例如在CPU IM151-8 PN的中央機架插拔2塊IO模板。那么即使在CPU中加入了OB83,CPU也會停機,同時報告“Stop caused by I/O management”,只有這些故障消除才能啟動CPU。所以在操作時必須遵守模板安裝規(guī)范,防止不必要的停機。 當它檢測到故障時,它輸出一個插拔中斷請求給CPU。于是操作系統(tǒng)調(diào)用OB83。如果沒有下載OB83到PLC中,那么PLC會停機。具體相關(guān)變量信息可以查看Step7在線幫助OB83。 下面舉一個模塊更換的例子,假如一個DO模塊損壞,然后替換一個新的模塊,如果新的模塊的類型與被替換的類型不一致,報告相應的錯誤。 例子程序如下:
通過上述簡單的程序?qū)嵗砻鳟敳迦氲膶嶋H模塊與Step7組態(tài)的模塊配置不相符時,可以獲取該模板的所處位置的邏輯地址MW130和設(shè)備號MW132,參考圖6 設(shè)備號和邏輯地址。也可以獲取故障事件時間和日期存儲到相應的變量中,參考相關(guān)OB82的編程方式。這些變量可以編寫在WinCC/WinCC flexible中進行顯示,方便用戶維護現(xiàn)場故障。 圖6 設(shè)備號和邏輯地址 3, OB86診斷 OB86是機架故障組織塊。 操作系統(tǒng)在檢測下列故障時會調(diào)用OB86: ·當中央擴展機架(非S7-300)故障。 ·PROFIBUS-DP主站系統(tǒng)故障。 ·分布式I/O 中(PROFINET IO/PROFIBUS DP)站故障。 ·禁止一個站(PROFINET IO/PROFIBUS DP)使用SFC12”D_ACT_DP”模式4時。 ·使能一個站(PROFINET IO/PROFIBUS DP)使用SFC12”D_ACT_DP”模式3時。 當CPU檢測到故障時,發(fā)出中斷請求給CPU,操作系統(tǒng)調(diào)用OB86。如果沒有下載OB86到PLC中,那么PLC會停機。 下面舉一個PN IO站丟失的例子,這是一種常見的故障,可能由于連接斷開而導致某些IO站無法連接到IO控制器上,通過OB86的簡單編程用戶可以得到相應站的基本信息。 例子程序如下:
通過上述簡單的程序?qū)嵗?,得出機架故障的分布式IO的設(shè)備號Device number,確定拿一個設(shè)備連接斷開。當某一設(shè)備發(fā)生機架故障來Incoming事件時,得出該設(shè)備號碼。但是如果IO設(shè)備串聯(lián)在一起,前面的設(shè)備丟站導致后面的設(shè)備也丟失,簡單編程獲取站號只有會有一個站的信息,無法表示多個設(shè)備掉站。通過編程使用左移指令左移位bit的方式,但是需要給MD10設(shè)置初始值16#1,目的就是保證末位為1,這樣偏移后可以知道該位1的移動位置,然后通過站號存儲地址DB1.DBD0進行“或”運算,這樣DB1.DBD0相應的位就置1,從而當多個設(shè)備掉站DB1.DBD0相應的位會置1。例如DB1.DBD0低字節(jié)為2#00000110時,表示設(shè)備號1(bit1)和2(Bit2)掉站,Bit0位0保持不變。這樣最多可以獲取63個設(shè)備掉站信息(63設(shè)備編號需要<64), 對于一般應用是足夠的。最后還要給MD10設(shè)置初始值,以保證最后一位Bit0為1。這些Bit變量可以編寫在WinCC/WinCC flexible中進行顯示,方便用戶維護現(xiàn)場故障。 |
|