f1652577
沧海一声笑!
级别: 探索解密
精华主题: 0
发帖数量: 16 个
工控威望: 116 点
下载积分: 3369 分
在线时间: 26(小时)
注册时间: 2016-04-15
最后登录: 2023-08-18
查看f1652577的 主题 / 回贴
楼主  发表于: 2017-11-15 16:46
图片:
MOV (SM402 ,K0,D20);
MOV (SM402 ,K0,D21);
FOR D20 :=K0 TO K99    BY K1 DO
    D20:= D20+K1;
    D21:= D21+D20;
END_FOR;

模拟时为什么D21中的数值一直在变?
洁白的月光
级别: 探索解密
精华主题: 0
发帖数量: 62 个
工控威望: 160 点
下载积分: 526 分
在线时间: 103(小时)
注册时间: 2016-03-12
最后登录: 2018-10-14
查看洁白的月光的 主题 / 回贴
1楼  发表于: 2017-11-15 17:02
把前两句搞成 d20:=0;
d21:=0;
试试。或者换成M8000。没用过Q,应该是SM400把。。
洁白的月光
级别: 探索解密
精华主题: 0
发帖数量: 62 个
工控威望: 160 点
下载积分: 526 分
在线时间: 103(小时)
注册时间: 2016-03-12
最后登录: 2018-10-14
查看洁白的月光的 主题 / 回贴
2楼  发表于: 2017-11-15 19:36
不好意思,弄错了。感觉三菱的循环程序有问题。我用C语言写了同样的程序。C语言就可以。如果你要解决那个问题。,你不防可以写个IF M0 THEN,当M0启动开始循环。然后你D20增加到101.在循环语句里嵌套一个,IF d20=100 then,m0:=false; exit;end_if;end_for;end_if;
洁白的月光
级别: 探索解密
精华主题: 0
发帖数量: 62 个
工控威望: 160 点
下载积分: 526 分
在线时间: 103(小时)
注册时间: 2016-03-12
最后登录: 2018-10-14
查看洁白的月光的 主题 / 回贴
3楼  发表于: 2017-11-16 09:42
是可以的,我都试过了。反正你把他包装成一个快。让他执行一次就好了。
洁白的月光
级别: 探索解密
精华主题: 0
发帖数量: 62 个
工控威望: 160 点
下载积分: 526 分
在线时间: 103(小时)
注册时间: 2016-03-12
最后登录: 2018-10-14
查看洁白的月光的 主题 / 回贴
4楼  发表于: 2017-11-16 14:31
刚刚又试验了下,用while语句就没这个毛病。
mov(m8002,k0,d20);
mov(m8002,k0,d21);
while word_to_int(d20)<100 do
d20:=d20+1;
d21:=d20+d21;
end_while;
测试结果正确。
洁白的月光
级别: 探索解密
精华主题: 0
发帖数量: 62 个
工控威望: 160 点
下载积分: 526 分
在线时间: 103(小时)
注册时间: 2016-03-12
最后登录: 2018-10-14
查看洁白的月光的 主题 / 回贴
5楼  发表于: 2017-11-16 14:34
七楼说的是很详细。我也明白了。