一、循環(huán)處理的主程序(OB1)
主程序在OB1中執(zhí)行。OB1調(diào)用功能塊(FB)、標準功能塊(SFB)或使用功能調(diào)用(FC)和系統(tǒng)功能調(diào)用(SFC)的功能。OB1被循環(huán)地處理。在啟動OB被處理后(OB100用于予熱再起動或OB101用于熱再起動或OB102用于冷再起動),首先執(zhí)行OB1。在OB1循環(huán)結(jié)束時,操作系統(tǒng)傳送過程映象輸出表到輸出模塊。在OB1再開始前,操作系統(tǒng)通過讀取當前的輸入I/O的信號狀態(tài)來更新過程映象輸入表。這個過程連續(xù)不斷地重復(fù)。這就是我們所稱“循環(huán)處理”。所有OB的運行被監(jiān)視,OB1的優(yōu)先權(quán)最低,因此它可以被較高優(yōu)先權(quán)的OB中斷。
SIMATIC S7可編程控制器的CPU允許監(jiān)視最大循環(huán)時間。這就是處理OB1的時間。也可以保證能觀察處理OB1的最小循環(huán)時間。如果已設(shè)置最小循環(huán)時間,則CPU操作系統(tǒng)將延時達到此時間后才開始另一次OB1??梢栽贖W Config程序中的CPU Properties下定義用于循環(huán)監(jiān)視時間和最小循環(huán)時間的參數(shù)。關(guān)于OB1本地數(shù)據(jù)的含義見表1
表1 OB1的本地數(shù)據(jù)
變量
|
數(shù)據(jù)類型
|
描述
|
OB1_EV_CLASS
|
BYTE
|
|
OB1_SCAN_1
|
BYTE
|
B#16#01予熱再起動結(jié)束
B#16#02熱再起動結(jié)束
B#16#03自由周期結(jié)束
|
OB1_PRIORITY
|
BYTE
|
優(yōu)先權(quán)等級“1”
|
OB1_OB_NUMBR
|
BYTE
|
OB號碼(01)
|
OB1_RESERVED_1
|
BYTE
|
保留
|
OB1_RESERVED_2
|
BYTE
|
保留
|
OB1_PREV_CYCLE
|
INT
|
以前循環(huán)的運行時間(ms)
|
OB1_MIN_CYCLE
|
INT
|
從最近的啟動以來最小的循環(huán)時間(ms)
|
OB1_MAX_CYCLE
|
INT
|
從最近的啟動以來最大的循環(huán)時間(ms)
|
OB1_DATE_TIME
|
DT
|
OB被請求的日期和時間
|
以十六進制數(shù)字表達的格式:
數(shù)據(jù)類型 字節(jié) B#16#x (x值范圍從“0”至“FF”)
數(shù)據(jù)類型 字 W#16#x (x值范圍從“0”至“FFFF”)
數(shù)據(jù)類型 雙字 DW#16#x (x值范圍從“0”至“FFFF FFFF”)
二、過程中斷(OB40~OB47)
SIMATIC S7 可編程控制器的CPU提供8種不同的OB(OB40~OB47)用于對過程中斷的反應(yīng)。對于支持過程中斷的S7 DP從站,可用HW Config硬件組態(tài)程序定義通道、通用條件和OB號。
當S7 DP從站觸發(fā)一個過程中斷時,它就被CPU操作系統(tǒng)所識別,并根據(jù)它的優(yōu)先權(quán)起動相應(yīng)的OB。在中斷OB中的用戶程序被處理(OB已結(jié)束)后,一個確認信息被發(fā)送給產(chǎn)生中斷的S7 DP從站。
如果當OB仍在處理第一個中斷時另一個中斷到達了,則第二個中斷請求被寄存起來,并在適當?shù)臅r候處理此OB。這就是S7-400系統(tǒng)中的過程。對于S7-300系統(tǒng)而言,如果在剛被處理的中斷確認后產(chǎn)生第二個過程中斷的事件已不在等候,則此中斷被丟失。
過程中斷OB提供20個字節(jié)的本地數(shù)據(jù)。此數(shù)據(jù)含有產(chǎn)生此中斷的模塊的邏輯基準地址。關(guān)于本地數(shù)據(jù)的描述,請參閱表2。
表2 OB40~OB47提供的本地數(shù)據(jù)的內(nèi)容
變量
|
數(shù)據(jù)類型
|
說明
|
OB4x_EV_CLASS
|
BYTE
|
事件類別和標識符:B#16#11=中斷是活動的
|
OB4x_STRT_INF
|
BYTE
|
B#16#41=通過中斷線1的中斷
僅對S7-400:
B#16#42=通過中斷線2的中斷
B#16#43=通過中斷線3的中斷
B#16#44=通過中斷線4的中斷
|
OB4x_PRIORITY
|
BYTE
|
優(yōu)先權(quán)等級“16”(OB40)~“23”(OB47)(缺省值)
|
OB4x_OB_NUMBR
|
BYTE
|
OB號(40~47)
|
OB4x_PESERVED_1
|
BYTE
|
保留
|
OB4x_IO_FLAG
|
BYTE
|
B#16#54=輸入模塊
B#16#55=輸出模塊
|
OB4x_MDL_ADDR
|
WORD
|
觸發(fā)此中斷的模塊的邏輯基準地址
|
OB4x_POINT_ADDR
|
DWORD
|
對數(shù)字模塊
在模塊上帶有輸入狀態(tài)的位字段
對模擬模塊(CP或IM):
模塊的中斷狀態(tài)
|
OB4x_DATE_TIME
|
DT
|
OB被請求的日期和時間
|
三、診斷中斷(OB82)
SIMATIC S7可編程控制器的CPU提供組織塊OB82用來檢查和評估診斷中斷。當具有診斷能力的DP從站檢查出一個錯誤(也叫“事件”)時,此OB被啟動。在兩種情況下CPU操作系統(tǒng)調(diào)用OB82:診斷中斷已經(jīng)“到來”和診斷中斷已經(jīng)“離去”。然而,對此有兩個條件必須滿足為真:DP從站必須有能力支持此診斷功能并且已經(jīng)用HW Config程序在DP從站的參數(shù)集中定義了診斷報警。
如果你沒有編程OB82,則CPU對診斷中斷的反應(yīng)是進入STOP狀態(tài)。OB82提供在DP從站上引起中斷的有關(guān)出錯的詳細信息。OB82的20個字節(jié)本地數(shù)據(jù)(見表3)包含有故障的DP從站的邏輯基準地址或DP從站中有故障的模塊,以及4個字節(jié)的診斷信息。
表3 OB82的本地數(shù)據(jù)
變量
|
數(shù)據(jù)類型
|
描述
|
OB82_EV_CLASS
|
BYTE
|
中斷類別和標識符:
B#16#38=離去的事件
B#16#39=到來的事件
|
OB82_FLT_ID
|
BYTE
|
B#16#42=出錯代碼
|
OB82_PRIORITY
|
BYTE
|
優(yōu)先權(quán)等級
“26”(RUN運行狀態(tài)缺省值)或“28”(STARTUP運行狀態(tài))
|
OB82_OB_NUMBR
|
BYTE
|
OB-號(82)
|
OB82_RESERVED_1
|
BYTE
|
保留
|
OB82_IO_FLAG
|
BYTE
|
B#16#54=輸入模塊
B#16#55=輸出模塊
|
OB82_MDL_ADDR
|
INT
|
發(fā)生故障的模塊的邏輯基準地址
|
OB82_MDL_DEFECT
|
BOOL
|
模塊故障
|
OB82_INT_FAULT
|
BOOL
|
內(nèi)部錯誤
|
OB82_EXT_FAULT
|
BOOL
|
外部錯誤
|
OB82_PNT_INFO
|
BOOL
|
通道錯誤
|
OB82_EXT_VOLTAGE
|
BOOL
|
外部輔助電壓不存在
|
OB82_FLD_CONNCTR
|
BOOL
|
正面插頭連接器未連接
|
OB82_NO_CONFIG
|
BOOL
|
模塊的參數(shù)集丟失
|
OB82_CONFIG_ERR
|
BOOL
|
模塊中參數(shù)有錯
|
表3 續(xù)
變量
|
數(shù)據(jù)類型
|
描述
|
OB82_MDL_TYPE
|
BOOL
|
位0至3:模塊類型
位4:當前通道信息
位5:當前用戶信息
位6:來自替代者的診斷中斷
位7:保留
|
OB82_SUB_MDL_ERR
|
BOOL
|
用戶模塊出錯/不存在
|
OB82_COMM_FAULT
|
BOOL
|
通信出錯
|
OB82_MDL_STOP
|
BOOL
|
運行狀態(tài)(0:RUN,1:STOP)
|
OB82_WTCH_DOG_FLT
|
BOOL
|
時間監(jiān)控已觸發(fā)
|
OB82_INT_PS_FLT
|
BOOL
|
內(nèi)部模塊供電電壓有故障
|
OB82_PRIM_BATT_FLT
|
BOOL
|
電池沒電
|
OB82_BCKUP_BATT_FLT
|
BOOL
|
整個后備電池故障
|
OB82_RESERVED-2
|
BOOL
|
保留
|
OB82_RACK_FLT
|
BOOL
|
擴展機架故障
|
OB82_PROC_FLT
|
BOOL
|
處理器故障
|
OB82_EPROM_FLT
|
BOOL
|
EPROM出錯
|
OB82_RAM_FLT
|
BOOL
|
RAM出錯
|
OB82_ADU_FLT
|
BOOL
|
ADU/DAU出錯
|
OB82_FUSE_FLT
|
BOOL
|
保險絲熔斷
|
OB82_HW_INTR_FLT
|
BOOL
|
丟失過程中斷
|
OB82_RESERVED_3
|
BOOL
|
保留
|
OB82_DATE_TIME
|
DT
|
OB被請求的時期和時間
|
四、插/拔模塊中斷(OB83)
SIMATIC S7-400系列的CPU常規(guī)地檢查在中央機架和擴展機架中存在的模塊。插入S7 DP從站且分散地與S7系統(tǒng)連接的模塊(如,ET200M/IM 153-2模塊)也要被此監(jiān)視功能檢查。如果已組態(tài)的模塊從站從模塊化的S7 DP從站中拔走且S7 CPU還處在RUN狀態(tài),則中斷OB83被觸發(fā)并在診斷緩存器和模塊狀態(tài)表中產(chǎn)生一個登入項。如果模塊從DP從站中拔走而S7 CPU處于STOP狀態(tài)或剛剛起動,則此中斷被寄存在CPU的診斷緩存器和模塊狀態(tài)表中,但不調(diào)用OB83。
如果CPU正在運行時插入已組態(tài)的模塊,則CPU檢查所插入的模塊類型是否與組態(tài)匹配。然后,調(diào)用OB83并指出模塊類型正確,則通過HW Config程序用已組態(tài)在CPU上的參數(shù)集裝入此模塊。此時,還可以調(diào)用系統(tǒng)功能(SFC)來更改新插入的模塊的參數(shù),表4描述OB83的本地數(shù)據(jù)。
表4 OB83的本地數(shù)據(jù)
變量
|
數(shù)據(jù)類型
|
描述
|
OB83_EV_CLASS
|
BYTE
|
中斷類別和標識符:
B#16#38=插入的模塊
B#16#39=拔出的模塊或者不能被尋址的模塊
|
OB83_FLT_ID
|
BYTE
|
出錯代碼:(可能的值:B#16#61,B#16#63,B#16#64,B#16#65)
|
OB83_PRIORITY
|
BYTE
|
優(yōu)先權(quán)等級
“26”(RUN運行狀態(tài)缺省值)或
“28”(STARTUP狀態(tài))
|
OB83_OB_NUMBR
|
BYTE
|
OB號(83)
|
OB83_RESERVED_1
|
BYTE
|
保留
|
OB83_MDL_ID
|
BYTE
|
B#16#55=輸出I/O區(qū)域(PA)
|
OB83_MDL_ADDR
|
WORD
|
受影響的模塊的邏輯基準地址
|
OB83_RACK_NUM
|
WORD
|
模塊機架號碼或DP站號和DP主站系統(tǒng)ID(高字節(jié))
|
OB83_MDL_TYPE
|
WORD
|
受影響的模塊的模塊類型
|
OB83_DATE_TIME
|
DT
|
OB被請求的日期和時間
|
所組態(tài)的模塊類型與實際插入在DP從站中的模塊類型之間的失配由本地變量OB83_MDL_TYPE寄存起來。根據(jù)寫入此變量的出錯代碼,按具體情況發(fā)出下列出錯信息之一:
表5 由本地變量OB83_FTL_ID報告的出錯代碼
OB83_FTL_ID中的出錯代碼
|
依據(jù)OB83_MDL_TYPE內(nèi)容的出錯含義
|
B#16#61
|
對于OB83_MDL_TYPE=實際模塊類型
已插入的模塊,模塊類型OK(對中斷類別B#16#38)
已拔走的模塊,或不可尋址的模塊(對中斷類別B#16#39)
|
B#16#63
|
對于OB83_MDL_TYPE=實際模塊類型
已插入的模塊,但模塊類型錯
|
B#16#64
|
對于OB83_MDL_TYPE=設(shè)定的模塊類型
已插入的模塊,但有故障(類型ID不可讀)
|
B#16#65
|
對于OB83_MDL_TYPE=實際模塊類型
已插入的模塊,但模塊參數(shù)中有錯
|
五、程序順序出錯(OB85)
當用戶程序調(diào)用了一個未被裝入的程序塊或操作系統(tǒng)調(diào)用了一個沒有編程的OB時,S7 CPU的操作系統(tǒng)將調(diào)用OB85。當過程映象正被更新時出現(xiàn)了I/O存取錯誤,也調(diào)用OB85。當被組態(tài)的用于DP從站輸入和輸出的地址被放在S7 CPU的過程映象表時,而此DP從站已損壞,就可能發(fā)生上述情況。如果沒有編程OB85,則S7 CPU對這些出錯的反應(yīng)是轉(zhuǎn)變到STOP狀態(tài)。
表6展示了OB85本地數(shù)據(jù)的原始結(jié)構(gòu)。表7建議怎樣構(gòu)造OB85的本地數(shù)據(jù),以便用戶程序可以評估這些出錯代碼。當在S7系統(tǒng)中使用分散I/O時,OB85_FTL_ID變量的十六進制出錯代碼“B1”和“B2”特別重要。
表6 OB85的本地數(shù)據(jù)(原始結(jié)構(gòu))
變量
|
數(shù)據(jù)類型
|
描述
|
OB85_EV_CLASS
|
BYTE
|
中斷類別和標識符(例如:B#16#39為“更新過程映象時出錯”)
|
OB85_FLT_ID
|
BYTE
|
出錯代碼:(可能的值:B#16#A1,B#16#A2,B#16#A3,B#16#A4,B#16#B1,B#16#B2,)
|
OB85_PRIORITY
|
BYTE
|
優(yōu)先權(quán)等級
“26”(RUN狀態(tài)的缺省值)或
“28”(STARTUP狀態(tài))
|
OB85_OB_NUMBR
|
BYTE
|
OB號(85)
|
OB85_RESERVED_1
|
BYTE
|
保留
|
OB85_ RESERVED_2
|
BYTE
|
保留
|
OB85_ RESERVED_3
|
INT
|
保留
|
OB85_ERR_EV_CLASS
|
BYTE
|
產(chǎn)生錯誤的中斷類別
|
OB85_ERR_EV_NUM
|
BYTE
|
產(chǎn)生錯誤的中斷號
|
OB85_OB_PRIOR
|
BYTE
|
出現(xiàn)錯誤時,正在處理的OB的優(yōu)先權(quán)等級
|
OB85_OB_NUM
|
BYTE
|
出現(xiàn)錯誤時,正在處理的OB的號
|
OB85_DATE_TIME
|
DT
|
OB被請求的日期和時間
|
表7 OB85的本地數(shù)據(jù)結(jié)構(gòu)(用于有關(guān)出錯代碼編程)
變量
|
數(shù)據(jù)類型
|
OB85_EV_CLASS
|
BYTE
|
OB85_FLT_ID
|
BYTE
|
OB85_PRIORITY
|
BYTE
|
OB85_OB_NUMBR
|
BYTE
|
OB85_DKZ23
|
BYTE
|
OB85_RESERVED_2
|
BYTE
|
OB85_Z1
|
WORD
|
OB85_Z23
|
DWORD
|
OB85_DATE_TIME
|
DATE_AND_TIME
|
表8解釋由變量OB85_FLT_ID報告的出錯代碼。這些出錯代碼的含義取決于變量OB85_DKZ23、OB85_Z1和OB85_Z23的內(nèi)容。
表8 OB85_FLT_ID出錯代碼
OB85_FLT_ID出錯代碼
|
出錯含義
|
B#16#A1
|
根據(jù)STEP7程序,程序或操作系統(tǒng)為OB生成一個起動事件,但此OB未裝入CPU。
|
B#16#A2
|
根據(jù)STEP7程序,程序或操作系統(tǒng)為OB生成一個起動事件,但此OB未裝入CPU。
變量OB85_Z1和OB85_Z23提供下列附加信息:
OB85_Z1:引起出錯的事件類別(被中斷的程序?qū)?/font>
次的值)
OB85_Z23:
高字:報告觸發(fā)事件的類別和號
低字:出錯時,報告活動的程序?qū)哟?strong style="COLOR: #f5f5dc; BACKGROUND-COLOR: #6b8e23">和活動
的OB
|
B#16#A3
|
操作系統(tǒng)存取一個塊時出錯
變量OB85_Z1和OB85_Z23提供下列附加信息:
OB85_Z1:操作系統(tǒng)的詳細出錯標識符
高字節(jié):1:集成功能
2:IEC定時器
低字節(jié):0:無出錯解決方案
1:塊未裝入
2:區(qū)域長度出錯
3:寫保護出錯
|
表8 續(xù)
OB85_FLT_ID出錯代碼
|
出錯含義
|
|
OB85_Z23:
高字:塊號
低字:引起出錯的MC7命令的相對地址。關(guān)于塊類型,
參看本地變量OB85_DKZ23。
B#16#88=OB
B#16#8C=FC
B#16#8E=FB
B#16#8A=DB
|
B#16#B1
B#16#B2
|
更新過程映象輸入表時I/O存取出錯
給輸出模塊傳送過程映象輸出表時I/O存取出錯
變量OB85_Z1和OB85_Z23提供下列附加信息:
OB85_Z1:CPU保留作為內(nèi)部使用
OB85_Z23:造成I/O存取出錯(PZF)的I/O字節(jié)號
|
六、機架故障(OB86)
S7 CPU的操作系統(tǒng)通過調(diào)用組織塊OB86對擴展機架、DP主站系統(tǒng)和DP從站的故障(到來的事件)或恢復(fù)(離去的事件)作出反應(yīng)。當這類事件發(fā)生時如果未編程OB86,則S7 CPU輸入STOP狀態(tài)。
表9指出OB86的本地數(shù)據(jù)的原始結(jié)構(gòu)。表10指出的結(jié)構(gòu)建議如何組織OB86的本地數(shù)據(jù)以便利用用戶程序可以運行一個簡單的依據(jù)出錯代碼的評估。當S7系統(tǒng)中使用分散I/O時,變量OB86_FTL_ID的十六進制出錯代碼“C3”、“C4”和“C7”特別地重要。
表9 OB86的本地數(shù)據(jù)
變量
|
數(shù)據(jù)類型
|
說明
|
OB86_EV_CLASS
|
BYTE
|
事件類別和標識符:
B#16#38=離去的事件
B#16#39=到來的事件
|
OB86_FTL_ID
|
BYTE
|
出錯代碼:(可能的值:B#16#C1,B#16#C2,B#16#C3,B#16#C4,B#16#C5,B#16#C6,B#16#C7,)
|
OB86_PRIORITY
|
BYTE
|
“26”(RUN狀態(tài)缺省值)或
“28”(STARTUP運行狀態(tài))
|
OB86_OB_NUMDR
|
BYTE
|
OB號(86)
|
OB86_RESERVED_1
|
BYTE
|
保留
|
OB86_RESERVED_2
|
BYTE
|
保留
|
OB86_MDL_ADDR
|
WORD
|
取決于出錯代碼
|
OB86_RACKS_FLTD
|
ARRAY
[1…31]OF BOOL
|
取決于出錯代碼
|
OB86_DATE_TIME
|
DT
|
OB被請求的日期和時間
|
表10 OB86的本地數(shù)據(jù)結(jié)構(gòu)(用于有關(guān)出錯代碼編程)
變量
|
數(shù)據(jù)類型
|
OB86_EV_CLASS
|
BYTE
|
OB86_FLT_ID
|
BYTE
|
OB86_PRIORITY
|
BYTE
|
OB86_OB_NUMBR
|
BYTE
|
OB86_RESERVED_1
|
BYTE
|
OB86_RESERVED_2
|
BYTE
|
OB86_MDL_ADDR
|
WORD
|
OB86_Z23
|
DWORD
|
OB86_DATE_TIME
|
DATE_AND_TIME
|
表11說明由變量OB86_FLT_ID報告的出錯代碼。出錯代碼的含義取決于變量OB86_DKZ23、OB86_Z1和OB86_Z23的內(nèi)容。
表11 OB86_FLT_ID出錯代碼
OB86_FLT_ID
出錯代碼
|
出錯含義
|
B#16#C1
|
擴展機架故障
OB86_MDL_ADRR:IM邏輯基準地址
變量OB86_Z23提供下列附加信息
OB86_Z23:每一位(bit)指定給一個可能的擴展機架
位0:總為0
位1:第1個擴展機架
┇ ┇
位21:第21個擴展機架
位22~29:總為0
位30:在SIMATIC S5區(qū)域至少有一個擴展機架有故障
位31:總為0
注解:“到來”的事件指出擴展機架的故障(指定的位被設(shè)置為“1”)。
它總是指向觸發(fā)OB86調(diào)用的那些擴展機架,早已出現(xiàn)故障的
擴展機架不再被指出。
“離去”的事件指出早先出現(xiàn)故障的擴展機架恢復(fù)(指定的位
被設(shè)置為“1”)
|
B#16#C2
|
具有標識符的擴展機架復(fù)位:
“在設(shè)定與實際組態(tài)間有偏差的擴展機架的故障已過去”
OB86_MDL_ADDR:IM的邏輯基準地址
由變量OB86_Z23提供下列附加信息
OB86_Z23:對每個可能的擴展機架都包含1位(見出錯代碼
B#16#C1)。設(shè)定位的含義:
在受影響的擴展機架上:
—帶有錯誤類型標識符的模塊
—已組態(tài)的模塊丟失
—至少有一個模塊有缺陷
|
B#16#C3
|
分散I/O的DP主站系統(tǒng)有故障。(到來的事件提供出錯代碼B#16#C3;離去的事件提供出錯代碼B#16#C4和事件類別B#16#38)
每個較低層的DP站的恢復(fù)也起動OB86
OB86_MDL_ADDR:DP主站的邏輯基準地址
變量OB86_Z23提供下列附加信息
OB86_Z23:DP主站系統(tǒng)ID
位0~7:保留
位8~15:DP主站系統(tǒng)ID
位16~31:保留
|
表11 續(xù)
OB86_FLT_ID
出錯代碼
|
出錯含義
|
B#16#C4
B#16#C5
|
DP站故障
DP站不正常
OB86_MDL_ADDR:DP主站的邏輯基準地址
變量OB86_Z23提供下列附加信息
OB86_Z23:受影響的DP從站的地址
位0~7:DP站的號
位8~15:DP主站系統(tǒng)ID
位16~30:S7 DP從站的邏輯基準地址或?qū)τ跇藴蔇P
從站的診斷地址
位31:I/O標識符
|
B#16#C6
|
擴展機架恢復(fù),但在模塊參數(shù)集中有錯
OB86_MDL_ADDR:IM的邏輯基準地址
變量OB86_Z23提供下列附加信息
OB86_Z23:對每個可能的擴展機架指定1位。
位0:總是0
位1:第1個擴展機架
┇ ┇
位21:第21個擴展機架
位22~30:保留
位31:總是0
一個設(shè)置位的含義:
受影響的擴展機架的模塊帶有:
—錯誤的類型標識符,或
—丟失或錯誤的參數(shù)
|
B#16#C7
|
DP站恢復(fù),但在模塊參數(shù)集中有錯
OB86_MDL_ADDR:DP主站的邏輯基準地址
變量OB86_Z23提供下列附加信息。
OB86_Z23:受影響的DP從站地址:
位0~7:DP站的號
位8~15:DP主站系統(tǒng)ID
位16~30:DP從站邏輯基準地址
位31:I/O標識符
|
七、I/O存取出錯(OB122)
在STEP7指令正試圖存取I/O模塊或DP從站的輸入/輸出數(shù)據(jù)時出現(xiàn)錯誤,則S7 CPU操作系統(tǒng)調(diào)用OB122。當用戶程序試圖存取不存在的或有缺陷DP從站的輸入或輸出時,也調(diào)用OB122。如果沒有編程OB122,則CPU對這種I/O存取錯的反應(yīng)是切換到STOP狀態(tài)。表12指出OB122的本地數(shù)據(jù)。
表12 OB122的本地數(shù)據(jù)
變量
|
數(shù)據(jù)類型
|
說明
|
OB122_EV_CLASS
|
BYTE
|
事件類別和標識符(例,B#16#29表示“I/O存取出錯”)
|
OB122_SW_FLT
|
BYTE
|
出錯代碼
B#16#42=(對S7-300)讀存取I/O時出錯
=(對S7-400)在一個錯誤出現(xiàn)后,第1次
讀存取I/O時出錯
B#16#43=(對S7-300)寫存取I/O時出錯
=(對S7-400)在一個錯誤出現(xiàn)后,第1次
寫存取I/O時出錯
B#16#44=(僅對S7-300)在一個錯誤出現(xiàn)后,第n
(n>1)次讀存取I/O時出錯
B#16#45=(僅對S7-400)在一個錯誤出現(xiàn)后,第n
(n>1)次寫存取I/O時出錯
|
OB122_PRIORITY
|
BYTE
|
出現(xiàn)錯誤的OB的優(yōu)先權(quán)等級
|
OB122_OB_NUMBR
|
BYTE
|
OB號(122)
|
OB122_BLK_TYPE
|
BYTE
|
出現(xiàn)錯誤的塊類型
B#16#88=OB
B#16#8A=DB
B#16#8C=FC
B#16#8E=FB
|
OB122_MEM_AREA
|
BYTE
|
存取類型和存貯器區(qū)域
位7~4,存取類型:0:位存取
1:字節(jié)存取
2:字存取
3:雙字存取
位3~0,存貯器區(qū)域:0:I/O區(qū)域
1:過程映象輸入表
2:過程映象輸出表
|
OB122_MEM_ADDR
|
WORD
|
出現(xiàn)錯誤的存貯器地址
|
OB122_BLK_NUM
|
WORD
|
造成錯誤的MC7命令的塊號
|
OB122_PRG_ADDR
|
WORD
|
造成錯誤的MC7命令的相對地址
|
OB122_DATE_TIME
|
DT
|
OB被請求的日期和時間
|