你说的这个问题比较复杂,我早几年前遇到这样的需求,但是没去验证,最近程序已写完,还没验证。
楼主可以从以下几个思路解决。
1、通过200的填表指令。FIFO,具体查看系统手册或指令手册。因为AIW刚好是字类型,可以直接用填表指令,每个规定的计时脉冲,触发一次填表指令。
数据填充完成,如果要去除最大值最小值,需要用到排序,具体算法可以参考冒泡法,需要用到指针,即间接寻址。
求平均值可以通过指针,也可以直接地址运算。(前提是你的数据放在某一个固定区域)
2、通过指针运算。存储数据通过指针变址存储,可针对不同数据类型,比如B,WORD,DINT,REAL,然后再通过上面说的排序,去除最大值,最小值,求中间的平均值。(排序和求平均值参考上面描述)
原来设计这个程序的目的是为了在线称重,去除传送带等其他偶然误差和固定误差。
程序未加注释,不贴了。冒泡法排序用到了FOR NEXT指令。
你的问题乱七八糟的
输入是什么
输出是什么
要求是什么
按你这里说的去最大和最小,剩下的8个加起来除以8不就好了,还有什么可问的