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中的数值一直在变?
conchnit
级别: 略有小成
精华主题: 0
发帖数量: 131 个
工控威望: 456 点
下载积分: 6107 分
在线时间: 69(小时)
注册时间: 2013-03-17
最后登录: 2024-11-03
查看conchnit的 主题 / 回贴
1楼  发表于: 2017-11-16 14:15
引用
引用第9楼枫落云端于2017-11-16 09:53发表的  :
以上是M0 为ON时执行一次循环,如果只是想PLC开机自动算一次,那就变成
MOV (SM402 ,K0,D20);
MOV (SM402 ,K0,D21);
IF SM402 THEN
    FOR D20 :=K0 TO K99    BY K1 DO
.......



三菱ST里,32位数据传送 你是如何写的?
踏实走好每一步. 承接自动化项目.
conchnit
级别: 略有小成
精华主题: 0
发帖数量: 131 个
工控威望: 456 点
下载积分: 6107 分
在线时间: 69(小时)
注册时间: 2013-03-17
最后登录: 2024-11-03
查看conchnit的 主题 / 回贴
2楼  发表于: 2017-11-16 14:20
引用
引用第7楼枫落云端于2017-11-16 09:46发表的  :
前两句只是PLC运行第一个扫描周期起作用,每一个FOR循环,D20都会从0自加到99。D21=(1+2+...+99)*N个扫描周期,由于直接使用D21寄存器,默认为16位的有符号整数,最大只能到+32767,再加就会溢出到符号位,所以变成负数,之后自加又变成正数,继续加又溢出变负数,一直不断地循环

分析非常透彻 到位,是个高手
踏实走好每一步. 承接自动化项目.