当下面的程序执行Average命令时,它将平均多少个数据点。似乎因为每次扫描后都会调用该表,所以平均值应该是
只是一个值的平均值。。。这个功能是如何工作的?
'声明变量和单位
公共电池V
单位BattV=伏特
'定义表
数据表(电池平均值表,真,-1)
数据间隔(0,1,最小值,10)
平均值(1,BattV,FP2,错误)
床头柜
'主程序
开始进度
扫描(1,秒,1.0)
蓄电池(蓄电池电压)
调用表(电池平均值表)
下一次扫描
结束程序
新对话如下:
你的
数据间隔(0,1,最小值,10)
和
扫描(1,秒,1.0)
共同推动了平均值中的样本数量。在60秒内的59秒内,电池电压测量值被简单地添加到蓄电池中,并且计数器被递增。在一分钟的顶部,最后一个蓄电池电压被加到蓄电池上,计数器再增加一次。然后将累加器除以计数器,在这种情况下,计数器应为60,并将得到的平均值写入表中。然后累加器和计数器被清除,在这种情况下,它在分钟结束后的一秒钟重新开始。
新对话如下:
这让我想起了我见过几次的错误,更多的是基于数组的记录器,但我认为这也适用于基于表的记录器。问题是,当对表或最终存储指令的调用被放入if语句中时,或者不是在每次通过程序时都执行。当您这样做时,平均指令只在程序进入if语句时累积和计数。例如:
1:电池电压(P10)
1:1位置[BattV]
2:如果时间是(P92)
进入1:0分钟(秒--)
2:1间隔(与上述单位相同)
3:30然后做
3:Do(第86页)
1:10将输出标志设置为高(标志0)
4:实时(P77)
1:1220年、日、小时/分钟(午夜=2400)
5:平均值(P71)
1:1代表
2:1位置[BattV]
6:结束(P95)
在这种情况下,你的平均值只会是1。最好只使用P92设置输出标志,并将最终存储指令设置在该指令的正下方。
新对话如下:
我也有类似的问题。这就是我的CR1000程序的工作原理(简化):
'程序启动/////////////////////
公用MyVar
数据表(MyTable,1,-1)
数据间隔(0,30,最小值,10)
平均值(1,MyVar,IEEE4,错误)
最大值(1、MyVar、IEEE4、False、False)
床头柜
开始进度
扫描(30,秒,0,0)
[测量一些东西并将其放入MyVar]
如果TimeIntoInterval(0.30,min),则调用表MyTable
下一次扫描
结束程序
'程序结束/////////////////////
IF语句本应被省略。我现在已经更正了代码,但我有来自本站早些时候的宝贵数据,希望能恢复。请更详细地告诉我Average和Maximum是如何工作的。
在我擦除IF语句之前的数据已经损坏,我可以看出,但现在看起来很好。以前和现在有什么区别?
“平均值”和“最大值”何时清除并准备好进行新的运行?
我希望有人能帮我。如果是这样的话,我也许可以做一个反向滤波器来获得原始数据。
非常感谢。
*最后更新人:Bo于2010年2月22日上午7:11*
新对话如下:
";你的
数据间隔(0,1,最小值,10)
和
扫描(1,秒,1.0)
共同推动了平均值中的样本数量。在60秒内的59秒内,电池电压测量值被简单地添加到蓄电池中,并且计数器被递增。在一分钟的顶部,最后一个蓄电池电压被加到蓄电池上,计数器再增加一次。然后将累加器除以计数器,在这种情况下,计数器应为60,并将得到的平均值写入表中。然后累加器和计数器被清除,在这种情况下,它在分钟结束后的一秒钟重新开始";
谢谢你澄清这一点。我阅读了average函数的帮助文件,但其中没有提到累加器和计数器。是否有这样一份文件,其中与DataTable和Scan指令一起工作的函数,以这种详细程度进行了记录?
新对话如下:
博-在你移除之前
如果TimeIntoInterval(0.30,分钟)。。。
语句中,您得到的是瞬时值(与Sample指令相同),而不是平均值。当你只有同一时间间隔的瞬时值时,无论如何都无法计算出平均值是多少。
新对话如下:
VA转速技术14
以下内容在CR9000X手册中。如果在其他手册中,这些信息是否足够丰富?
4.2.8.4数据输出处理说明
数据表声明中包括的输出处理指令确定存储到数据表中的值。最常用的输出处理指令有Average、Maximum、Minimum和Sample。
程序必须使用allTable指令调用该表,才能进行输出处理。当通过CallTable指令调用Data Table时,数据存储处理指令
处理变量的当前值。如果表的触发条件为true,则处理后的值将存储到数据表中,并重置输出处理。
有关数据处理说明的信息,请参见第6.4节输出处理。
Average是一个输出处理指令,它将输出变量在输出间隔内的平均值。参数是重复——数组中要计算平均值的元素数量、要求平均值的源变量或数组、要存储结果的数据格式(见表4.5-1),以及允许在条件允许从平均值中排除读数的禁用变量
不满足。如果禁用变量不等于0,则读数将不包括在平均值中。在下面的程序片段中,RefTemp变量和TC()变量数组的6个元素的平均值每100毫秒作为一条记录存储到数据表中。
当使用输出处理指令(如Average)时,应比表输出发生的频率更频繁地调用表,以便在平均计算中包括多个值。
例如,在示例4.2.8-4中,表输出速率为每100毫秒一次。如果仅使用CallTable指令每100毫秒调用一次Table,则每个输出的计算平均值将仅使用单个样本。但是,如果每10毫秒调用一次表,则将使用10个值来计算平均值。
示例4.2.8-4:CR基本代码:平均输出指令
数据表(表1,True,2000)
数据间隔(0100,毫秒,10)
CardOut(0,-1)
'平均值(Reps,Source,DataType,
禁用Var)
平均值(1,参考温度,fp2,0)
平均值(6,TC(1),fp2,0)
床头柜
新对话如下:
我把问题转移到了一个新的话题:
最大值/平均值
@请看那边。
*最后更新人:Bo于2010年2月23日凌晨4:20*
新对话如下:
TweedleDee公司-
这很有帮助。谢谢