一、時間指令簡介
01時鐘指令的認(rèn)識
西門子S7-200SMART時鐘指令分為設(shè)置時鐘和讀取時鐘兩類,通過設(shè)置時鐘指令可對CPU的系統(tǒng)時鐘進行修改而通過讀取時鐘指令可讀取CPU的系統(tǒng)時鐘,時鐘指令分為讀取和設(shè)置時鐘指令與讀取和設(shè)置擴展時鐘指令,如圖1所示。
圖1:時鐘指令(左側(cè)為讀取時鐘指令,右側(cè)為設(shè)置時鐘指令)
①讀取時鐘指令:當(dāng)指令EN端條件滿足時讀取實時時鐘指令從CPU 讀取當(dāng)前時間和日期,并將其裝載到從字節(jié)地址T 開始的 8字節(jié)時間緩沖區(qū)中。
②設(shè)置時鐘指令:設(shè)置實時時鐘指令通過由T 分配的 8字節(jié)時間緩沖區(qū)數(shù)據(jù)將新的時間和日期寫入到CPU。
需要注意的是讀取出來的值和需要設(shè)定的值均需要進行數(shù)據(jù)格式的轉(zhuǎn)換才行。
02時鐘指令存儲區(qū)格式說明
所有日期和時間值必須采用BCD格式(BCD碼通俗的說法是用16進制的形式來表示2進制數(shù))分配(例如,16#12 代表2012年)。00至99的BCD值范圍可分配范圍為2000至2099的年份;時間緩沖區(qū)如圖2所示。
時鐘指令的管腳T就是緩沖區(qū)的起始字節(jié)地址,可以由用戶自由設(shè)置(在CPU允許的V存儲區(qū)范圍內(nèi))。如果設(shè)置T為VB10,那么讀取時鐘后,“年”的信息就會保存在VB10中,“月”保存在VB11中。
03時鐘庫指令的認(rèn)識
除了時鐘指令之外,西門子官方還提供了與時鐘指令功能類似的時鐘庫指令;時鐘庫指令中的T管腳需要以指針的格式進行填寫,所填寫的是緩沖區(qū)的起始字節(jié)地址。由于S7-200時鐘指令的數(shù)據(jù)格式是BCD碼,使用該庫指令可以直接讀取S7-200CPU時鐘并以整數(shù)格式輸出所讀取的值。必須定義8個字節(jié)的V 存儲區(qū)為庫存儲區(qū)。
圖2:時鐘庫指令(上面為讀取時鐘庫指令,下側(cè)為設(shè)置時鐘庫指令)
二、時鐘指令應(yīng)用
接下來我們通過一個簡單的應(yīng)用示例來充分理解時鐘庫指令;要求如下:
1、風(fēng)機可設(shè)定每周5天、每周7天工作制。還可以設(shè)定每周一、三、五或二、四、六工作制2、同時每天可進行最多2段開關(guān)風(fēng)機運行時間設(shè)置,可供運維人員設(shè)定。3、具備手動功能(不在任何工作模式下可以手動測試)
功能實現(xiàn)
根據(jù)控制要求,我們首先需要讀取系統(tǒng)時鐘進行與設(shè)定時間進行比較,其次還需要在HMI上面設(shè)置不同時段的啟停時間;另外還需要設(shè)定不同的工作模式,便于操作員選擇不同的工作模式;
為了使各時段的啟停時間更精準(zhǔn),可以把時分秒換算成秒的單位進行與系統(tǒng)時間比較。當(dāng)系統(tǒng)時間≥設(shè)置的啟動時間,同時系統(tǒng)時間≤設(shè)置的停止時間時,就可以輸出風(fēng)機運行。
程序一共有三部分,分別是工作模式設(shè)定子程序、時間換算子程序、調(diào)用時鐘庫指令;接著在主程序中分別調(diào)用子程序。
由于篇幅原因,以下僅展示部分程序。
圖4:部分程序截圖
三、總結(jié)
通過本示例的分享,相信大家已經(jīng)掌握了其基本的使用。下面為大家分享關(guān)于時鐘庫指令的幾點需要注意的:
(1)進行時鐘的設(shè)定時,只需要導(dǎo)通一個周期即可把設(shè)定值寫入。不能一直導(dǎo)通EN端,否則讀取時鐘庫指令的時間將會出錯。(2)調(diào)用時鐘庫指令時建議在EN位中使用SM0.5系統(tǒng)時鐘進行觸發(fā)。(3)時鐘庫指令需要使用連續(xù)的8個字節(jié)作為時間緩沖區(qū)的存儲,其中緩沖區(qū)中的第6個字節(jié)為保留,并且這連續(xù)的8個字節(jié)不能和其他存儲區(qū)重復(fù)使用。(4)調(diào)用時鐘庫指令后需要分配8個字節(jié)進行庫存儲區(qū)運算。且不能與程序中其他字節(jié)地址重疊。