登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:s7 200的DIV

点击:2589 回复:6

 为什么DIV指令的高16位的余数不对呢?谁能告诉我吗?
04-01-03 20:13
请贴出你的程序和结果.才能回答你
04-01-04 11:45
程序块:
LD            SM0.1
MOVW      VW0,VW22
DIV           VW2,VD20
MOVW      VW4,VW26
DIV           VW6,VD24
MOVW       VW8,VW30
DIV           VW10,VD28
MOVW      VW12,VW34
DIV           VW14,VD32
数据块
VW0     78,25,4000,41,25,7,-78,56
上电以后  状态图
VD20   16#00030003
VD24   16#00170061
VD28    16#00040003
VD32    16#FFEAFFFF
余数不对。为什么呢?
04-01-07 18:34
数据都对的.低字节为商,高字节为余数.
注意,状态图中的数据是以16进制的形式显示的.
78/25=3,余数为3,16进制为3/3
4000/41=97,余数为23,16进制为61/17
25/7=3,余数为4,16进制为3/4
-78/56=-1,余数为-22,16进制为FFFF/FFEA
和状态图中的数据是一致的.
你可以换一种方式监控,把VD20分成VW20和VW22,分别监控商和余数,并以10进制型式显示,看到的数据就比较清楚了
04-01-08 11:14
TO:  DZFA
78/25=3.12               对应16#000C0003  
4000/41=97.56          对应16#00380061
25/7=3.57                 对应16#00390003
—78/56=—1.39         对应16#FFD9FFFF
04-01-09 12:52
楼上的,你理解错了吧.余数是两个整数相除后不能被整除的部分,也是个整数.不是你所指的两个数相除的商的小数部分.
DIV是整数运行指令,不可能得出小数的结果的.
如果要得出你要的结果,请把数据都转成浮点数后以浮点数格式运算.
04-01-09 14:52
哎,居然把这个问题搞糊涂了,该打。谢谢DZFA!!!!!!!!!!!!!!!!
04-01-09 18:09

工控新闻

更多新闻资讯