zhongliang
学无止境
级别: 工控侠客
精华主题: 0
发帖数量: 718 个
工控威望: 2077 点
下载积分: 3178 分
在线时间: 564(小时)
注册时间: 2012-10-11
最后登录: 2024-04-29
查看zhongliang的 主题 / 回贴
楼主  发表于: 2019-07-11 10:58
图片:
如题,编写了一个循环程序(1到10求和),当循环次数到达以后,没有跳出循环,FOR,NEXT之间的程序一直在执行,不知是什么原因,请大师们指教,见笑了,谢谢
****************************学海无涯****************************
nos001
级别: 探索解密
精华主题: 0
发帖数量: 54 个
工控威望: 110 点
下载积分: 814 分
在线时间: 42(小时)
注册时间: 2018-03-31
最后登录: 2022-10-06
查看nos001的 主题 / 回贴
1楼  发表于: 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重新编辑 ]