您现在所在的是:

西门子SIEMENS

回帖:6个,阅读:2471 [上一页] [1] [下一页]
* 帖子主题:

s7 200的DIV

1052
hjz123
文章数:48
年度积分:50
历史总积分:1052
注册时间:2003/8/29
发站内信
发表于:2004/1/3 20:13:00
#0楼
 为什么DIV指令的高16位的余数不对呢?谁能告诉我吗?
5386
dzfa 版主
文章数:2048
年度积分:53
历史总积分:5386
注册时间:2003/1/7
发站内信
发表于:2004/1/4 11:45:00
#1楼
请贴出你的程序和结果.才能回答你
烟台东泽----西门子山东地区之代理商,系统集成商
里的打杂的
1052
hjz123
文章数:48
年度积分:50
历史总积分:1052
注册时间:2003/8/29
发站内信
发表于:2004/1/7 18:34:00
#2楼
程序块:
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
余数不对。为什么呢?
5386
dzfa 版主
文章数:2048
年度积分:53
历史总积分:5386
注册时间:2003/1/7
发站内信
发表于:2004/1/8 11:14:00
#3楼
数据都对的.低字节为商,高字节为余数.
注意,状态图中的数据是以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进制型式显示,看到的数据就比较清楚了
烟台东泽----西门子山东地区之代理商,系统集成商
里的打杂的
1052
hjz123
文章数:48
年度积分:50
历史总积分:1052
注册时间:2003/8/29
发站内信
发表于:2004/1/9 12:52:00
#4楼
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
5386
dzfa 版主
文章数:2048
年度积分:53
历史总积分:5386
注册时间:2003/1/7
发站内信
发表于:2004/1/9 14:52:00
#5楼
楼上的,你理解错了吧.余数是两个整数相除后不能被整除的部分,也是个整数.不是你所指的两个数相除的商的小数部分.
DIV是整数运行指令,不可能得出小数的结果的.
如果要得出你要的结果,请把数据都转成浮点数后以浮点数格式运算.
烟台东泽----西门子山东地区之代理商,系统集成商
里的打杂的
1052
hjz123
文章数:48
年度积分:50
历史总积分:1052
注册时间:2003/8/29
发站内信
发表于:2004/1/9 18:09:00
#6楼
哎,居然把这个问题搞糊涂了,该打。谢谢DZFA!!!!!!!!!!!!!!!!

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003