5UFOR循环变址 点击:599 | 回复:5



水寒风似刀

    
  • 精华:0帖
  • 求助:13帖
  • 帖子:13帖 | 12回
  • 年度积分:0
  • 历史总积分:4388
  • 注册:2020年3月08日
发表于:2020-08-26 15:14:38
楼主
求助帖100分-已结帖

  
/*这样老是读不到数据,或者读不到3个数据,只能读到1或2个 ICOUNT类型为 字有符号 */


FOR ICOUNT:=1 TO 3  BY 1 DO   
     Z1:=ICOUNT;
         ADPRW(TRUE,ICOUNT,04,00,01,D100Z1,M205);
     END_FOR;

/* 换成 这样完全没问题*/
Z1:=1;
ICOUNT:=1;
ADPRW(TRUE,ICOUNT,04,00,01,D100Z1,M205);

Z1:=2;
ICOUNT:=2;
ADPRW(TRUE,ICOUNT,04,00,01,D100Z1,M205);

Z1:=3;
ICOUNT:=3;
ADPRW(TRUE,ICOUNT,04,00,01,D100Z1,M205);



楼主最近还看过



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10219回
  • 年度积分:3353
  • 历史总积分:48938
  • 注册:2005年4月22日
发表于:2020-08-26 20:30:46
1楼

因为for循环将在一个扫描周期内结束,而ADPRW的执行时间大概在23个微秒,且ADPRW无法同时执行2条指令,因此无法保证在for循环中得到正确的执行。


For循环被用来进行变量的计算,而不是读写外部变量甚至于通讯的用途,这一点和PC上的编程是截然不同的。


HAVE FUN!

水寒风似刀

  • 精华:0帖
  • 求助:13帖
  • 帖子:13帖 | 12回
  • 年度积分:0
  • 历史总积分:4388
  • 注册:2020年3月08日
发表于:2020-08-26 15:18:33
2楼

折腾了一天,都找不出原因,请哪位大侠帮忙指点下。。。

hinet64

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 448回
  • 年度积分:22
  • 历史总积分:472
  • 注册:2014年8月03日
发表于:2020-08-27 18:41:04
3楼

2F说得很好~正解

落叶归根87

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 338回
  • 年度积分:0
  • 历史总积分:792
  • 注册:2013年8月05日
发表于:2020-08-28 11:23:27
4楼

都有解了,把执行语句放for外面

Smile-lyc

  • [管理员]
  • 精华:127帖
  • 求助:50帖
  • 帖子:3482帖 | 22331回
  • 年度积分:1963
  • 历史总积分:145694
  • 注册:2006年8月04日
发表于:2020-10-07 16:57:34
5楼

感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。

对于求助者要求:

1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;

2、如果在求助答疑过程中,自己已经有效解决问题,建议大家把解决问题方法在自己求助帖分享,有效分享可以获得50积分奖励。



热门招聘
相关主题

官方公众号

智造工程师