读时间定时器的剩余时间
刘玉蓉
发布于2014-10-13 17:38
1
0
标签:
用上位机wincc读取时间定时器的剩余时间,应该怎么转化这个格式啊!BI或BIC转。。。。。。?
佳答案
转一个技术论坛的帖子供参考
主题:来自西门子技术支持热线的故事:整数INT_时间S5Time及Time相互转换的困惑
客户1:“西门子热线工程师,你好,我想在组态软件中设置定时器T的时间,以便人工及时修改。但组态软件中没有S5Time数据类型,怎么办?”
客户2:“我想在PLC程序中,用整数INT给定时器T的预设时间赋值,怎么做?”
客户3:“我想设置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。