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