登录
首页
PLC论坛
西门子SIEMENS
回帖
发帖
正文
主题:s7 200的DIV
点击:2589 回复:6
楼主
编辑
引用
管理
hjz123
为什么DIV指令的高16位的余数不对呢?谁能告诉我吗?
04-01-03 20:13
1楼
编辑
引用
管理
dzfa
请贴出你的程序和结果.才能回答你
04-01-04 11:45
2楼
编辑
引用
管理
hjz123
程序块:
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
3楼
编辑
引用
管理
dzfa
数据都对的.低字节为商,高字节为余数.
注意,状态图中的数据是以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
4楼
编辑
引用
管理
hjz123
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
5楼
编辑
引用
管理
dzfa
楼上的,你理解错了吧.余数是两个整数相除后不能被整除的部分,也是个整数.不是你所指的两个数相除的商的小数部分.
DIV是整数运行指令,不可能得出小数的结果的.
如果要得出你要的结果,请把数据都转成浮点数后以浮点数格式运算.
04-01-09 14:52
6楼
编辑
引用
管理
hjz123
哎,居然把这个问题搞糊涂了,该打。谢谢DZFA!!!!!!!!!!!!!!!!
04-01-09 18:09
工控新闻
西门子发布两款SIMATIC IPC新品
五大应用场景示范 看台达SCARA机器人玩转智能生产线
中国机械工业联合会:预计2026年机械工业主要指标增速在5.5%左右
越疆第三批全尺寸工业人形机器人量产交付,朝着更深、更实的产业应用推进
尼得科设立机床共创型技术网点“技术中心”
宁德时代与泉州市签署合作协议,共建智能零碳电池工厂
2026西门子数字化工业集团分销商业务加速峰会圆满落幕
六十载创新积淀,ADI开启边缘智能新篇章
更多新闻资讯