登录
首页
PLC论坛
西门子SIEMENS
回帖
发帖
正文
主题:s7 200的DIV
点击:2606 回复: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
工控新闻
人工智能助力新型工业化 第九届数字中国建设峰会工业智能产业生态大会成功举办
倍福基于 PC 的控制技术和 EtherCAT:安全设计,智赢未来
施耐德电气尹正:加快培育产业新动能,必须能源先行
舍弗勒长沙新研发大楼正式启用,持续深耕本土研发
从“造车”到“造人” 特斯拉Optimus机器人量产
工信部印发《工业场景数据要素应用参考指引》探索工业数据“采、集、用”有效路径
超越“单点进化”:拥抱“全链智造”,驱动机床产业价值升维
美的集团:一季度营收净利同比实现“双增” 机器人与自动化营收82亿元
更多新闻资讯