STEP7 OB組織塊介紹和使用技巧
每種類型的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ò),如果程序中沒(méi)有建立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í)行。在用戶程序中也可以通過(guò)調(diào)用SFC28系統(tǒng)函數(shù)設(shè)定CPU日期中斷的參數(shù),調(diào)用SFC30激活日期中斷投入運(yùn)行,與在CPU屬性中的設(shè)置相比,通過(guò)用戶程序,可以在CPU運(yùn)行時(shí)靈活地修改設(shè)定的參數(shù),兩種方式可以任意選擇,也可以同時(shí)對(duì)一個(gè)OB進(jìn)行設(shè)置。
3.時(shí)間延遲中斷組織塊OB20~OB23
時(shí)間延遲中斷組織塊OB20~OB23的優(yōu)先級(jí)及更新過(guò)程映像區(qū)的參數(shù)需要在CPU屬性中設(shè)置,通過(guò)調(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沒(méi)有完成程序掃描而被再次調(diào)用,從而造成CPU故障,觸發(fā)OB80報(bào)錯(cuò),如果程序中沒(méi)有創(chuàng)建OB80,CPU進(jìn)入停止模式。通過(guò)調(diào)用SFC39~SFC42系統(tǒng)函數(shù)可以禁止、延遲、使能循環(huán)中斷的調(diào)用。循環(huán)中斷組織塊通常處理需要固定掃描周期的用戶程序,例如PID函數(shù)塊通常需在循環(huán)中斷中調(diào)用以處理積分時(shí)間的計(jì)算。
5.硬件中斷組織塊OB40~OB47
硬件中斷也叫過(guò)程中斷,由外部設(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)相比,沒(méi)有主程序掃描和過(guò)程映像區(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)過(guò)程中,該通道再次觸發(fā)的中斷事件將丟失;如果模塊其他通道觸發(fā)中斷事件,中斷不會(huì)丟失,在當(dāng)前正在運(yùn)行的中斷確認(rèn)之后觸發(fā);如果是不同的模塊觸發(fā)的中斷事件,中斷請(qǐng)求被記錄,中斷OB在空閑(沒(méi)有模塊其他通道的中斷請(qǐng)求)時(shí)觸發(fā)。通過(guò)調(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ù))處理功能,通過(guò)調(diào)用SFC35,可以觸發(fā)OB60在多個(gè)CPU中同時(shí)執(zhí)行。
8.時(shí)鐘同步中斷組織塊OB61~OB64
用于處理PROFIBUS-DP V1等時(shí)鐘同步,從采集各個(gè)從站的輸入到邏輯結(jié)果輸出,需要經(jīng)過(guò)從站輸入信號(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)工藝塊與開(kāi)始程序的同步處理。
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中沒(méi)有創(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ò),如果程序中沒(méi)有創(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ò),如果程序中沒(méi)有創(chuàng)建OB81,CPU不會(huì)進(jìn)入停止模式。
OB82:診斷中斷,如果使能一個(gè)具有診斷中斷模塊的診斷功能(例如斷線、傳感器電源丟失),出現(xiàn)故障時(shí)調(diào)用OB82,如果程序中沒(méi)有創(chuàng)建OB82,CPU進(jìn)入停止模式。診斷中斷還對(duì)CPU所有內(nèi)外部故障,包括模塊前連接器拔出、硬件中斷丟失等作出響應(yīng)。
OB83:用于模塊插拔事件的中斷處理,事件出現(xiàn),CPU自動(dòng)調(diào)用OB83報(bào)警,如果程序中沒(méi)有創(chuàng)建OB83,CPU進(jìn)入停止模式。
OB84:用于處理存儲(chǔ)器、冗余系統(tǒng)中兩個(gè)CPU的冗余連接性能降低等事件。
OB85:用于處理操作系統(tǒng)訪問(wèn)模塊故障、更新過(guò)程映像區(qū)時(shí)I/O訪問(wèn)故障、事件觸發(fā)但相應(yīng)的OB沒(méi)有下載到CPU等事件,事件出現(xiàn),CPU自動(dòng)調(diào)用OB85報(bào)錯(cuò),如果程序中沒(méi)創(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ò),如果程序中沒(méi)有創(chuàng)建,CPU進(jìn)入停止模式。
OB87:用于處理MPI GD 通信及時(shí)鐘同步故障,事件出現(xiàn),CPU自動(dòng)調(diào)用OB87報(bào)錯(cuò),如果程序中沒(méi)有創(chuàng)建,CPU不會(huì)進(jìn)入停止模式。
12.處理中斷組織塊OB88
用于處理程序嵌套、區(qū)域數(shù)據(jù)分配故障,故障出現(xiàn),CPU自動(dòng)調(diào)用OB88報(bào)錯(cuò),如果程序中沒(méi)有創(chuàng)建,CPU進(jìn)入停止模式。
13.背景循環(huán)中斷組織塊OB90
優(yōu)先級(jí)最低,保證CPU最短的掃描時(shí)間,避免過(guò)程映像區(qū)更新過(guò)于頻繁。程序的下載和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ù)沒(méi)有下載到CPU中、BCD碼出錯(cuò)等,OB122處理與I/O地址訪問(wèn)故障有關(guān)的事件,例如訪問(wèn)一個(gè)I/O模塊時(shí),出現(xiàn)讀故障等。如果上述故障出現(xiàn),在程序中沒(méi)有創(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ā),如果超過(guò)12個(gè)相同優(yōu)先級(jí)的OB同進(jìn)觸發(fā),中斷可能丟失。
我們?cè)谑褂孟鄳?yīng)OB時(shí)要注意以下問(wèn)題:
1.OB只是及時(shí)反應(yīng)出了故障,但并不解決故障,OB允許CPU帶故障運(yùn)行。
2.診斷OB如OB82/86/122反映的是硬件上的故障,靠軟件是解決不了的,軟件的作用是盡快指向故障點(diǎn),硬件的問(wèn)題還是硬件解決。
3.診斷OB的產(chǎn)生會(huì)影響CPU的整個(gè)程序的執(zhí)行速度,會(huì)影響系統(tǒng)的控制品質(zhì),尤其是一些帶過(guò)程中斷,大量運(yùn)算及運(yùn)動(dòng)控制的高速生產(chǎn)線。
4.無(wú)條件的讓OB去掩蓋故障是一件很危險(xiǎn)的事情,應(yīng)該有應(yīng)對(duì)的措施,讓系統(tǒng)盡快的進(jìn)入一種可控的安全狀態(tài)。
由于通信的原因,模塊不存在或有故障,刷新過(guò)程映像表時(shí)I/O訪問(wèn)出錯(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ū)訪問(wèn)有故障的I/O模塊、DP從站時(shí),將會(huì)調(diào)用I/O訪問(wèn)錯(cuò)誤中斷(OB122),每個(gè)掃描周期調(diào)用一次。
對(duì)于簡(jiǎn)單程序,只涉及到數(shù)字量邏輯控制,只使用OB1就可以了,對(duì)于復(fù)雜程序,使用了DP通訊等等,就需要做一些相應(yīng)功能的組織塊來(lái)保證PLC的運(yùn)行正常。
1 OB100啟動(dòng)組織塊,即PLC一通電的第一個(gè)掃描周期就先處理此塊,以后就不掃描了,所以在這個(gè)塊內(nèi)可以做初始化脈沖,復(fù)位一些數(shù)據(jù)。
2 OB122 I/O訪問(wèn)錯(cuò)誤組織塊,
3 OB121 編程錯(cuò)誤組織塊,這個(gè)塊比較重要,曾經(jīng)遇到一個(gè)德國(guó)進(jìn)口喂料機(jī),使用一段時(shí)間后出現(xiàn)CPU不能運(yùn)行,程序是使用STL編程,使用了很多間接尋址,很難找到問(wèn)題所在,后來(lái)就選擇了這個(gè)組織塊后,CPU運(yùn)行設(shè)備就正常工作了。
4 OB82診斷中斷組織塊,這個(gè)對(duì)于使用模擬量模塊多的項(xiàng)目需要使用這個(gè)塊,否則一旦接入的模擬量信號(hào)出現(xiàn)問(wèn)題時(shí),CPU停機(jī)就是大事了。
5 OB80 時(shí)間錯(cuò)誤組織塊,包括:超出周期時(shí)間、執(zhí)行OB時(shí)出現(xiàn)確認(rèn)錯(cuò)誤、提前了時(shí)間而使OB的啟動(dòng)時(shí)間被跳過(guò)、在CiR后恢復(fù)RUN模式。
6 OB86機(jī)架故障組織塊,對(duì)于使用了DP通訊的分布式I/O需要使用這個(gè)塊。 要想第一時(shí)間找到處故障的子站,需要使用OB86來(lái)作為DP故障診斷.需要對(duì)OB86內(nèi)變量做編程處理,使用觸摸屏或其他上位機(jī)來(lái)顯示報(bào)警內(nèi)容。
7 OB87通訊錯(cuò)誤組織塊。
組織塊是操作系統(tǒng)與用戶程序的接口,可以從下面幾個(gè)方面來(lái)理解:
1. 組織塊不是用戶程序調(diào)用的,而是由操作系統(tǒng)調(diào)用的。其變量聲明表中只有臨時(shí)變量。
2.組織塊分為三類:
啟動(dòng)組織塊用于系統(tǒng)初始化;
主程序OB1是循環(huán)執(zhí)行的;
出現(xiàn)中斷事件時(shí),操作系統(tǒng)將會(huì)停止執(zhí)行當(dāng)前的任務(wù),調(diào)用一個(gè)分配給該事件的組織塊。
3.除了自動(dòng)生成的OB1,其他組織塊需要用戶生成,組織塊中的程序是用戶編寫(xiě)的。
4.每個(gè)組織塊都有20個(gè)字節(jié)的局部變量,其中包含OB的啟動(dòng)信息。這些信息在OB啟動(dòng)時(shí)由操作系統(tǒng)提供,包括啟動(dòng)事件、啟動(dòng)日期與時(shí)間,錯(cuò)誤及診斷事件。
5.中斷的優(yōu)先級(jí)也就是組織塊的優(yōu)先級(jí),如果在執(zhí)行中斷程序(組織塊)時(shí),又檢測(cè)到一個(gè)中斷請(qǐng)求,CPU將比較兩個(gè)中斷源的中斷優(yōu)先級(jí)。如果優(yōu)先級(jí)相同,按照產(chǎn)生中斷請(qǐng)求的先后次序進(jìn)行處理。如果后者的優(yōu)先級(jí)比正在執(zhí)行的OB的優(yōu)先級(jí)高,將中止當(dāng)前正在處理的OB,改為執(zhí)行較高優(yōu)先級(jí)的OB。
下面是優(yōu)先級(jí)的順序(后面的比前面的優(yōu)先):背景循環(huán)、主程序掃描循環(huán)、時(shí)間中斷、時(shí)間延時(shí)中斷、循環(huán)中斷、硬件中斷、多處理器中斷、I/O冗余錯(cuò)誤、異步故障(OB80~87)、啟動(dòng)和CPU冗余,背景循環(huán)的優(yōu)先級(jí)最低??梢杂肧TEP 7修改S7-400 CPU某些組織塊的優(yōu)先級(jí)。
6. 時(shí)間中斷和延時(shí)中斷有專用的允許處理中斷(或稱激活、使能中斷)和禁止中斷的系統(tǒng)功能。
其他組織塊可以用SFC 39“DIS_INT”來(lái)禁止處理某些中斷,用SFC 40“EN_INT”來(lái)激活(使能)被禁止的中斷。
SFC 41“DIS_AIRT”用來(lái)延遲處理比當(dāng)前優(yōu)先級(jí)更高的中斷,直到用SFC 42“EN_ AIRT”來(lái)允許立即處理被SFC 41暫時(shí)禁止的中斷。
ob1:循環(huán)掃描ob,它是沒(méi)有時(shí)間間隔的,執(zhí)行完ob1后就會(huì)再次從頭開(kāi)始執(zhí)行ob1,所以外部輸入的模擬量數(shù)據(jù)轉(zhuǎn)換成工程量的程序在ob1中執(zhí)行,使得數(shù)據(jù)能夠及時(shí)更新。
ob10~ob23:一般很少用到。
ob30~ob38:ob33和ob35是常用的,和時(shí)間有關(guān)的程序一般都是放在這些ob中得,比如利用pid控制的程序塊,要求不是很嚴(yán)格的時(shí)間處理功能,當(dāng)定時(shí)器不夠用的時(shí)候自己編寫(xiě)的類似定時(shí)器的程序塊。
ob100~ob102:這些ob只是在cpu不同的啟動(dòng)模式下啟動(dòng)一次,所有一些初始化的程序可以寫(xiě)在這些ob中。
其他ob就不常用了。
提交
超越傳統(tǒng)直覺(jué),MATLAB/Simulink助力重型機(jī)械的智能化轉(zhuǎn)型
新大陸自動(dòng)識(shí)別精彩亮相2024華南國(guó)際工業(yè)博覽會(huì)
派拓網(wǎng)絡(luò)被Forrester評(píng)為XDR領(lǐng)域領(lǐng)導(dǎo)者
智能工控,存儲(chǔ)強(qiáng)基 | ??低晭?lái)精彩主題演講
展會(huì)|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會(huì)