我不知道是否有可能进行两个级别的平均。我想每1秒读取一次传感器(风速计-脉冲计数),将这些数据保存到一个表中,然后将其平均到3秒,并将其保存到另一个表(该表记录了3s数据的10分钟统计数据)。换句话说,我想保存1s的数据,以及3s数据的10分钟统计。有人知道怎么做吗?
新对话如下:
有两种方式(可能还有更多):
设置两个表——一个用于同一变量的1秒输出,另一个用于相同变量的3秒输出(有什么原因不想这样做吗?)。
使用tablename.fieldname语法从1秒的表中提取所需的值,并将其存储到3秒的表中。
希望这能有所帮助,
Dana公司
新对话如下:
我能有一张能读另一张桌子的桌子吗?我需要一个存储10分钟数据的表,即3秒数据的平均值、最大值、最小值和标准偏差。并且3s数据需要是1s数据的平均值。目前,我使用的是1s数据,如下所示:
数据表(CH01,True,13400)
数据间隔(0,10,最小值,1)
平均值(1,Spd1,FP2,假)
最大值(1、Spd1、FP2、假、假)
最小值(1、Spd1、FP2、假、假)
标准偏差(1、Spd1、FP2、假)
床头柜
数据表(CH01_HF,True,-1)
数据间隔(0,1,秒,1)
CardOut(0,-1)
样本(1,Spd1,FP2)'风速(在主扫描中采样,因为无法读取子扫描中的脉冲)
床头柜
开始进度
扫描(1,秒,1.0)
脉冲计数(Spd1,1,1,2,1,0.1,0)
调用表(CH01_HF)
呼叫表(CH01)
下一次扫描
结束程序
新对话如下:
似乎你想根据IEC标准从3秒的平均值中获得最大风速。
那么你只需要平均跑3秒。用1秒采样并将其存储在一个变量中。
然后,您将能够从10分钟数据表中的这个变量中获得您想要的所有统计数据。
顺致敬意,
胡安。
新对话如下:
我能有一张能读另一张桌子的桌子吗?
tablename.fieldname语法将读取
价值观
来自另一张桌子。例如,
新变量=CH01_HF.Spd1(1,1)
将来自表CH01_HF的Spd1样本放入NewVar。
请参阅CRBasic帮助。
这种语法也可以用于输出指令中。例如:
样品(1,CH01_HF.Spd1(1,1),FP2)
请确保您拥有最新的预编译器和操作系统(可以从我们的网站下载)。如果我没有记错的话,有一个版本的预编译器会在数据表中使用这种语法而崩溃。
当做
Dana公司
新对话如下:
重申上述建议。如果您正在根据WMO和IEC的要求进行风速统计,需要3秒平均值的最大值(阵风)、最小值等,则应使用运行平均值指令,而不是使用数据表进行3秒块平均值。(WMO实际上也需要4 Hz的测量,但它在1秒内运行并没有太大区别,尤其是对于低频脉冲输出传感器)。
要进行运行平均值,只需定义一个新的变量来保持平均值,例如Spd1_3s,并在脉冲计数指令之后包含此指令:
平均运行时间(Spd1_3s,1,Spd1,3)
然后在1秒表中的stats指令中使用Spd1_3s作为输入变量。
安得烈
新对话如下:
谢谢听起来AvgRun是一个很好的解决方案。但我认为我必须每3秒调用10分钟数据表,而不是每次扫描(1秒),否则该表将每1秒接收3秒的运行平均值。我想我可以用If语句做到这一点,只在秒数是3的倍数时调用数据表,即
如果(RTime(6)MOD 3)=0,则调用表(CH01)
或者可能使用表中的触发器?
新对话如下:
不,如果你想捕捉最大3秒的阵风,你应该每秒调用一次表,即每次更新3秒的平均值。否则,你只有三分之一的机会获得真正的最大值或最小值。
每秒钟调用一次表也会正确地给出其他统计数据,例如平均值、标准差等,因为大多数国际气象指南建议这些数据也是基于理想情况下更新为4 Hz的3秒平均风速,但对于低频脉冲输出传感器来说,1 Hz就足够了。
新对话如下:
你好
我有兴趣跟进这个线程,因为我只是在学习CRBasic,并试图将现有的21x程序(不是我自己的)移植到CR850。在15分钟输出块中复制以下字段给我带来了一些麻烦:
+最大平均运行3秒阵风:m/s
+阵风时间:HHMMSS
+1分钟平均最大水平风速:m/s
+最大1分钟风速期间的单位矢量平均水平风向:度
+1分钟相对湿度值的平均标准偏差
我知道如何使用运行平均指令来获得3秒阵风,但我想知道获得其他参数的最佳方法是什么。我会使用一个临时数组来做这件事吗?或者可能使用一个隐藏的1分钟表,我会从中提取值(如上面Dana所示),然后每15分钟重置一次,以避免填满数据记录器?
如有任何意见或建议,我们将不胜感激。
谢谢
-布伦丹