langman
级别: 家园常客
精华主题: 0
发帖数量: 576 个
工控威望: 606 点
下载积分: 1500 分
在线时间: 227(小时)
注册时间: 2008-06-23
最后登录: 2021-04-09
查看langman的 主题 / 回贴
楼主  发表于: 2008-12-17 18:37
有一个工程,要求计算合格率(良品/总产量),用的是三菱FX1N PLC,不支持浮点运算,
为了提高精度,不能直接用DDIV指令(良品和总产量均为32位数,以下讨论的指令也都是32位指令)。
我的思路是这样的:先将良品*10000,再将此数除以总产量,得到3位或4位整数,就可以在人机界面上显示。
可问题来了:
1.当良品超过一定数时,再乘以10000时,会溢出
2.32位数(如 第31位值为1时)乘以10000,变成64位,再用32位指令除显然也是不对的,最终显示的结果是0(人机最多只能显示双字,即32位数)
朗工自动化,承接自动化改造工程:PLC控制系统、伺服系统、气动、步进、节能灯设备、机械手、集成电路测试设备、变频器、人机界面,欢迎洽谈,
zhangshichao
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看zhangshichao的 主题 / 回贴
1楼  发表于: 2009-02-14 10:46
搂住应该在用个计数器参与运算啊, 比如 〉10000, 计数器C0就加1,相当于进位处理
这样可以给你省出很多空间的