十进制怎样转化为S5TIME 点击:1350 | 回复:7



皓月

    
  • 精华:9帖
  • 求助:0帖
  • 帖子:483帖 | 5271回
  • 年度积分:0
  • 历史总积分:8863
  • 注册:2003年11月09日
发表于:2006-11-23 13:18:00
楼主
十进制怎样转化为S5TIME?
比如我在触摸屏上设置5S,而在程序就延时5S,即转化为S5T#5S



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2006-11-23 13:50:00
1楼
简单的很
对你数据的12,13位填写时基,就以你提出的问题为例。
5S——数字5用16位二进制表示就是
   0000  0000  0000  0101
而12,13位为写入10即为秒
 
L MW10  //假设地址中已经存放了数字5
OW W#16#2000  
T  XXXX //你需要存放的地址
   此时 该地址中存放的数据用2进制表示为
   0001 0000 0000 0101  即为5S
使用时请注意S5Time数据的限制。


  • 精华:0帖
  • 求助:0帖
  • 帖子:46帖 | 602回
  • 年度积分:0
  • 历史总积分:1483
  • 注册:2004年7月01日
发表于:2006-11-23 14:20:00
2楼
介绍一个偷懒的方法,定义一time数据类型的数据(md,db.dbd等),调用fc40,把这一数据转化成s5t了

龙居士

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 595回
  • 年度积分:0
  • 历史总积分:668
  • 注册:2003年10月22日
发表于:2006-11-23 17:31:00
3楼
顶了

皓月

  • 精华:9帖
  • 求助:0帖
  • 帖子:483帖 | 5271回
  • 年度积分:0
  • 历史总积分:8863
  • 注册:2003年11月09日
发表于:2006-11-24 00:14:00
4楼
to yuanle: 
是不是还要转化为BCD码?

天啊啊

  • 精华:0帖
  • 求助:0帖
  • 帖子:20帖 | 179回
  • 年度积分:0
  • 历史总积分:378
  • 注册:2005年3月11日
发表于:2006-11-24 17:15:00
5楼
将时间存在MW100里通过I_BCD指令转一下啦,再存到MW100,MW100再加上8192,就可以喽,,,MW100里的数不可以大于999哦

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2006-11-25 08:48:00
6楼
To lmhx:
   不需要转换为BCD码
   另外,加上8192的作用同在12,13位上填写时基的作用是相同的,就是12,13位置1后的二进制数用十进制来表示而已。
   建议使用填写时基的方式,否则在时间运算上采用加法的方法可能带来隐含的数据溢出的风险。
   方法很多,比如:还可以采用专用转换FC,不过这样会带来增加MMC卡资源消耗,有利也有弊。
   至于采用什么方法,请自己根据情况酌情使用。

姚吉武

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 7回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2006年11月22日
发表于:2006-11-25 08:59:00
7楼
我同意YUSNLE的说法.

热门招聘
相关主题

官方公众号

智造工程师