wp19950801
级别: 正式会员
精华主题: 0
发帖数量: 36 个
工控威望: 75 点
下载积分: 637 分
在线时间: 10(小时)
注册时间: 2019-06-10
最后登录: 2023-11-24
查看wp19950801的 主题 / 回贴
楼主  发表于: 2021-01-20 21:07
图片:
图片:
图片:
IF M0 THEN
FOR num:=0 to 99 by1 D0
INC(SM400,D400);
IF num=6 then
INC (SM400,D500);
END_FOR;
END_IF;
d200:=num+d200;
END_IF;
这段程序for循环100次后,为什D400,D500还在不断的刷新。for循环次数到不应该跳出来吗??
疑惑。
wp19950801
级别: 正式会员
精华主题: 0
发帖数量: 36 个
工控威望: 75 点
下载积分: 637 分
在线时间: 10(小时)
注册时间: 2019-06-10
最后登录: 2023-11-24
查看wp19950801的 主题 / 回贴
1楼  发表于: 2021-01-20 22:01
有人了解吗
heiheiwodeai
级别: 略有小成
精华主题: 0
发帖数量: 206 个
工控威望: 328 点
下载积分: 895 分
在线时间: 300(小时)
注册时间: 2013-03-26
最后登录: 2024-03-28
查看heiheiwodeai的 主题 / 回贴
2楼  发表于: 2021-01-20 23:27
图片:
使用FOR的条件语句计数必须有终止条件,否则就无限循环了,可以用exit跳出去
qq240559043
干就完了
级别: 略有小成
精华主题: 0
发帖数量: 174 个
工控威望: 312 点
下载积分: 4060 分
在线时间: 127(小时)
注册时间: 2012-06-06
最后登录: 2024-03-28
查看qq240559043的 主题 / 回贴
3楼  发表于: 2021-01-21 08:16
IF M0 THEN
FOR num:=0 TO 99 BY 1 DO
INC(SM400,D400);
  IF num=6 THEN
      INC(SM400,D500);
  END_IF;
END_FOR;
D200:=num+D200;
END_IF;
IF D400=100 THEN
    M0:= FALSE;
END_IF;
FOR循环开始时都会初始化循环变量,你这样写PLC每个扫描周期都会增加100。
xiapeng01
级别: 探索解密
精华主题: 0
发帖数量: 57 个
工控威望: 183 点
下载积分: 1177 分
在线时间: 67(小时)
注册时间: 2012-12-31
最后登录: 2024-03-28
查看xiapeng01的 主题 / 回贴
4楼  发表于: 2021-01-21 13:07
只要M0为on,每个扫描周期都会循环100遍
liaohianbin
成功=目标+坚持
级别: 略有小成
精华主题: 0
发帖数量: 192 个
工控威望: 295 点
下载积分: 2493 分
在线时间: 124(小时)
注册时间: 2014-08-29
最后登录: 2024-03-26
查看liaohianbin的 主题 / 回贴
5楼  发表于: 2021-01-21 13:30
循环前每次将D400和D500零不就完了吗,不然每次扫描都会加一
nightblueblu
道阻且长,穷且益坚。
级别: 论坛先锋
精华主题: 0
发帖数量: 1010 个
工控威望: 1804 点
下载积分: 529 分
在线时间: 1091(小时)
注册时间: 2017-02-09
最后登录: 2024-01-22
查看nightblueblu的 主题 / 回贴
6楼  发表于: 2021-01-21 14:49
循环完毕加个判断,复位M0
Your happiness is everything.
朱光显
学无止境,继续加油
级别: 探索解密
精华主题: 0
发帖数量: 74 个
工控威望: 148 点
下载积分: 3966 分
在线时间: 45(小时)
注册时间: 2020-07-08
最后登录: 2023-12-19
查看朱光显的 主题 / 回贴
7楼  发表于: 2021-01-26 20:42
For开始Exit结束,有一次就是Exit那一行被不小心删除了,PlC直接报错,还有就是除数为0 PLC也会报错。哈哈,亲身经历
投湖自尽的鱼
级别: 略有小成
精华主题: 0
发帖数量: 288 个
工控威望: 335 点
下载积分: 1247 分
在线时间: 259(小时)
注册时间: 2020-10-23
最后登录: 2024-03-22
查看投湖自尽的鱼的 主题 / 回贴
8楼  发表于: 2021-01-27 08:50
你的IF条件M0应该用上升沿的出发LDP,这样只循环100次就会结束
周锅锅
级别: 探索解密
精华主题: 0
发帖数量: 158 个
工控威望: 187 点
下载积分: 2349 分
在线时间: 113(小时)
注册时间: 2020-08-01
最后登录: 2023-03-18
查看周锅锅的 主题 / 回贴
9楼  发表于: 2021-02-05 13:55
首先你要在for循环外面写
D400 := 0;
D500 := 0;
用之前要先初始化,因为for在一个周期内就能循环完,下个周期不初始化,它就会不停的变化
zhou1211
级别: 略有小成
精华主题: 1 篇
发帖数量: 203 个
工控威望: 359 点
下载积分: 1165 分
在线时间: 64(小时)
注册时间: 2013-11-04
最后登录: 2023-11-10
查看zhou1211的 主题 / 回贴
10楼  发表于: 2021-02-06 11:24
引用
引用楼主wp19950801于2021-01-20 21:07发表的 三菱ST中For循环的疑惑,求解!! :
IF M0 THEN
FOR num:=0 to 99 by1 D0
INC(SM400,D400);
IF num=6 then
INC (SM400,D500);
.......

rtgM0(CLK:= M0);
IF rtgM0.Q then
  
    中间接你的for循环,你那m0一通就是N个周期了,会一直加

end_if;