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