zhongliang
学无止境
级别: 工控侠客
精华主题: 0
发帖数量: 742 个
工控威望: 2102 点
下载积分: 3689 分
在线时间: 582(小时)
注册时间: 2012-10-11
最后登录: 2024-11-13
查看zhongliang的 主题 / 回贴
楼主  发表于: 2019-07-11 10:58
图片:
如题,编写了一个循环程序(1到10求和),当循环次数到达以后,没有跳出循环,FOR,NEXT之间的程序一直在执行,不知是什么原因,请大师们指教,见笑了,谢谢
****************************学海无涯****************************
不小心遇见你
自动项目、PLC、视觉、通讯等工控软件开发QQ3515716
级别: 工控侠客

精华主题: 3 篇
发帖数量: 2045 个
工控威望: 2962 点
下载积分: 25180 分
在线时间: 1434(小时)
注册时间: 2014-01-05
最后登录: 2024-11-16
查看不小心遇见你的 主题 / 回贴
1楼  发表于: 2019-07-11 11:26
每个死奥妙周期都在执行哦
你运行三天 他绝对不会不干停止运行
项目、视觉、通讯QQ3515716
黑白工控
明天会更好
级别: 略有小成
精华主题: 0
发帖数量: 78 个
工控威望: 479 点
下载积分: 1645 分
在线时间: 64(小时)
注册时间: 2019-06-10
最后登录: 2024-11-16
查看黑白工控的 主题 / 回贴
2楼  发表于: 2019-07-11 12:06
解决了吗 分享一下
nos001
级别: 探索解密
精华主题: 0
发帖数量: 54 个
工控威望: 110 点
下载积分: 814 分
在线时间: 42(小时)
注册时间: 2018-03-31
最后登录: 2022-10-06
查看nos001的 主题 / 回贴
3楼  发表于: 2019-07-11 12:48
2楼好深奥啊,看不懂。
没有条件限制,每个扫描周期都会执行。

st写起来方便多了
复制代码
  1. (*****************************************************************************************************
  2. * 配方处理
  3. * 根据产品的不同,运行参数设置各不相同,将这些不同的运行参数保存在各自的缓存,并将缓存编号,方便生产不同产品时调用。
  4. *****************************************************************************************************)
  5. IF Hmi_RecipeNo < 1 THEN
  6.     Hmi_RecipeNo := 1;
  7. END_IF;    
  8. (* 配方编号:1~ 8,写入每个配方缓存的首址 *)
  9. IF( RecipeBuf[400] <> 16#55aa ) THEN
  10.     RecipeBuf[400] := 16#55aa;
  11.     FOR j := 0 TO 7 BY 1 DO
  12.         RecipeBuf[ j * 50  ] := j + 1;
  13.     END_FOR;
  14. END_IF;
  15. (* Save Recipe *)
  16. IF LDP( TRUE, hmiKey_SaveRecipe ) THEN
  17.     FOR j := 0 TO 49 BY 1 DO
  18.         RecipeBuf[ j + ( Hmi_RecipeNo - 1 ) * 50  ] := ParamBuf[j];
  19.     END_FOR;    
  20. END_IF;
  21. (* Locate Recipe *)
  22. IF( Hmi_RecipeNo <> preRecipe ) THEN
  23.     preRecipe := Hmi_RecipeNo;
  24.     FOR j := 0 TO 49 BY 1 DO
  25.         ParamBuf[j] := RecipeBuf[ j + ( Hmi_RecipeNo - 1 ) * 50  ];
  26.         (* 小于零的参数全部初始化为10 *)
  27.         IF ParamBuf[j] < 0 THEN
  28.             ParamBuf[j] := 10;
  29.         END_IF;
  30.     END_FOR;        
  31. END_IF;
[ 此帖被nos001在2019-07-11 14:55重新编辑 ]
w45062099
多做事,少说话!
级别: 略有小成
精华主题: 0
发帖数量: 340 个
工控威望: 450 点
下载积分: 1293 分
在线时间: 1045(小时)
注册时间: 2014-10-23
最后登录: 2024-11-15
查看w45062099的 主题 / 回贴
4楼  发表于: 2019-07-11 13:41
这哪是1到10的求和?在搞什么?
每天只要小小一步都是在进步!
zhongliang
学无止境
级别: 工控侠客
精华主题: 0
发帖数量: 742 个
工控威望: 2102 点
下载积分: 3689 分
在线时间: 582(小时)
注册时间: 2012-10-11
最后登录: 2024-11-13
查看zhongliang的 主题 / 回贴
5楼  发表于: 2019-07-11 14:07
引用
引用第4楼w45062099于2019-07-11 13:41发表的  :
这哪是1到10的求和?在搞什么?

你有何高论
****************************学海无涯****************************
twingo49
级别: 网络英雄

精华主题: 0
发帖数量: 559 个
工控威望: 9134 点
下载积分: 22555 分
在线时间: 1019(小时)
注册时间: 2013-08-08
最后登录: 2024-11-10
查看twingo49的 主题 / 回贴
6楼  发表于: 2019-07-11 14:12
引用
引用楼主zhongliang于2019-07-11 10:58发表的 循环语句-无法跳出 :
如题,编写了一个循环程序(1到10求和),当循环次数到达以后,没有跳出循环,FOR,NEXT之间的程序一直在执行,不知是什么原因,请大师们指教,见笑了,谢谢

執行9次後要讓他跳出來啊,你這樣寫是執行9次後跳出來然後再重新執行9次。
zhongliang
学无止境
级别: 工控侠客
精华主题: 0
发帖数量: 742 个
工控威望: 2102 点
下载积分: 3689 分
在线时间: 582(小时)
注册时间: 2012-10-11
最后登录: 2024-11-13
查看zhongliang的 主题 / 回贴
7楼  发表于: 2019-07-11 14:34
图片:
问题解决,第一行M8002,改成M8000,即可
****************************学海无涯****************************
weixin-keji
工控小妖
级别: 探索解密
精华主题: 0
发帖数量: 76 个
工控威望: 171 点
下载积分: 759 分
在线时间: 81(小时)
注册时间: 2016-01-21
最后登录: 2024-11-16
查看weixin-keji的 主题 / 回贴
8楼  发表于: 2019-07-11 14:37
把M8002改成M8000
枫落云端
施主,脚抬一下
级别: 略有小成

精华主题: 0
发帖数量: 341 个
工控威望: 465 点
下载积分: 1595 分
在线时间: 410(小时)
注册时间: 2017-10-10
最后登录: 2024-11-17
查看枫落云端的 主题 / 回贴
9楼  发表于: 2019-07-11 14:47
图片:
PLC开机第一个扫描周期会跑进P1执行FOR循环,之后的PLC扫描周期都不会进行循环,这个应该满足楼主的意图
青年加油
好好学习,努力挣钱
级别: 论坛先锋
精华主题: 0
发帖数量: 182 个
工控威望: 1057 点
下载积分: 9974 分
在线时间: 151(小时)
注册时间: 2019-06-08
最后登录: 2024-11-17
查看青年加油的 主题 / 回贴
10楼  发表于: 2019-07-12 14:28
楼主牛掰,跟楼主学了一招
似水流年ol
级别: 论坛先锋
精华主题: 0
发帖数量: 89 个
工控威望: 1120 点
下载积分: 606 分
在线时间: 124(小时)
注册时间: 2017-07-22
最后登录: 2024-11-15
查看似水流年ol的 主题 / 回贴
11楼  发表于: 2019-07-12 16:25
引用
引用楼主zhongliang于2019-07-11 10:58发表的 循环语句-无法跳出 :
如题,编写了一个循环程序(1到10求和),当循环次数到达以后,没有跳出循环,FOR,NEXT之间的程序一直在执行,不知是什么原因,请大师们指教,见笑了,谢谢

试着在FOR K9上面加一段LD SM400 ;MOV K0 D1;试试