三菱st中for循环的疑惑,求解!! -凯发网址

wp19950801
级别: 正式会员
精华主题: 0
发帖数量: 36 个
工控威望: 75 点
下载积分: 637 分
在线时间: 10(小时)
注册时间: 2019-06-10
最后登录: 2023-11-24
/
楼主  发表于: 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
/
1楼  发表于: 2021-01-20 22:01
|
有人了解吗
heiheiwodeai
级别: 略有小成
精华主题: 0
发帖数量: 257 个
工控威望: 379 点
下载积分: 998 分
在线时间: 342(小时)
注册时间: 2013-03-26
最后登录: 2025-08-20
/
2楼  发表于: 2021-01-20 23:27
|
图片:
使用for的条件语句计数必须有终止条件,否则就无限循环了,可以用exit跳出去
qq240559043
干就完了
级别: 略有小成
精华主题: 0
发帖数量: 198 个
工控威望: 339 点
下载积分: 4138 分
在线时间: 146(小时)
注册时间: 2012-06-06
最后登录: 2025-07-30
/
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
发帖数量: 61 个
工控威望: 189 点
下载积分: 1197 分
在线时间: 83(小时)
注册时间: 2012-12-31
最后登录: 2025-08-31
查看xiapeng01的 主题 /
4楼  发表于: 2021-01-21 13:07
|
只要m0为on,每个扫描周期都会循环100遍
liaohianbin
成功=目标 坚持
级别: 略有小成
精华主题: 0
发帖数量: 200 个
工控威望: 302 点
下载积分: 2477 分
在线时间: 137(小时)
注册时间: 2014-08-29
最后登录: 2025-09-01
查看liaohianbin的 主题 / 回贴
5楼  发表于: 2021-01-21 13:30
|
循环前每次将d400和d500零不就完了吗,不然每次扫描都会加一
nightblueblu
道阻且长,穷且益坚。
级别: 论坛先锋
精华主题: 0
发帖数量: 1044 个
工控威望: 1867 点
下载积分: 301 分
在线时间: 1162(小时)
注册时间: 2017-02-09
最后登录: 2025-08-30
/
6楼  发表于: 2021-01-21 14:49
|
循环完毕加个判断,复位m0
your happiness is everything.
朱光显
学无止境,继续加油
级别: 略有小成
精华主题: 0
发帖数量: 137 个
工控威望: 214 点
下载积分: 8796 分
在线时间: 104(小时)
注册时间: 2020-07-08
最后登录: 2025-09-02
查看朱光显的 主题 / 回贴
7楼  发表于: 2021-01-26 20:42
|
for开始exit结束,有一次就是exit那一行被不小心删除了,plc直接报错,还有就是除数为0 plc也会报错。哈哈,亲身经历
投湖自尽的鱼
级别: 略有小成
精华主题: 0
发帖数量: 316 个
工控威望: 369 点
下载积分: 1309 分
在线时间: 324(小时)
注册时间: 2020-10-23
最后登录: 2025-09-02
查看投湖自尽的鱼的 主题 / 回贴
8楼  发表于: 2021-01-27 08:50
|
你的if条件m0应该用上升沿的出发ldp,这样只循环100次就会结束
周锅锅
级别: 探索解密
精华主题: 0
发帖数量: 160 个
工控威望: 189 点
下载积分: 2353 分
在线时间: 113(小时)
注册时间: 2020-08-01
最后登录: 2025-08-15
/
9楼  发表于: 2021-02-05 13:55
|
首先你要在for循环外面写
d400 := 0;
d500 := 0;
用之前要先初始化,因为for在一个周期内就能循环完,下个周期不初始化,它就会不停的变化
zhou1211
级别: 略有小成
精华主题:
发帖数量: 206 个
工控威望: 363 点
下载积分: 1174 分
在线时间: 66(小时)
注册时间: 2013-11-04
最后登录: 2025-01-09
/
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;

    网站地图