语言4位bcd码怎么加加_S7300400如何使用SCL语言调用SFC1(READ_CLK)读取日期和时间?...
系統功能 SFC1 用于讀取 CPU 的系統時鐘。系統時鐘存儲在數據類型為DATE_AND_TIME的變量里。通過指針訪問系統時鐘的單個組成元素。
數據類型DATE_AND_TIME所包含的關于年、月、日、時等信息是以 BCD 碼的格式存儲在 8 個字節(jié)里。該數據類型顯示的范圍是:
DT#1990-1-1-0:0:0.0?到 DT#2089-12-31-23:59:59.999
下表給出了實例表示 2014 年1月 2 日,星期四,3點 5 分 11.854 秒對應數據類型DATE_AND_TIME的每個字節(jié)所包含的內容。?
DATE_AND_TIME為64位復雜數據類型
| 絕對地址 | 內容 | 例子 |
| 字節(jié)0 | 年 | B#16#14 |
| 字節(jié)1 | 月 | B#16#01 |
| 字節(jié)2 | 日 | B#16#02 |
| 字節(jié)3 | 小時 | B#16#03 |
| 字節(jié)4 | 分鐘 | B#16#05 |
| 字節(jié)5 | 秒 | B#16#11 |
字節(jié)6+字節(jié)7高4位* (字6) | 毫秒 | W#16#8545 |
| 字節(jié)7 (低四位*) | 星期: 1:星期日 2:星期一 3:星期二 4:星期三 5:星期四 6:星期五 7:星期六 | B#16#45 |
*毫秒最大值999的BCD碼需要占用12位。因此,毫秒值占用字節(jié)6以及字節(jié)7的高4位。字節(jié)7的剩下低4位用于表示星期。
用SFC1 (READ_CLK)讀取系統時鐘的說明:
案例:
打開SCL軟件在靜態(tài)變量里定義 一個DATE_AND_TIME數據類型的變量
利用‘AT’繼承將64位時間變量拆分出來
AT指令可以使用戶能夠以不同的數據類型來訪問一個已經聲明的變量。此指令類似于高級編程語言中的“繼承”概念。此指令有如下特點:
特點一:定義僅在塊內有效,在接口參數中不出現。
特點二:在塊中可以使用其他數據類型的視圖。
特點三:它只是讓另外一些變量繼承了某個變量的特性,僅僅數據類型是新的,其他特性相同。
如果使用全部的時間,例如進行WINCC面板顯示可以直接使用''DAT''變量。
如果使用單個時間就可以使用拆分后的時間
這里有個小技巧:
因為我們上面說到毫秒值占用字節(jié)6以及字節(jié)7的高4位。星期占用字節(jié)7的剩下低4位。
那如何將一個16位字拆分成12位和4位呢?
這里我們可以利用“與”的方式
MB52 := WORD_TO_BYTE(TMP_DAT.Q7 AND 16#FFF0)
“與”16#FFF0不就是“與”2#1111111111110000正好提取出12位出來
完整代碼:
? ? ? ? ?
總結
以上是生活随笔為你收集整理的语言4位bcd码怎么加加_S7300400如何使用SCL语言调用SFC1(READ_CLK)读取日期和时间?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 古风一棵桃花树简笔画_广东有个现实版的“
- 下一篇: python面试总结(二)列表去重与单例