整數INT_時間S5Time及Time相互轉換的困惑 客戶1:“西門子熱線工程師,你好,我用第三方組態軟件(如Intouch、iFix、組態王等),想在畫面上設置定時器T的時間,以便人工及時修改。但組態軟件中沒有S5Time數據類型,怎么辦?”
客戶2:“我想在PLC程序中,用整數INT給定時器T的預設時間賦值,怎么做?”
客戶3:“我用的第三方組態軟件(如Intouch、iFix、組態王等),想在畫面上設置PID積分時間,但FB41的積分時間TI是Time類型,組態軟件中沒有Time類型,怎么辦?”
客戶4:“在PLC程序中,數據類型S5Time如何轉換到整數INT類型?”
以上四個客戶,遇到的問題實質上是一樣的,就是整數INT、時間S5Time及Time之間的相互轉換。
如何轉換,首先要弄清整數INT、時間S5Time及Time的數據結構。整數INT是16位的數據:
時間S5Time是16位數據,BCD碼格式
時間Time是32位數據,類似于雙整數DINT:
由此可見,三者之間的轉換即是整數INT、雙整數DINT及BCD碼之間的轉換。可以根據數據結構特點,自己編程實現相互轉換,這樣比較復雜。利用庫函數FC33/FC40是最簡單方便的。方法如下:
1. 整數INT到時間S5Time的轉換方法:
INT -> I_DI指令 -> DINT -> MOVE指令 -> Time -> 庫函數FC40 -> S5Time。
2. 整數INT到時間Time的轉換方法:
INT -> I_DI指令 -> DINT -> MOVE指令 -> Time。
3. 時間S5Time到整數INT的轉換方法:
S5Time -> 庫函數FC33 -> Time -> MOVE指令 -> DINT -> 取其高字部分,用MOVE指令 -> INT。
|