OB组织块介绍
1、自由循環組織塊OB1
S7 CPU啟動完成后,操作系統循環執行OB1,OB1執行完成后,操作系統再次啟動OB1。在OB1中可以調用FB、SFB、FC、SFC等用戶程序使其循環執行。除OB90以外,OB1優先級最低,可以被其他OB中斷。OB1默認掃描監控時間為150ms(可設置),掃描超時,CPU自動調用)B80報錯,如果程序中沒有建立OB80,CPU進入停止模式。
2、日期中斷組織塊OB10~OB17
在CPU屬性中,可以設置日期中斷組織塊OB10~OB17觸發的日期、執行模式(到達設定的觸發日期后,OB只執行一次或按每分、每小時、每周、每月周期執行)等參數,當CPU的日期值大于設定的日期值時,觸發相應的OB并按設定的模式執行。在用戶程序中也可以通過調用SFC28系統函數設定CPU日期中斷的參數,調用SFC30激活日期中斷投入運行,與在CPU屬性中的設置相比,通過用戶程序,可以在CPU運行時靈活地修改設定的參數,兩種方式可以任意選擇,也可以同時對一個OB進行設置。
3、時間延遲中斷組織塊OB20~OB23
時間延遲中斷組織塊OB20OB23的優先級及更新過程映像區的參數需要在CPU屬性中設置,通過調用系統函數SFC32觸發執行,OB號及延遲時間在SFC32參數中設定,延遲時間為160000ms,大大優于定時器精度。
4、循環中斷組織塊OB30~OB38
循環中斷組織塊OB30OB38按設定的時間間隔循環執行,循環中斷的間隔時間在CPU屬性中設定,每一個OB默認的時間間隔不同,例如)B35默認的時間間隔為100ms,在OB35中的用程序將每隔100ms調用一次,時間間隔可以自由設定,最小時間間隔不能小于55ms。OB中的用戶程序執行時間必須小于設定的時間間隔,如果間隔時間較短,由于循環中斷OB沒有完成程序掃描而被再次調用,從而造成CPU故障,觸發OB80報錯,如果程序中沒有創建OB80,CPU進入停止模式。通過調用SFC39SFC42系統函數可以禁止、延遲、使能循環中斷的調用。循環中斷組織塊通常處理需要固定掃描周期的用戶程序,例如PID函數塊通常需在循環中斷中調用以處理積分時間的計算。
5、硬件中斷組織塊OB40~OB47
硬件中斷也叫過程中斷,由外部設備產生,例如功能模塊FM、通信處理器CP及數字量輸入、輸出模塊等。通常使用具有硬件中斷的數字量輸入模塊觸發中斷響應,然后為每一個模塊配置相應的中斷OB(一個模塊只能良一個中斷OB,S7-300系列PLC CPU只能觸發硬件中斷OB40),在模塊配置中可以選擇輸入點的上升沿、下降沿或全部作為觸發中斷OB的事件。配置中的中斷事件出現,中斷主程序,執行中斷OB中的用戶程序一個周期,然后跳回中斷處繼續執行主程序。使用中斷與普通輸入信號相比,沒有主程序掃描和過程映像區更新時間,適合需要快速響應的應用。
如果輸入模塊中的一個通道觸發硬件中斷,操作系統將識別模塊的槽號及觸發相應的OB,中斷OB執行之后發送與通道相關的確認。在識別和確認過程中,該通道再次觸發的中斷事件將丟失;如果模塊其他通道觸發中斷事件,中斷不會丟失,在當前正在運行的中斷確認之后觸發;如果是不同的模塊觸發的中斷事件,中斷請求被記錄,中斷OB在空閑(沒有模塊其他通道的中斷請求)時觸發。通過調用SFC39~SFC42系統函數可以禁止、延遲、使能硬件中斷的調用。
6、DPV1中斷組織塊OB55~OB57
CPU響應PROFIBUS-DP V1從站觸發的中斷信息。
7、多處理器中斷組織塊OB60
用于S7-400系列PLC多CPU(一個機架中最多插入4個CPU完成同一個復雜任務)處理功能,通過調用SFC35,可以觸發OB60在多個CPU中同時執行。
8、時鐘同步中斷組織塊OB61~OB64
用于處理PROFIBUS-DP V1等時鐘同步,從采集各個從站的輸入到邏輯結果輸出,需要經過從站輸入信號采樣循環(信號轉換)、從站背板總線循環(轉換的信號從模塊傳遞到從站接口)、PROFIBUS-DP總線循環(信號自從站傳遞到主站)、程序執行循環(信號的程序處理)、PROFIBUS-DP總線循環(信號從主站傳遞到從站)、從站背板總線循環(信號從從站接口傳遞到輸出柜塊)及模塊輸出循環(信號轉換)7個循環,時鐘同步中斷將7個循環同步,優化數據的傳遞并保證PROFIBUS-DP各個從站數據處理的同步性。PROFIBUS時鐘同步中斷只能用于S7-400系列PLC CPU(具有DP V2 功能)。
9、工藝同步處理中斷組織塊OB65
用于T-CPU(具有運動控制功能的CPU)工藝塊與開始程序的同步處理。
10、冗余故障中斷組織塊OB70、OB72
用于S7-400H冗余系統,當I/O冗余故障,例如冗余的PROFIBUS-DP從站故障時,觸發OB70的調用,當CPU冗余故障,如CPU切換、同步故障時,觸發OB72的調用。如果I/O冗余,或者CPU冗余故障而在CPU中沒有創建OB70、OB72,CPU不會進入停止模式。
11、異步故障中斷組織塊OB80~OB87
異步故障中斷用于處理各種故障事件。
OB80:處理時間故障、CIR(Configuration In Run)后的重新運行等功能,例如OB1或OB35運行超時,CPU自動調用OB80報錯,如果程序中沒有創建OB80,CPU進入停止模式。
OB81:處理與電源相關的各種信息(S7-400系列PLC CPU只有電池故障時調用),出現故障,CPU自動調用OB81報錯,如果程序中沒有創建OB81,CPU不會進入停止模式。
OB82:診斷中斷,如果使能一個具有診斷中斷模塊的診斷功能(例如斷線、傳感器電源丟失),出現故障時調用OB82,如果程序中沒有創建OB82,CPU進入停止模式。診斷中斷還對CPU所有內外部故障,包括模塊前連接器拔出、硬件中斷丟失等作出響應。
OB83:用于模塊插拔事件的中斷處理,事件出現,CPU自動調用OB83報警,如果程序中沒有創建OB83,CPU進入停止模式。
OB84:用于處理存儲器、冗余系統中兩個CPU的冗余連接性能降低等事件。OB85:用于處理操作系統訪問模塊故障、更新過程映像區時I/O訪問故障、事件觸發但相應的OB沒有下載到CPU等事件,事件出現,CPU自動調用OB85報錯,如果程序中沒創建OB85,CPU進入停止模式。
OB86:用于處理擴展機架(不適用于S7-300系列)、PROFIBUS-DP主站、PROFIBUS-DP或PROFINET I/O分布I/O系統中站點故障等事件,事件出現,CPU自動調用OB86報錯,如果程序中沒有創建,CPU進入停止模式。
OB87:用于處理MPI GD 通信及時鐘同步故障,事件出現,CPU自動調用OB87報錯,如果程序中沒有創建,CPU不會進入停止模式。
12、處理中斷組織塊OB88
用于處理程序嵌套、區域數據分配故障,故障出現,CPU自動調用OB88報錯,如果程序中沒有創建,CPU進入停止模式。
13、背景循環中斷組織塊OB90
優先級最低,保證CPU最短的掃描時間,避免過程映像區更新過于頻繁。程序的下載和CPU中程序的刪除觸發OB90的調用。只能用于S7-400系列PLC CPU。
14、啟動中斷組織塊OB100~OB102
用于處理CPU啟動事件,暖啟動CPU調用OB100,熱啟動CPU調用OB101(不適合S7-300系列PLC和S7-400H),冷啟動CPU調用OB102,溫度越低,CPU啟動時清除存儲器中數據區的類型越多。
15、同步錯誤中斷組織塊OB121、OB122
OB121處理與編程故障有關的事件,例如調用的函數沒有下載到CPU中、BCD碼出錯等,OB122處理與I/O地址訪問故障有關的事件,例如訪問一個I/O模塊時,出現讀故障等。如果上述故障出現,在程序中沒有創建OB121、OB122,CP進入停止模式。
注意:不是所有的OB都可以在S7 CPU中使用,例如S7-300系列PLC PU中只有暖啟動OB100,操作系統不能調用OB101、OB102,CPU中可以使用的OB請參考CPU選型手冊。
S7-300系列PLC中組織塊的優先級是固定的,不能修改,在S7-400系列PLC中下列組織塊的優先級可以進行修改:
OB10OB47:優先級修改范圍223。
OB70OB72:優先級修改范圍238。
OB81OB87:優先級修改范圍226,優先級24~26確保異步故障中斷不被其他的事件中斷。
幾個組織塊可以具有相同的優先級,當事件同時出現時,組織塊按事件出現的先后順序觸發,如果超過12個相同優先級的OB同進觸發,中斷可能丟失。
能夠使S7-300/400 plc停機的原因有哪些
能夠使plc停機的原因有哪些
使CPU進入stop的情況很多,比如地址調用錯誤,沒有下載需要DB塊,編程錯誤等等,如果你想避免錯誤時不使CPU進入停止狀態,你可以在程序中加入特殊的OB塊,則出現相應問題,調用相應的OB塊,雖然里面沒程序,PLC將對錯誤錯誤不作任何處理,繼續運行。否則PLC將進入停機狀態可,比如:
OB73通訊冗余出錯OB
當容錯S7連接中發生首次冗余丟失時,H CPU的操作系統將調用OB73(只有在S7通訊中才會有容錯S7連接。更多信息,請參見“S7-400 H可編程控制器,容錯系統。”)。如果其它容錯S7連接發生了冗余丟失,則不會再有OB73啟動。直到為具有容錯功能的所有S7連接恢復冗余后,才會出現另一個OB73啟動。如果發生了啟動事件且OB73沒有編程,CPU不會轉為STOP模式。
OB80時間出錯組織塊
無論何時執行OB時出錯,S7-300 CPU的操作系統將調用OB80。此類錯誤包括:
超出周期時間、執行OB時出現確認錯誤、提前了時間而使OB的啟動時間被跳過、在CiR后恢復RUN模式。例如,如果在上一次調用之后發生了某一周期性中斷OB的啟動事件,而同一OB此時仍在執行中,則操作系統將調用OB80。如果OB80尚未編程,則CPU將轉為STOP模式??梢允褂肧FC39至42禁用或延遲和重新啟用時間出錯OB。
OB81電源出錯組織塊
只要發生由錯誤或故障所觸發的事件,而此錯誤或故障又與電源(僅在S7-400上)或備用電池(當事件進入和離開時)有關,則S7-300 CPU的操作系統調用OB81。在S7-400中,如果已使用BATT.INDIC開關激活了電池測試功能,則只有在出現電池故障時才會調用OB81。如果OB81沒有編程,則CPU不會轉為STOP模式??梢允褂肧FC39至42禁用或延遲,并重新啟用電源出錯OB。
OB82診斷中斷組織塊
如果具有診斷功能的模塊(已為其啟用了診斷中斷)檢測到錯誤,則它會輸出一個診斷中斷的請求給CPU(當事件進入和離開時)。則操作系統調用OB82。OB82的局部變量包含邏輯基址和四字節的故障模塊的診斷數據(請參見下表)。如果OB82尚未編程,則CPU轉為STOP模式。可以使用SFC39至42禁用或延遲,并重新啟用診斷中斷OB。
OB83插入/刪除模塊中斷組織塊
在下列情況下,CPU操作系統會調用OB83:
? 插入/刪除已組態模塊后
? 在STEP 7下修改模塊參數以及在運行期間將更改下載至CPU后
可借助SFC39至42禁用/延遲/啟用插入/刪除中斷OB。
OB84 CPU硬件故障組織塊
在下列情況下,CPU中的OS將調用OB84:
? 已檢測到并更正了內存出錯之后
? 對于S7-400H:如果兩個CPU之間的冗余鏈接的性能下降
可以使用SFC39至42禁用或延遲CPU硬件出錯OB,然后再次啟用它。
OB85優先級出錯組織塊
只要發生下列事件之一,CPU的操作系統即調用OB85:
? 尚未裝載的OB(OB81除外)的啟動事件。
? 操作系統訪問模塊時出錯。
? 在系統更新過程映像期間出現I/O訪問錯誤(如果由于組態原因,未禁止OB85的調用)。
OB86機架故障組織塊
只要在分布式I/O (PROFIBUS DP或PROFInet IO)中檢測到中央擴展機架(不帶S7-300)、DP主站系統或站故障(進入事件與離開事件時),CPU的操作系統調用OB86。如果OB86尚未編程,當檢測到此種類型的出錯時,CPU將轉為STOP模式??墒褂肧FC39至42禁用或延遲,并重新啟用OB86。
OB87通訊出錯組織塊
只要發生由通訊出錯導致的事件,CPU的操作系統就會調用OB87。如果OB87尚未編程,CPU不會轉為STOP模式。可以使用SFC39至42禁用或延遲,并重新啟用通訊出錯OB。
OB88處理中斷OB
程序塊執行被中止后,CPU操作系統將調用OB88。導致此中斷的原因可能是:
? 同步出錯的嵌套深度過大
? 塊調用(U堆棧)的嵌套深度過大
? 分配本地數據時出錯
如果未對OB88編程且程序塊執行被中止,則CPU進入STOP模式(事件ID W#16#4570)。如果在優先級28下中止了程序塊執行,則CPU進入STOP模式??山柚赟FC39至42禁用、延遲和啟用處理中斷OB。
OB121編程出錯組織塊
只要發生同程序處理相關的錯誤所導致的事件,CPU的操作系統即調用OB121。例如,如果用戶程序調用了尚未裝載到CPU中的塊,將會調用OB121。
OB122I/O訪問出錯組織塊
只要在訪問模塊上的數據時出錯,CPU的操作系統即調用OB122。例如,如果在訪問I/O模塊上的數據時,CPU檢測到讀取錯誤,操作系統將調用OB122。
總結
- 上一篇: MATLAB 2018
- 下一篇: Spring Cloud 尚硅谷阳哥学习