1. 如何避免S7-300/400系統(tǒng)掃描時(shí)間過(guò)長(zhǎng)而導(dǎo)致CPU停機(jī)?
如果用戶程序的執(zhí)行時(shí)間超出硬件組態(tài)中所設(shè)定CPU的掃描周期監(jiān)控時(shí)間,則CPU會(huì)因看門狗超時(shí)而停機(jī),同時(shí)觸發(fā)定時(shí)錯(cuò)誤OB80,診斷信息如圖1所示:
圖1 診斷信息
S7-300/400 CPU的循環(huán)掃描時(shí)間(看門狗時(shí)間)默認(rèn)為150ms(zui大可修改為6000ms),用戶程序的執(zhí)行時(shí)間必須在設(shè)定的掃描周期監(jiān)控時(shí)間范圍內(nèi)。zui大掃描周期設(shè)置如圖2所示:
圖2 設(shè)置zui大掃描周期時(shí)間
2. 如何查看S7-300/400系統(tǒng)掃描循環(huán)時(shí)間?
如果工程師需要了解程序的掃描周期,可通過(guò)如下兩種方法查詢。
方法一、將程序下載到PLC后,進(jìn)行在線連接,查看CPU信息,如圖3所示:
圖3 查看CPU“掃描循環(huán)時(shí)間”
方法二、通過(guò)將OB1相應(yīng)的臨時(shí)變量傳送到M區(qū),即可讀取CPU掃描循環(huán)時(shí)間,如圖4、圖5所示:
圖4 臨時(shí)變量傳送到M區(qū)
圖5 變量監(jiān)控
3. 如何查看S7-300/400中一個(gè)子程序的大約執(zhí)行時(shí)間?
使用S7-300/400 CPU時(shí),如果工程師需要了解某個(gè)子程序的大約執(zhí)行時(shí)間,可在該子程序前、后分別讀取CPU系統(tǒng)時(shí)鐘,然后使用時(shí)鐘相減指令FC34進(jìn)行編程計(jì)算,步驟如下:
1、設(shè)置PLC系統(tǒng)時(shí)鐘,按圖6所示的設(shè)置:
圖6 置PLC系統(tǒng)時(shí)鐘
2、創(chuàng)建一個(gè)塊符號(hào)名為“time”的數(shù)據(jù)塊(DB1),并創(chuàng)建如下變量,如圖7所示:
圖7 創(chuàng)建數(shù)據(jù)塊
3、在需要測(cè)試的子程序的*個(gè)網(wǎng)絡(luò)和zui后一個(gè)網(wǎng)絡(luò)讀取系統(tǒng)時(shí)鐘,然后運(yùn)用時(shí)鐘相減指令FC34進(jìn)行計(jì)算。
如下例程中測(cè)試了“FC1”子程序的執(zhí)行時(shí)間,如圖8所示:
圖8 “子程序執(zhí)行時(shí)間”例程
4、通過(guò)變量監(jiān)控表查看該子程序的大約執(zhí)行時(shí)間,如圖9所示: