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