每種類型的OB塊的分析及其使用方法:
1、自由循環(huán)組織塊OB1
S7 CPU啟動(dòng)完成后,操作系統(tǒng)循環(huán)執(zhí)行OB1,OB1執(zhí)行完成后,操作系統(tǒng)再次啟動(dòng)OB1。在OB1中可以調(diào)用FB、SFB、FC、SFC等用戶程序使其循環(huán)執(zhí)行。除OB90以外,OB1優(yōu)先級(jí)最低,可以被其他OB中斷。OB1默認(rèn)掃描監(jiān)控時(shí)間為150ms(可設(shè)置),掃描超時(shí),CPU自動(dòng)調(diào)用)B80報(bào)錯(cuò),如果程序中沒有建立OB80,CPU進(jìn)入停止模式。
2、日期中斷組織塊OB10~OB17
在CPU屬性中,可以設(shè)置日期中斷組織塊OB10~OB17觸發(fā)的日期、執(zhí)行模式(到達(dá)設(shè)定的觸發(fā)日期后,OB只執(zhí)行一次或按每分、每小時(shí)、每周、每月周期執(zhí)行)等參數(shù),當(dāng)CPU的日期值大于設(shè)定的日期值時(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è)定的參數(shù),兩種方式可以任意選擇,也可以同時(shí)對(duì)一個(gè)OB進(jìn)行設(shè)置。
3、時(shí)間延遲中斷組織塊OB20~OB23
時(shí)間延遲中斷組織塊OB20~OB23的優(yōu)先級(jí)及更新過程映像區(qū)的參數(shù)需要在CPU屬性中設(shè)置,通過調(diào)用系統(tǒng)函數(shù)SFC32觸發(fā)執(zhí)行,OB號(hào)及延遲時(shí)間在SFC32參數(shù)中設(shè)定,延遲時(shí)間為1~60000ms,大大優(yōu)于定時(shí)器精度。
4、循環(huán)中斷組織塊OB30~OB38
循環(huán)中斷組織塊OB30~OB38按設(shè)定的時(shí)間間隔循環(huán)執(zhí)行,循環(huán)中斷的間隔時(shí)間在CPU屬性中設(shè)定,每一個(gè)OB默認(rèn)的時(shí)間間隔不同,例如)B35默認(rèn)的時(shí)間間隔為100ms,在OB35中的用程序?qū)⒚扛?00ms調(diào)用一次,時(shí)間間隔可以自由設(shè)定,最小時(shí)間間隔不能小于55ms。OB中的用戶程序執(zhí)行時(shí)間必須小于設(shè)定的時(shí)間間隔,如果間隔時(shí)間較短,由于循環(huán)中斷OB沒有完成程序掃描而被再次調(diào)用,從而造成CPU故障,觸發(fā)OB80報(bào)錯(cuò),如果程序中沒有創(chuàng)建OB80,CPU進(jìn)入停止模式。通過調(diào)用SFC39~SFC42系統(tǒng)函數(shù)可以禁止、延遲、使能循環(huán)中斷的調(diào)用。循環(huán)中斷組織塊通常處理需要固定掃描周期的用戶程序,例如PID函數(shù)塊通常需在循環(huán)中斷中調(diào)用以處理積分時(shí)間的計(jì)算。
5、硬件中斷組織塊OB40~OB47
硬件中斷也叫過程中斷,由外部設(shè)備產(chǎn)生,例如功能模塊FM、通信處理器CP及數(shù)字量輸入、輸出模塊等。通常使用具有硬件中斷的數(shù)字量輸入模塊觸發(fā)中斷響應(yīng),然后為每一個(gè)模塊配置相應(yīng)的中斷OB(一個(gè)模塊只能良一個(gè)中斷OB,S7-300系列plc CPU只能觸發(fā)硬件中斷OB40),在模塊配置中可以選擇輸入點(diǎn)的上升沿、下降沿或全部作為觸發(fā)中斷OB的事件。配置中的中斷事件出現(xiàn),中斷主程序,執(zhí)行中斷OB中的用戶程序一個(gè)周期,然后跳回中斷處繼續(xù)執(zhí)行主程序。使用中斷與普通輸入信號(hào)相比,沒有主程序掃描和過程映像區(qū)更新時(shí)間,適合需要快速響應(yīng)的應(yīng)用。
如果輸入模塊中的一個(gè)通道觸發(fā)硬件中斷,操作系統(tǒng)將識(shí)別模塊的槽號(hào)及觸發(fā)相應(yīng)的OB,中斷OB執(zhí)行之后發(fā)送與通道相關(guān)的確認(rèn)。在識(shí)別和確認(rèn)過程中,該通道再次觸發(fā)的中斷事件將丟失;如果模塊其他通道觸發(fā)中斷事件,中斷不會(huì)丟失,在當(dāng)前正在運(yùn)行的中斷確認(rèn)之后觸發(fā);如果是不同的模塊觸發(fā)的中斷事件,中斷請(qǐng)求被記錄,中斷OB在空閑(沒有模塊其他通道的中斷請(qǐng)求)時(shí)觸發(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(一個(gè)機(jī)架中最多插入4個(gè)CPU完成同一個(gè)復(fù)雜任務(wù))處理功能,通過調(diào)用SFC35,可以觸發(fā)OB60在多個(gè)CPU中同時(shí)執(zhí)行。
8、時(shí)鐘同步中斷組織塊OB61~OB64
用于處理PROFIBUS-DP V1等時(shí)鐘同步,從采集各個(gè)從站的輸入到邏輯結(jié)果輸出,需要經(jīng)過從站輸入信號(hào)采樣循環(huán)(信號(hào)轉(zhuǎn)換)、從站背板總線循環(huán)(轉(zhuǎn)換的信號(hào)從模塊傳遞到從站接口)、PROFIBUS-DP總線循環(huán)(信號(hào)自從站傳遞到主站)、程序執(zhí)行循環(huán)(信號(hào)的程序處理)、PROFIBUS-DP總線循環(huán)(信號(hào)從主站傳遞到從站)、從站背板總線循環(huán)(信號(hào)從從站接口傳遞到輸出柜塊)及模塊輸出循環(huán)(信號(hào)轉(zhuǎn)換)7個(gè)循環(huán),時(shí)鐘同步中斷將7個(gè)循環(huán)同步,優(yōu)化數(shù)據(jù)的傳遞并保證PROFIBUS-DP各個(gè)從站數(shù)據(jù)處理的同步性。PROFIBUS時(shí)鐘同步中斷只能用于S7-400系列PLC CPU(具有DP V2 功能)。
9、工藝同步處理中斷組織塊OB65
用于T-CPU(具有運(yùn)動(dòng)控制功能的CPU)工藝塊與開始程序的同步處理。
10、冗余故障中斷組織塊OB70、OB72
用于S7-400H冗余系統(tǒng),當(dāng)I/O冗余故障,例如冗余的PROFIBUS-DP從站故障時(shí),觸發(fā)OB70的調(diào)用,當(dāng)CPU冗余故障,如CPU切換、同步故障時(shí),觸發(fā)OB72的調(diào)用。如果I/O冗余,或者CPU冗余故障而在CPU中沒有創(chuàng)建OB70、OB72,CPU不會(huì)進(jìn)入停止模式。
11、異步故障中斷組織塊OB80~OB87
異步故障中斷用于處理各種故障事件。
OB80:處理時(shí)間故障、CIR(Configuration In Run)后的重新運(yùn)行等功能,例如OB1或OB35運(yùn)行超時(shí),CPU自動(dòng)調(diào)用OB80報(bào)錯(cuò),如果程序中沒有創(chuàng)建OB80,CPU進(jìn)入停止模式。
OB81:處理與電源相關(guān)的各種信息(S7-400系列PLC CPU只有電池故障時(shí)調(diào)用),出現(xiàn)故障,CPU自動(dòng)調(diào)用OB81報(bào)錯(cuò),如果程序中沒有創(chuàng)建OB81,CPU不會(huì)進(jìn)入停止模式。
OB82:診斷中斷,如果使能一個(gè)具有診斷中斷模塊的診斷功能(例如斷線、傳感器電源丟失),出現(xiàn)故障時(shí)調(diào)用OB82,如果程序中沒有創(chuàng)建OB82,CPU進(jìn)入停止模式。診斷中斷還對(duì)CPU所有內(nèi)外部故障,包括模塊前連接器拔出、硬件中斷丟失等作出響應(yīng)。
OB83:用于模塊插拔事件的中斷處理,事件出現(xiàn),CPU自動(dòng)調(diào)用OB83報(bào)警,如果程序中沒有創(chuàng)建OB83,CPU進(jìn)入停止模式。
OB84:用于處理存儲(chǔ)器、冗余系統(tǒng)中兩個(gè)CPU的冗余連接性能降低等事件。
OB85:用于處理操作系統(tǒng)訪問模塊故障、更新過程映像區(qū)時(shí)I/O訪問故障、事件觸發(fā)但相應(yīng)的OB沒有下載到CPU等事件,事件出現(xiàn),CPU自動(dòng)調(diào)用OB85報(bào)錯(cuò),如果程序中沒創(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自動(dòng)調(diào)用OB86報(bào)錯(cuò),如果程序中沒有創(chuàng)建,CPU進(jìn)入停止模式。
OB87:用于處理MPI GD 通信及時(shí)鐘同步故障,事件出現(xiàn),CPU自動(dòng)調(diào)用OB87報(bào)錯(cuò),如果程序中沒有創(chuàng)建,CPU不會(huì)進(jìn)入停止模式。
12、處理中斷組織塊OB88
用于處理程序嵌套、區(qū)域數(shù)據(jù)分配故障,故障出現(xiàn),CPU自動(dòng)調(diào)用OB88報(bào)錯(cuò),如果程序中沒有創(chuàng)建,CPU進(jìn)入停止模式。
13、背景循環(huán)中斷組織塊OB90
優(yōu)先級(jí)最低,保證CPU最短的掃描時(shí)間,避免過程映像區(qū)更新過于頻繁。程序的下載和CPU中程序的刪除觸發(fā)OB90的調(diào)用。只能用于S7-400系列PLC CPU。
14、啟動(dòng)中斷組織塊OB100~OB102
用于處理CPU啟動(dòng)事件,暖啟動(dòng)CPU調(diào)用OB100,熱啟動(dòng)CPU調(diào)用OB101(不適合S7-300系列PLC和S7-400H),冷啟動(dòng)CPU調(diào)用OB102,溫度越低,CPU啟動(dòng)時(shí)清除存儲(chǔ)器中數(shù)據(jù)區(qū)的類型越多。
15、同步錯(cuò)誤中斷組織塊OB121、OB122
OB121處理與編程故障有關(guān)的事件,例如調(diào)用的函數(shù)沒有下載到CPU中、BCD碼出錯(cuò)等,OB122處理與I/O地址訪問故障有關(guān)的事件,例如訪問一個(gè)I/O模塊時(shí),出現(xiàn)讀故障等。如果上述故障出現(xiàn),在程序中沒有創(chuàng)建OB121、OB122,CP進(jìn)入停止模式。
注意:不是所有的OB都可以在S7 CPU中使用,例如S7-300系列PLC PU中只有暖啟動(dòng)OB100,操作系統(tǒng)不能調(diào)用OB101、OB102,CPU中可以使用的OB請(qǐng)參考CPU選型手冊(cè)。
S7-300系列PLC中組織塊的優(yōu)先級(jí)是固定的,不能修改,在S7-400系列PLC中下列組織塊的優(yōu)先級(jí)可以進(jìn)行修改:
OB10~OB47:優(yōu)先級(jí)修改范圍2~23。
OB70~OB72:優(yōu)先級(jí)修改范圍2~38。
OB81~OB87:優(yōu)先級(jí)修改范圍2~26,優(yōu)先級(jí)24~26確保異步故障中斷不被其他的事件中斷。
幾個(gè)組織塊可以具有相同的優(yōu)先級(jí),當(dāng)事件同時(shí)出現(xiàn)時(shí),組織塊按事件出現(xiàn)的先后順序觸發(fā),如果超過12個(gè)相同優(yōu)先級(jí)的OB同進(jìn)觸發(fā),中斷可能丟失。
我們?cè)谑褂孟鄳?yīng)OB時(shí)要注意以下問題。
1.OB只是及時(shí)反應(yīng)出了故障,但并不解決故障,OB允許CPU帶故障運(yùn)行。
2.診斷OB如OB82/86/122反映的是硬件上的故障,靠軟件是解決不了的,軟件的作用是盡快指向故障點(diǎn),硬件的問題還是硬件解決。
3.診斷OB的產(chǎn)生會(huì)影響CPU的整個(gè)程序的執(zhí)行速度,會(huì)影響系統(tǒng)的控制品質(zhì),尤其是一些帶過程中斷,大量運(yùn)算及運(yùn)動(dòng)控制的高速生產(chǎn)線。
4.無條件的讓OB去掩蓋故障是一件很危險(xiǎn)的事情,應(yīng)該有應(yīng)對(duì)的措施,讓系統(tǒng)盡快的進(jìn)入一種可控的安全狀態(tài)。
由于通信的原因,模塊不存在或有故障,刷新過程映像表時(shí)I/O訪問出錯(cuò),將會(huì)調(diào)用優(yōu)先級(jí)錯(cuò)誤中斷(OB85)。
可以在CPU屬性對(duì)話框中設(shè)置3種調(diào)用OB85的方式。S7-300默認(rèn)的方式是不調(diào)用OB85,S7-400默認(rèn)的方式是每個(gè)掃描循環(huán)周期調(diào)用一次,還可以設(shè)置為故障發(fā)生和消失時(shí)分別調(diào)用一次。
用PI/PQ地址區(qū)訪問有故障的I/O模塊、DP從站時(shí),將會(huì)調(diào)用I/O訪問錯(cuò)誤中斷(OB122),每個(gè)掃描周期調(diào)用一次。
對(duì)于簡(jiǎn)單程序,只涉及到數(shù)字量邏輯控制,只使用OB1就可以了,對(duì)于復(fù)雜程序,使用了DP通訊等等,就需要做一些相應(yīng)功能的組織塊來保證PLC的運(yùn)行正常。
1 OB100啟動(dòng)組織塊,即PLC一通電的第一個(gè)掃描周期就先處理此塊,以后就不掃描了,所以在這個(gè)塊內(nèi)可以做初始化脈沖,復(fù)位一些數(shù)據(jù)。
2 OB122 I/O訪問錯(cuò)誤組織塊,
3 OB121 編程錯(cuò)誤組織塊,這個(gè)塊比較重要,曾經(jīng)遇到一個(gè)德國(guó)進(jìn)口喂料機(jī),使用一段時(shí)間后出現(xiàn)CPU不能運(yùn)行,程序是使用STL編程,使用了很多間接尋址,很難找到問題所在,后來就選擇了這個(gè)組織塊后,CPU運(yùn)行設(shè)備就正常工作了。
4 OB82診斷中斷組織塊,這個(gè)對(duì)于使用模擬量模塊多的項(xiàng)目需要使用這個(gè)塊,否則一旦接入的模擬量信號(hào)出現(xiàn)問題時(shí),CPU停機(jī)就是大事了。
5 OB80 時(shí)間錯(cuò)誤組織塊,包括:超出周期時(shí)間、執(zhí)行OB時(shí)出現(xiàn)確認(rèn)錯(cuò)誤、提前了時(shí)間而使OB的啟動(dòng)時(shí)間被跳過、在CiR后恢復(fù)RUN模式。
6 OB86機(jī)架故障組織塊,對(duì)于使用了DP通訊的分布式I/O需要使用這個(gè)塊。 要想第一時(shí)間找到處故障的子站,需要使用OB86來作為DP故障診斷。需要對(duì)OB86內(nèi)變量做編程處理,使用觸摸屏或其他上位機(jī)來顯示報(bào)警內(nèi)容。
7 OB87通訊錯(cuò)誤組織塊。
組織塊是操作系統(tǒng)與用戶程序的接口,可以從下面幾個(gè)方面來理解:
評(píng)論
查看更多