當 CPU 中的程序執行時間超過最大循環時間或者發生時間錯誤事件(例如,循環中斷 OB 仍在執行前一次調用時,該循環中斷 OB 的啟動事件再次發生)時,将觸發時間錯誤中斷優先執行 OB80 。如果程序中沒有創建OB80,CPU 将進入停止模式。如果程序中已創建OB80,但是在同一次循環内程序執行超出設定的最大循環時間兩次,CPU 也将進入停止模式。
● 與時間錯誤 OB80 相關的信息當觸發時間錯誤中斷時,通過 OB80 的接口變量讀取相應的啟動信息。OB80 的接口變量及啟動信息參考下圖1、2。
圖1. OB80 接口變量
圖2. OB80 啟動信息
● 時間錯誤 OB 的使用示例:例如:在 OB1 中做一個循環跳轉程序,可通過設置時間控制該部分程序的循環時間,當該部分程序的執行時間大于CPU 設定的最大循環時間時,觸發時間錯誤事件。
1、按如下步驟創建時間錯誤 OB80 。如圖3。
圖3. 創建時間錯誤 OB80
2、OB80 中編程如下圖,創建地址為 MB100、MW102、MW104 的變量用于存儲出現時間錯誤時讀取到的啟動信息。如圖4。
圖4. OB80 中編程
3、在 OB1 中編寫一個循環跳轉程序,其循環執行時間可通過變量“set_time”設定。如圖5。
圖5. OB1 中編程
4、程序下載,測試:
① 如果在監控表中将變量“set_time”設置為160ms,則 CPU 報故障且沒有停機,可從監控表中讀取到 OB80 的啟動信息,同時查看故障緩沖區。如圖6。
圖6. 測試結果1
② 如果在監控表中将變量“set_time”設置為310ms,則 CPU 立即停機,可從監控表中讀取到 OB80 的啟動信息,同時查看故障緩沖區。如圖7。
圖7. 測試結果2
注:S7-1500 CPU 默認最大循環時間為150ms。
● 重新觸發掃描循環看門狗指令“RE_TRIGR”“RE_TRIGR”指令用于在單個掃描循環期間重新啟動掃描循環監視定時器。其功能是執行一次“RE_TRIGR”指令,使允許的最大掃描周期延長一個最大循環時間段。
使用示例:在上個示例中的時間錯誤 OB80 塊中調用指令“RE_TRIGR”,當 OB1 中的循環跳轉程序執行時間大于 CPU 設定的最大循環時間時,觸發時間錯誤 OB80 并執行指令“RE_TRIGR”重新觸發掃描循環看門狗。
1、在 OB80 中編程調用“RE_TRIGR”指令。在“指令->基本指令->程序控制操作->運行時控制”中可以找相關指令。如下圖8。
圖8. 調用重新觸發掃描循環看門狗指令
2、OB80 中編程如下圖,在程序段2中增加重新觸發掃描循環看門狗指令“RE_TRIGR”。如圖9。
圖9. OB80 中編程
3、程序下載,測試:
如果在監控表中将變量“set_time”設置為400ms(大于兩倍最大循環時間300ms),由于“RE_TRIGR”指令的作用 CPU 報故障但沒有停機,可從監控表中讀取到 OB80 的啟動信息,同時查看故障緩沖區。如圖10。
圖10. 測試結果3
關于指令“RE_TRIGR”的相關詳細信息,請查看在線幫助。
哪些情況會觸發時間錯誤中斷,以及 CPU 在這些情況下如何響應?
1.超出最大循環時間
在 CPU 屬性中組态最大循環時間(默認150ms),當 CPU 中的程序執行時間超過最大循環時間時,如果 OB80 不存在,CPU 将切換到 STOP 模式(例外情況:V1 版 CPU 仍然處于 RUN 模式);如果 OB80 存在,則 CPU 執行 OB80 且不停機;如果同一程序循環中出現兩次“超過最大程序循環時間”且沒有通過指令“RE_TRIGR”複位循環定時器,則無論 OB80 是否存在,CPU 都将切換到 STOP 模式。
2.請求的 OB 無法啟動
如果循環中斷、延時中斷請求 OB ,但請求的 OB 已經在執行,就會出現請求的 OB 無法啟動這種情況。
3.發生隊列溢出
如果中斷的出現頻率超過其處理頻率,就會出現發生隊列溢出這種情況。如果 OB80 不存在,則 CPU 将切換到 STOP 模式;如果 OB80 存在,則執行 OB80 ,CPU 将保持為 RUN 模式。
4.總結:發生任何上述事件都将在診斷緩沖區生成一個描述相應事件的條目。無論是否存在 OB80 ,都将生成診斷緩沖區條目。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!