問:我想編一個(gè)時(shí)間循環(huán)控制的程序,例如一個(gè)小時(shí)運(yùn)行一個(gè)小時(shí)停止,時(shí)間是可以設(shè)置的。請(qǐng)大家指點(diǎn)一下編程思路?
答:關(guān)鍵是如何讀系統(tǒng)時(shí)鐘:
S7-200的硬件實(shí)時(shí)時(shí)鐘可以提供年、月、時(shí)、分、秒的日期/時(shí)間數(shù)據(jù)。
CPU221、CPU222沒有內(nèi)置的實(shí)時(shí)時(shí)鐘,需要外插“時(shí)鐘/電池卡”才能獲得此功能。CPU224、CPU226和CPU226 XM都有內(nèi)置的實(shí)時(shí)時(shí)鐘。
S7-200的時(shí)鐘精度典型值是2分鐘/月(25°C),最大誤差7分鐘/月(0 - 55°C)。
為了提高運(yùn)算效率,應(yīng)當(dāng)避免每個(gè)程序周期都讀取實(shí)時(shí)時(shí)鐘。實(shí)際上可讀取的最小時(shí)間單位是1秒,可每秒讀取一次(使用SM0.5上升沿觸發(fā)讀取指令)。
使用程序讀取的實(shí)時(shí)時(shí)鐘數(shù)據(jù)為BCD格式,可在狀態(tài)圖中使用十六進(jìn)制格式查看。
CPU靠?jī)?nèi)置超級(jí)電容(+外插電池卡)在失去供電后為實(shí)時(shí)時(shí)鐘提供電源緩沖;緩沖電源放電完畢后,再次上電后時(shí)鐘將停止在缺省值,并不開始走動(dòng)。
要設(shè)置日期、時(shí)間值,使之開始走動(dòng),可以:
用編程軟件(Micro/WIN)的菜單命令PLC > Time of Day Clock...,通過與CPU的在線連接設(shè)置,完成后時(shí)鐘開始走動(dòng)
編用戶程序使用Set_RTC(設(shè)置時(shí)鐘)指令設(shè)置
Micro/WIN可以通過任何編程連接實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘的設(shè)置。
使用 S7-200 的 READ_RTC(讀取實(shí)時(shí)時(shí)鐘)和 SET_RTC(設(shè)置實(shí)時(shí)時(shí)鐘)指令時(shí), 讀取和設(shè)置的數(shù)據(jù)格式都是 BCD 碼的。如果覺得不便計(jì)算、處理,可使用 Clock Integer 指令庫(kù)。
Clock_Integer 指令庫(kù)用于將 BCD 碼格式的 S7-200 日期、時(shí)間轉(zhuǎn)換為十進(jìn)制整數(shù)格式,以及將十進(jìn)制整數(shù)格式的日期、時(shí)間值設(shè)定為 S7-200 時(shí)鐘。
要使用 Clock_Integer 指令庫(kù),須遵循下列步驟:
取得 Clock_Integer 指令庫(kù)文件,并添加到編程軟件 STEP 7-Micro/WIN 中;
按照要求編寫用戶程序調(diào)用 Clock_Integer 指令庫(kù)。