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