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