登录
首页 PLC论坛 三菱Mitsubishi
回帖 发帖
正文

主题:三菱批量32位加减乘除有简单的写法吗?已解决

点击:2135 回复:9

楼主
三菱批量32位加减乘除有简单的写法吗?
请教各位大师
比如D一百到D二九九
都乘以D0送到D三百至D四九九
用FOR好像只能16位的。
最后修改:2018/12/3 11:05:04
18-12-02 21:50

引用 531573862 在 2018/12/2 21:50:53 发言【内容省略】

SIR, 16位乘法指令的结果为32位数据,因此您需要D300~699来存储D100~D199乘以D0的结果。
FOR只是循环次数,一个16位数据作为循环变量足以,我从来没有看见过一个数万次的循环变量还不够用的情况。
至于批量加减乘除请使用循环+变址的方式解决。
Good Luck~
18-12-02 22:11

引用 cvlsam 在 2018/12/2 22:11:11 发言【内容省略】

shi'zh
附件 0.jpg
是这样吗?怎么得出的结果不对啊?
附件 1.jpg
18-12-02 22:24

引用 cvlsam 在 2018/12/2 22:11:11 发言【内容省略】

麻烦帮忙修改一下
18-12-02 22:29
根本不需要用循环的啊!你直接给Z0每次扫描+2即可啊!!
LD SM400;
ADD Z0 K2 Z0;
> Z0 K150 ;
MOV K0 Z0;
再往下就是你的乘法指令那一行
18-12-02 22:37

引用 高雅的雅 在 2018/12/2 22:37:46 发言【内容省略】

这种写法,比如150个数,要150个扫描周期才能完成啊,用FOR,一个周期就搞定,可是感觉被乘数是一个超过16位的数值就算不准了
最后修改:2018/12/3 0:06:54
18-12-02 22:46
32位乘法占用了2个寄存器,每次加2
18-12-03 07:57
INC Z0 改成 ADD Z0 K2 Z0
18-12-03 08:05
刚刚我的确没有注意扫描周期了(我一般应用这种到都是在50数目以下,扫描延迟不是特别厉害就没有注意了,因为多CPU通过总线通讯传输数据一般在监控发现看不到明显延迟:电脑监控本身就有0.3S以上延迟)
18-12-03 09:36
谢谢各位指导,已经解决了
18-12-03 11:03

工控新闻

更多新闻资讯