冒泡法的话是同一个周期内比较几个数值的大小,但是我现在想实现的功能是比较一个温度在不同的周期内,1S或者1min也好前后比较出现的最大和最小值,各位有没有好的方法啊???
最佳答案
首先你要有一个初始化的功能即什么时候开始求最大值最小值。初始化就是要把最大值给一个负无穷的值,最小值给一个正无穷的最大值,然后每一个扫描周期把当前值和最小值最大值比较,小于最小值则把当前值给最小值变量,大于最大值则把当前值给最大值变量。达到你的时间范围后当前的最大值最小值变量保存的就是你要的值,然后在执行初始化。比如你在ob35(周期100ms)中执行这个功能。如果是1分钟的时间范围则需要600个周期。
L PV//测量值
L MAX//最大值
>=R
JCN M1
L PV
T MAX//
M1:L PV
L MIN//最小值
<=R
JCN M2
L PV
T MIN
M2:L COUNT
L 1
+I
T COUNT
L 600
>=I
JCN M3
L 0
T COUNT
L MAX
T MD0
L MIN
T MD4
L 9.99999* E+43
T MIN
L -9.99999* E+43
T MAX
M3:NOP 0
以上程序运行600个周期(1分钟)后,MAX和MIN为最大值和最小值此时取出来,保存到md0和md4中,初始化原变量。
提问者对于答案的评价:
我用了一个比较笨的方法实现的,不过还是学到了,非常感谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc236472.html