西門子840D鍵盤按鍵盤斷線失靈維修
西門子S7-400CPU可以使用的日期時(shí)間中斷OB( OB10~OB17)的個(gè)數(shù)與CPU的型號(hào)有關(guān)。CPU 318只能使用OB10和OB11,其余的S7-300 CPU只能使用OB10。
日期時(shí)間中斷OB可以在某一特定的日期和時(shí)間執(zhí)行一次,也可以從設(shè)定的日期時(shí)間開始,周期性地重復(fù)執(zhí)行,例如每分鐘、每小時(shí),每天、甚至每年執(zhí)行一次。可以用SFC 28~SFC 30取消、重新設(shè)置或激活日期時(shí)間中斷。
只有設(shè)置了中斷的參數(shù),并且在相應(yīng)的組織塊中有用戶程序存在,日期時(shí)間中斷才能被執(zhí)行。如果不滿足上述條件,操作系統(tǒng)將會(huì)在診斷緩沖區(qū)中產(chǎn)生一個(gè)錯(cuò)誤信息,并執(zhí)行異步錯(cuò)誤處理。如果設(shè)置從1月31日開始每月執(zhí)行一次OB10,只在有31天的那些月啟動(dòng)它。

日期時(shí)間中斷在PLC暖啟動(dòng)或熱啟動(dòng)時(shí)被激活,而且只能在PLC啟動(dòng)過程結(jié)束之后才能執(zhí)行。暖啟動(dòng)后必須重新設(shè)置日期時(shí)間中斷。
為了啟動(dòng)日期時(shí)間中斷,用戶首先必須設(shè)置日期時(shí)間中斷的參數(shù),然后再激活它。有以下三種方法可以啟動(dòng)日期時(shí)間中斷:
1)在用戶程序中用SFC 28“SET_TINT”和SFC 30“ACT_TINT”設(shè)置和激活日期時(shí)間中斷(見例6-2)。
2)在STEP 7中打開硬件組態(tài)工具,雙擊機(jī)架中CPU模塊所在的行,打開設(shè)置CPU屬性的對(duì)話框,點(diǎn)擊“時(shí)刻中斷”(日期時(shí)間中斷)選項(xiàng)卡(見圖6-20),設(shè)置啟動(dòng)時(shí)間日期中斷的日期和時(shí)間,選中“激活”多選框,在“執(zhí)行”列表框中選擇執(zhí)行方式。將硬件組態(tài)數(shù)據(jù)下載到CPU中,可以實(shí)現(xiàn)日期時(shí)間中斷的自動(dòng)啟動(dòng)。
圖6-20 日期時(shí)間中斷的組態(tài)
3)用上述方法設(shè)置日期時(shí)間中斷的參數(shù),但是不選擇“激活”,而是在用戶程序中用SFC30“ACT_TINT”激活日期時(shí)間中斷。
可以調(diào)用SFC 31“QRY_TINT”,通過狀態(tài)字節(jié)來查詢?cè)O(shè)置了哪些日期時(shí)間中斷,以及這些中斷什么時(shí)候發(fā)生。
SFC 28“SET_TINT”用來設(shè)置日期時(shí)間中斷,參數(shù)“PERIOD”如果為十六進(jìn)制數(shù)W#16#0000、W#16#0201、W#16#0401、W#16#1001、W#16#1201、W#16#1401、W#16#1801和W#16#2001,分別表示執(zhí)行一次、每分鐘、每小時(shí)、每天、每周、每月、每年和月末執(zhí)行一次日期時(shí)間中斷。
可以用SFC 29“CAN_TINT”取消(禁止)日期時(shí)間中斷,用SFC 30“ACT_TINT”重新激活日期時(shí)間中斷。
【例6-2】 在I0.0的上升沿時(shí)啟動(dòng)日期時(shí)間中斷OB10,用I0.1禁止日期時(shí)間中斷,從2008年8月8日8時(shí)開始,每分鐘中斷一次,每次中斷將MW2加1。
在STEP 7中生成項(xiàng)目“OB10例程”。下面是用STL編寫的OB1的程序代碼,它有一個(gè)用戶生成的臨時(shí)局部變量“OUT_TIME_DATE”。
IEC功能D_TOD_TD( FC 3)在程序編輯器左邊窗口的文件夾LibrariesStandard LibraryIEC Function Blocks中。程序段1:查詢OB10的狀態(tài)
CALL“QRY_TINT” //調(diào)用SFC 31,查詢?nèi)掌跁r(shí)間中斷OB10的狀態(tài)
OB NR :=10 //日期時(shí)間中斷OB的編號(hào)
RET_VAL:=MW208 //保存執(zhí)行時(shí)可能出現(xiàn)的錯(cuò)誤代碼,為0時(shí)無錯(cuò)誤
STATUS :=MW16 //保存日期時(shí)間中斷的狀態(tài)字,MB17為低字節(jié)
程序段2:合并日期時(shí)間
CALL “D_TOD_DT” //調(diào)用IEC功能FC 3
IN1 :=D#2008-8-8 //設(shè)置啟動(dòng)中斷的日期
IN2 :=TOD#8:0:0.0 //設(shè)置啟動(dòng)中斷的時(shí)間
RET VAL:=#OUT TIME DATE//將日期和時(shí)間合并
程序段3:在I0.0的上升沿設(shè)置和激活日期時(shí)間中斷
A 1 0.0
FP M 1.0 //檢測I0.0的上升沿
AN M 17.2 //如果日期時(shí)間中斷未被激活,M17.2的常閉觸點(diǎn)閉合
A M17.4 //如果裝載了日期時(shí)間中斷OB,M17.4的常開觸點(diǎn)閉合
JNB m005 //沒有同時(shí)滿足以上3個(gè)條件則跳轉(zhuǎn)
CALL“SET TINT” //同時(shí)滿足則調(diào)用SFC 28,設(shè)置日期時(shí)間中斷參數(shù)
OB NR :=10 //日期時(shí)間中斷OB編號(hào)
SDT :=#OUT_TIME_DATE //啟動(dòng)中斷的時(shí)間,秒和毫秒被省略(置為0)
PERIOD :=W#16#201 /,/設(shè)置產(chǎn)生中斷的周期為每分鐘一次
RET VAL:=MW200 //保存執(zhí)行時(shí)可能出現(xiàn)的錯(cuò)誤代碼,為0時(shí)無錯(cuò)誤
CALL “ACT TINT” //調(diào)用SFC 30,激活日期時(shí)間中斷
OB NR :=10 //日期時(shí)間中斷OB編號(hào)
RET_VAL:=MW204 //保存執(zhí)行時(shí)可能出現(xiàn)的錯(cuò)誤代碼,為0時(shí)無錯(cuò)誤
m005: NOP 0
程序段4:在I0.1的上升沿禁止日期時(shí)間中斷
A 1 0.1
FP M 1.1 //檢測I0.1的上升沿
JNB m004 //不是I0.1的上升沿則跳轉(zhuǎn)

CALL “CAN TINT” //調(diào)用SFC 29,禁止日期時(shí)間中斷
OB NR :=10 //日期時(shí)間中斷OB編號(hào)
RET VAL:=MW210 //保存執(zhí)行時(shí)可能出現(xiàn)的故障代碼,為0時(shí)*
m004: NOP 0
下面是用STL編寫的OB10中斷程序,每分鐘MW2被加1一次。
程序段1:
LMW 2
+ 1
TMW 2
可以用PLCSIM仿真軟件運(yùn)行上述例程,運(yùn)行時(shí)監(jiān)視M 17.2、M 17.4和MW2。M 17.2為1時(shí)表示日期時(shí)間中斷被激活,M17.4為1時(shí)表示已經(jīng)裝載了日期時(shí)間中斷組織塊OB10。用I0.0激活日期時(shí)間中斷,M17.2變?yōu)?/span>1狀態(tài),如果超過設(shè)置的時(shí)間,每分鐘MW2將被加1。用I0.1禁止日期時(shí)間中斷,M17.2變?yōu)?/span>0狀態(tài),MW2停止加1。
組織塊(OB)是操作系統(tǒng)調(diào)用的,OB沒有背景數(shù)據(jù)塊,也不能為OB聲明輸入、輸出變量和靜態(tài)變量,因此OB的變量聲明表中只有臨時(shí)變量。OB的臨時(shí)變量可以是基本數(shù)據(jù)類型、復(fù)合數(shù)據(jù)類型或數(shù)據(jù)類型ANY。
操作系統(tǒng)為所有的OB塊聲明了一個(gè)20B的包含OB的啟動(dòng)信息的變量聲明表(見表6-4),聲明表中變量的具體內(nèi)容與組織塊的類型有關(guān)。用戶可以通過OB的變量聲明表獲得與啟動(dòng)OB的原因有關(guān)的信息。
OB1的局部變量OB1_PREV_CYCLE、OB1 MIN_CYCLE和OB1_MAX_CYCLE分別是上一次、短和長的循環(huán)掃描周期。
日期時(shí)間中斷和延時(shí)中斷有的允許處理中斷(或稱激活、使能中斷)和禁止中斷的系統(tǒng)功能(SFC)。
SFC 39“DIS_INT”用來禁止中斷和異步錯(cuò)誤處理,可以禁止所有的中斷,有選擇地禁止某些優(yōu)先級(jí)范圍的中斷,或者只禁止的某個(gè)中斷。SFC 40“EN_INT”用來激活(使能)新的中斷和異步錯(cuò)誤處理,可以全部允許或有選擇地允許。激活中斷是指允許處理中斷,做好了在中斷事件出現(xiàn)時(shí)執(zhí)行對(duì)應(yīng)的組織塊的準(zhǔn)備。
SFC 41“DIS_AIRT”延遲處理比當(dāng)前優(yōu)先級(jí)更高的中斷和異步錯(cuò)誤,直到用SFC 42允許處理中斷或當(dāng)前的OB執(zhí)行完畢。SFC 42“EN_AIRT”用來允許立即處理被SFC 41暫時(shí)禁止的中斷和異步錯(cuò)誤,SFC 42和SFC 41配對(duì)使用。

西門子840D鍵盤按鍵盤斷線失靈維修