请大家帮我分析下,到底是怎么了

OPN   DB    20
      L     P#4.0
      T     MD   108
      L     P#DBX 0.0
      T     MD   100
      L     50
next: T     MW     0
      LAR1  MD   100
      L     MD   100
      L     MD   108
      +D    
      LAR2  
      A(    
      L     D [AR1,P#0.0]
      L     D [AR2,P#0.0]
      >D    
      )     
      JCN   _000
      TAR1  MD   100
      L     P#8.0
      T     MD   108
      JU    _001
_000: TAR2  MD   100
      L     P#4.0
      T     MD   108
_001: L     MW     0
      LOOP  next
      L     DBD [MD 100]
      T     MD   20
  程序如上所示,是想找到最大值与最大值的地址。DB20从DB2.DBD0~DB2.DBD28分别是l#2,l#2,l#3,l#2,l#5,l#0,l#0,l#8
为什么我找出来的最大值是5 和其对应的地址啊?为什么不是8和其对应的地址?程序哪里错了啊?快疯掉了……

问题补充:
WWCWWC,你那边是我写的,但是我后来发现是有问题的,我自己现在也高糊了,对不起啊!

最佳答案

你的问题在于当比较到地址16和24时,你的地址就定在了16和24这两个数,不会再改变了。
还有就是你为什么要循环50 次呢?

提问者对于答案的评价:
确实很难看出来啊,按照你的结果分析了好久。是不是因为地址20与地址24的是一样大,当比较到这里的时候,我AR1里面始终是地址16,而AR2却始终是16+8也就是24,在这里就停止往下走了。

最佳答案作者回复:
我觉得是你的程序中当有间隔的数值比较时,小于对但大于时计算地址就出错了。
参见:http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=102637&cid=1029
有我写的一段,你可以测试一下。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc238101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午5:43
下一篇 2018年12月1日 下午5:43

相关推荐