我这几天对间接寻址已经了解很多了,但这个例子从1到9愣是没看懂,望大家指点,谢谢啦!!
问题补充:
如果AC1不大于AC2,那1 2 3这三个程序到NEXT是怎么运行的?
图片说明:
最佳答案
我感觉程序有点不是很对的感觉啊
应该8 和 9单独列一个网络用sm0.0执行就是不管*ac1和*ac2的大小如何,都得相加
解释一下程序
当I0.0上升沿的时候,把vb0的地址指针放到ac1里面,vb4的指针放到ac2里面,进入for循环(从for到next之间的都属于for循环,执行到next自动回来再执行,mw0+1)
如果*ac1>*ac2(双字,就是VD0和VD4比较),5 6 7 是进行交换的,把VD0和VD4交换,如果前面大于成立。这两行作用就是把大的值放到VD4里面
8 9是地址偏移增加,往下继续判断VD4和VD8的值,如果VD4大于VD8,再进行交换
执行完,VD8里面就是最大的数值
我说8 9应该单列一个网络执行,如果开始VD0< VD4,好像就进入死循环了,你有pLC的话可以测试一下
提问者对于答案的评价:
谢谢!!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc126227.html