wincc有一个变量 a ,要求显示它的8个小时的平均值,8:00--16:00,16:00--24:00,24:00--8:00,这三个时段。8小时更新一次,请高手指教
问题补充:
详细一点可以吗,用脚本的话应该怎么写?
最佳答案
在PLC中编程较为简便。应用日期时间中断OB10,将OB10设置为每一小时中断。
1、在OB10中进行编程:
、每一小时中断后,采集变量 a的值。并设一计数器,每一小时中断时该计数器计数一次。
、当计数器为8时即表示要进行要计算8个小时的平均值。
、当计算8个小时的平均值后,将计数器清零。
2、求平均值,可以应用冒泡法,排序后取中间值即可:
假定8个数据,放在DB1中,安放顺序如下:
DBD0
DBD4
…
DBD36
下面是西门子的程序
OPN DB 1 /////打开DB1这个数据块
L 8 ////装载8到MB0中
LL0: T MB 0
L P#0.0 ////装载地址指针,这是关键,不要搞错了
LAR1
L 9
LL1: T MB 2 ////内部循环,进行7次,直到把最大值排到最后
L DBD [AR1,P#0.0]
L DBD [AR1,P#4.0]
<R
JC LL2 ////比较前后两个值,如果前面大于后面的,则前后数据交换
L DBD [AR1,P#0.0]
T #m_temp
L DBD [AR1,P#4.0]
T DBD [AR1,P#0.0]
L #m_temp
T DBD [AR1,P#4.0]
LL2: +AR1 P#4.0 ////指针自动进行加4,因为是浮点数,所以要跳过4个字节
L MB 2
LOOP LL1 ///这个指令自动的将A寄存器里的值减1
L MB 0
LOOP LL0
提问者对于答案的评价:
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc212456.html