求助:AB SLC 5/03编程:浮点数与双字整数的运算转换 点击:3236 | 回复:3



Mr.C

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 19回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2002年3月14日
发表于:2003-06-06 12:32:00
楼主
AB SLC 5/03编程:用于DeviceNet通信的数据处理 1,将1个浮点数乘以10000以后转成双字整数(高低字分别放在N7:0、N7:1); 例如1234.567,*10000=12345670=00BC6146Hex,N7:0=00BCHex、N7:1=6146Hex; 2,将1个双字整数(高低字分别放在N7:2、N7:3)除以10000以后转成浮点数放在F8:0; 例如N7:2=00BCHex、N7:3=6146Hex,00BC6146Hex=12345670,/10000=1234.5670; 多谢高手指点!



SuperVCD

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 218回
  • 年度积分:0
  • 历史总积分:308
  • 注册:2002年2月09日
发表于:2003-06-04 18:14:00
1楼
1、用MUL F8:1 * 10000 =N10:0,然后用Mov指令把S2:14(高)传送到N7:0,把S2:13(低)传送到N7:1 2、先把高字N7:2传送到S2:14;把低字N7:3传送到S2:13,然后用DDV指令,最后用算术指令CP,目的地址为F8:0,表达式为S2:13/10000+S2:14

Mr.C

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 19回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2002年3月14日
发表于:2003-06-06 12:32:00
2楼
十分感谢楼上朋友的指点! 1、MUL F8:1*10000=N10:0,高低字保存在S:14,S:13,不适用于浮点数运算,即MUL F8:1*10000=N10:0之后,S:14,S:13值不改变,即使S:2/14=1; 2、用CPT指令十分巧妙,谢谢!DDV之后需要使S:5/0=0,不产生溢出报警; 再次感谢楼上朋友的指点!

bye9527

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 7回
  • 年度积分:0
  • 历史总积分:39
  • 注册:2010年8月09日
发表于:2011-01-10 17:29:18
3楼

对于浮点数的处理,一直以来是PLC的难点。谢谢各位的分享!


热门招聘
相关主题

官方公众号

智造工程师