西門子數(shù)控面板840D花屏有時死機維修
西門子S7-300/400循環(huán)中斷組織塊
循環(huán)中斷組織塊用于按一定的時間間隔循環(huán)執(zhí)行中斷程序,例如周期性地定時執(zhí)行閉環(huán)控制系統(tǒng)的PID運算程序,間隔時間從STOP切換到RUN模式時開始計算。
時間間隔不能小于5ms。如果時間間隔過短,還沒有執(zhí)行完循環(huán)中斷程序又開始調(diào)用它,將會產(chǎn)生時間錯誤事件,調(diào)用OB80。如果沒有創(chuàng)建和下載OB80,CPU將進入STOP模式。
循環(huán)中斷組織塊OB30~ OB38默認的時間間隔和中斷優(yōu)先級見表6-5,用戶可以通過參數(shù)設(shè)置來改變優(yōu)先級。CPU 316及以下的CPU只能使用OB35,其余的CPU可以使用的循環(huán)中斷OB的個數(shù)與CPU的型號有關(guān)。
表6-5 循環(huán)OB的默認參數(shù)
如果兩個OB的時間間隔成整倍數(shù),不同的循環(huán)中斷OB可能同時請求中斷,造成處理循環(huán)中斷OB的時間超過的循環(huán)時間。為了避免出現(xiàn)這樣的錯誤,S7-400的每個循環(huán)中斷組織塊可以定義一個相位偏移,用于在循環(huán)時間間隔到達時,延時一定的時間后再執(zhí)行循環(huán)中斷。相位偏移m的單位為ms,應有0≤m<n,式中n為循環(huán)的時間間隔。
假設(shè)OB38和OB37的中斷時間間隔分別為10ms和20ms,它們的相位偏移分別為0ms和3ms。OB38分別在t=10ms、20ms、……60ms時產(chǎn)生中斷,而OB37分別在t=23ms、43ms、63ms時產(chǎn)生中斷。
沒有的SFC來激活和禁止循環(huán)中斷,可以用SFC 40和SFC 39來激活和禁止它們。SFC 40“EN INT”是用于激活新的中斷和異步錯誤的系統(tǒng)功能,其參數(shù)MODE為0時激活所有的中斷和異步錯誤,為1時激活部分中斷和錯誤,為2時激活的OB編號對應的中斷和異步錯誤。SFC 39“DIS_INT”是禁止新的中斷和異步錯誤的系統(tǒng)功能,MODE為2時禁止的OB編號對應的中斷和異步錯誤,MODE必須用十六進制數(shù)來設(shè)置。

【例6-4】 在I0.0的上升沿時啟動OB35對應的循環(huán)中斷,在I0.1的上升沿禁止OB35對應的循環(huán)中斷,在OB35中使MW2加1。
在STEP 7中生成名為“OB35例程”的項目(見隨書光盤中的同名例程)。選用CPU 312C,在硬件組態(tài)工具中打開CPU屬性的組態(tài)窗口,由“周期性中斷”選項卡可知只能使用OB35,其循環(huán)周期的默認值為100ms,將它修改為1000ms,將組態(tài)數(shù)據(jù)下載到CPU中。如果沒有下載,循環(huán)周期為默認值100ms。下面是用STL編寫的OB1的程序代碼:程序段1:在I0.0的上升沿激活循環(huán)中斷
A 1 0.0
FP M 1.1
JNB m001 //不是I0.0的上升沿時跳轉(zhuǎn)
CALL “EN_IRT” //激活OB35對應的循環(huán)中斷
MODE :=B#16#2 //用OB編號中斷
OB_NR :=35 //組織塊編號
RET_VAL:=MW100 //保存執(zhí)行時可能出現(xiàn)的錯誤代碼,為0時無錯誤
m001: NOP 0
程序段2:在I0.1的上升沿禁止循環(huán)中斷
A I 0.1
FP M 1.2
JNB m002 //不是I0.1的上升沿時跳轉(zhuǎn)
CALL “DIS_IRT” //禁止OB35對應的循環(huán)中斷
MODE :=B#16#2 //用OB編號中斷
OB_NR :=35 //組織塊編號
RET_VAL :=MW104 //保存執(zhí)行時可能出現(xiàn)的錯誤代碼,為0時無錯誤
m002: NOP 0
下面是用STL編寫的OB35中斷程序,每經(jīng)過1000ms,MW2被加1一次:
LMW 2 //MW2加1
+ 1
TMW 2

可以用PLCSIM仿真軟件模擬運行上述例程,將程序和硬件組態(tài)參數(shù)下載到仿真PLC,進入RUN模式后,可以看到每秒鐘MW2的值加1。用鼠標模擬產(chǎn)生I0.1的脈沖,循環(huán)中斷被禁止,MW2停止加1。用鼠標模擬產(chǎn)生I0.0的脈沖,循環(huán)中斷被激活,MW2又開始加1。
PLC中的普通定時器的工作與掃描工作方式有關(guān),其定時精度受到不斷變化的循環(huán)周期的影響。延時中斷組織塊的延遲時間為1~60000ms,延時精度為1ms,優(yōu)于定時器的精度。
S7提供了4個延時中斷OB( OB20~ OB23),它們用SFC 32“SRT_DINT”啟動,延時時間在SFC 32中設(shè)置,啟動后經(jīng)過設(shè)定的延時時間之后觸發(fā)中斷,調(diào)用SFC 32的OB。需要延時執(zhí)行的操作放在OB中,例如立即輸出一個數(shù)字量信號。必須將延時中斷OB作為用戶程序的一部分下載到CPU。
CPU 316及以下的CPU只能使用OB20,其他CPU可以使用的日期時間中斷OB的個數(shù)與CPU的型號有關(guān)。
如果延時中斷已被啟動,延時時間還沒有到達,可以用SFC 33“CAN_DINT”取消延時中斷的執(zhí)行。SFC 34“QRY DINT”用來查詢延時中斷的狀態(tài)字STATUS。
如果有下列任何一種情況發(fā)生,操作系統(tǒng)將會調(diào)用異步錯誤OB:
1) OB已經(jīng)被SFC 32啟動,但是沒有下載到CPU。
2)延時中斷OB正在執(zhí)行延時,又有一個延時中斷OB被啟動。
【例6-3】 在主程序OB1中實現(xiàn)下列功能:
1)在I0.0的上升沿用SFC 32啟動延時中斷OB20,10s后OB20被調(diào)用,在OB20中將Q4.0置位,并立即輸出。I0.2為1時Q4.0被復位。
2)在延時過程中如果I0.1由0變?yōu)?/span>1,用SFC 33取消延時中斷,停止調(diào)用OB20。
項目的名稱為“OB20例程”(見隨書光盤中的同名例程)。下面是OB1中的程序代碼:程序段1:在I0.0的上升沿啟動延時中斷
A I 0.0
FP M 1.0
JNB m001 //不是I0.0的上升沿時跳轉(zhuǎn)
CALL “SRT_DINT” //啟動延時中斷OB20
OB_NR :=20 //組織塊編號
DTIME :=T#10S //延時時間為10s
SIGN :=MW12 //保存延時中斷是否啟動的標志
RET_VAL :=MW100 //保存執(zhí)行時可能出現(xiàn)的錯誤代碼,為0時無錯誤
m001: NOP 0
程序段2:查詢延時中斷
CALL“QRY_DINT" //調(diào)用SFC 34,查詢延時中斷OB20的狀態(tài)
OB_NR :=20 //組織塊編號
RET_VAL :=MW102 //保存執(zhí)行時可能出現(xiàn)的錯誤代碼,為0時無錯誤
STATUS :=MW4 //保存延時中斷的狀態(tài)字,MB5為低字節(jié)程序段3:在10.1的上升沿取消延時中斷
A 1 0.1
FP M 1.1 //I0.1的上升沿檢測
A M5.2 //延時中斷未被激活或已完成(狀態(tài)字第2位為0)時跳轉(zhuǎn)
JNB m002
CALL “CAN_DINT” //調(diào)用SFC 33禁止OB20延時中斷
OB_NR :=20 //組織塊編號

RET_VAL :=MW104 //保存執(zhí)行時可能出現(xiàn)的錯誤代碼,為0時無錯誤
m002: NOP 0
A 1 0.2
R Q 4.0 //0.2為“1”時復位Q4.0
下面是用STL編寫的OB20的程序代碼:
SET
= Q 4.0 //將Q4.0無條件置位
LQW 4
TPQW 4 //立即輸出Q4.0
可以用PLCSIM仿真軟件模擬運行上述例程,運行時監(jiān)視M5.2和M5.4。將程序下載到仿真PLC,進入RUN模式時,M5.4馬上變?yōu)?/span>1狀態(tài),表示OB20已經(jīng)下載到了CPU中。用I0.0啟動延時中斷后,M5.2變?yōu)?/span>1狀態(tài),延時時間到時Q4.0變?yōu)?/span>1狀態(tài),M5.2變?yōu)?/span>0狀態(tài)。在延時過程中用I0.1禁止OB20延時,M5.2也會變?yōu)?/span>0狀態(tài)。可以用I0.2復位Q4.0。
西門子數(shù)控面板840D花屏有時死機維修