楼主最近还看过
根据LZ所描述,写了个子程序,手头没plc,无法测试,忘大家帮忙测试下。
时间仓促,肯定有不对的地方,欢迎批评,我先睡觉!
编程思路:假设情况为考试成绩排名次。每个VD数据,对应一个VB名次;然后循环比较每个数据,如果小于被比较的数据,对应的VB名次+1。每个VB名次初始都为1,倘若一个数最大,则VB名次不会+1,那么它还是1(第一名);如果它最小,都比它大,+1加了4次,那么对应的VB名次则为5。
注意:1)没有处理如果数据相同的时候,则会出现并列名次。如果存在并列第一的情况,那么就没有第二名,直接是第三名。2)一个周期即可完成排名操作。数据变化时候再调用,要注意扫描周期哈。
逐个比较,如果小于被比较值,对应的VB名次+1;比较完之后被比较值的物理地址AC1+4
每个内循环结束后,比较的VD值物理地址+4,VB名次+1,并将赋初值为1