yzc3699
级别: 正式会员
精华主题: 0
发帖数量: 7 个
工控威望: 96 点
下载积分: 503 分
在线时间: 19(小时)
注册时间: 2010-09-03
最后登录: 2017-04-21
查看yzc3699的 主题 / 回贴
楼主  发表于: 2011-09-19 21:37
描述:监视截图
图片:
三菱程序监视,这是一个通讯程序中的数据运算处理步,请看D20中的数据,为何从正数变成了负数,从该条指令后,绝对无关于D20的32位的运算,若把MUL D20 D14 D22改成DMUL D20 D14 D22则D22中的数据为正值并且按运算正常思路,结果都是对的,哪位工控朋友如果有过这样的经验,请赐教,QQ:76609809.谢谢!
yzc3699
级别: 正式会员
精华主题: 0
发帖数量: 7 个
工控威望: 96 点
下载积分: 503 分
在线时间: 19(小时)
注册时间: 2010-09-03
最后登录: 2017-04-21
查看yzc3699的 主题 / 回贴
1楼  发表于: 2011-09-19 21:38
补充一下,这个问题是偶尔发生的,不是每次运算结果都是这样的,绝大多数运算结果都是对的!!
saisam2006
级别: 论坛先锋
精华主题: 0
发帖数量: 483 个
工控威望: 1238 点
下载积分: 13533 分
在线时间: 530(小时)
注册时间: 2006-09-17
最后登录: 2024-10-28
查看saisam2006的 主题 / 回贴
2楼  发表于: 2011-09-19 21:52
一个字最大是32767    还有一个符号位。你查一下书吧!        
萧风
当你不能改变你身处的环境时,可以重新选择环境
级别: 略有小成
精华主题: 0
发帖数量: 225 个
工控威望: 487 点
下载积分: 1128 分
在线时间: 677(小时)
注册时间: 2010-10-21
最后登录: 2024-10-16
查看萧风的 主题 / 回贴
3楼  发表于: 2011-09-19 22:07
MUI D13 H100 的运算结果大于16位寄存器(32767)D20的空间,ADD D20的数字就会变负数,请楼主多看16位和32位数据运算的说明
本帖最近评分记录:
  • 下载积分:+5(汇荣铝业) 简洁明了
  • 學無止境
    正在学习
    级别: 探索解密
    精华主题: 0
    发帖数量: 34 个
    工控威望: 158 点
    下载积分: 2805 分
    在线时间: 43(小时)
    注册时间: 2011-09-14
    最后登录: 2022-03-10
    查看正在学习的 主题 / 回贴
    4楼  发表于: 2011-09-20 07:14
    学习了
    yuaiwu
    wemhoener
    级别: 网络英雄

    精华主题: 0
    发帖数量: 473 个
    工控威望: 10131 点
    下载积分: 11459 分
    在线时间: 418(小时)
    注册时间: 2007-11-10
    最后登录: 2024-10-27
    查看yuaiwu的 主题 / 回贴
    5楼  发表于: 2011-09-20 08:08
    上面一行是两个一个字(16)数相乘,结果会占用两个字(32),所以显示的是32位数值
    下面显示的只显示48384前15位值,16位是符号位,用计算器验证了下,也是对的
    gcbplc
    QQ3130569178 PLC编程、登录口令修改删除、调试
    级别: 工控侠客
    精华主题: 0
    发帖数量: 339 个
    工控威望: 3228 点
    下载积分: 11884 分
    在线时间: 399(小时)
    注册时间: 2011-06-23
    最后登录: 2024-10-31
    查看gcbplc的 主题 / 回贴
    6楼  发表于: 2011-09-20 09:09
    学习了
    时间都去哪了?!!!
    QQ3130569178 PLC编程、登录口令修改删除、调试、备份 ;FB块口令解除
    550374389
    !!!
    级别: 论坛先锋

    精华主题: 0
    发帖数量: 696 个
    工控威望: 1161 点
    下载积分: 5237 分
    在线时间: 2360(小时)
    注册时间: 2010-11-28
    最后登录: 2024-10-11
    查看550374389的 主题 / 回贴
    7楼  发表于: 2012-01-14 23:23
    楼上,关键是MUL后面显示的结果是D20跟D21两个寄存器的共同结果,是32位的。后面的ADD中的D20显示的只是D20一个寄存器的结果,时16位的,看看ADD SUB,MUL和DIV这几条指令的用法你就明了!!!
    dgredboy
    级别: 略有小成
    精华主题: 0
    发帖数量: 260 个
    工控威望: 344 点
    下载积分: 617 分
    在线时间: 32(小时)
    注册时间: 2010-07-14
    最后登录: 2012-06-15
    查看dgredboy的 主题 / 回贴
    8楼  发表于: 2012-01-15 22:39
    学习了。。。。。。。。。。。。