TableName输出 _Campbellsci论坛问答

你好

TableName输出
_Campbellsci论坛问答

数据表(Station_1A_Meas,True,-1)
示例(1,WindSpeed,IEEE4)
示例(1,WindDirection,IEEE4)
样品(1,空气温度,IEEE4)
样品(1,RH,IEEE4)
床头柜

开始进度

扫描(500毫秒,1.0)
接受数据记录(532769,Station_1A_Meas)

数据输出=Station_1A_测量输出(1,1)
如果数据输出,则
获取记录(RecordTable,Station_1A_Meas,1)
串行输出(ComRS232,String_1A_Meas,“”,1,0)
结束如果
下一次扫描
结束程序


如果以这种速度很难看到,请尝试每分钟接收一次远程记录,并将扫描速度设置为1秒。

谢谢

新对话如下:

我看了一下,似乎一旦一条记录被接收到表中,Output标志就会变为true,但永远不会重置——我怀疑这是因为它通常在下一次调用表时重置。

下面显示了对此的解决方法,您可以跟踪表中最后一条记录的记录编号,而不是输出标志。

请注意,在我的测试中,我更改了串行端口,还以缓慢的顺序添加了一些您不需要的测试代码。我还在SerialOut命令中更正了程序中的一个错误,在该命令中,您输出的是表名,而不是预期的字符串。

---------
公共风速,风向,气温,相对湿度,数据输出为布尔值,记录表为字符串*1000,记录号,最后记录号,go为布尔值

数据表(Station_1A_Meas,True,-1)

样本(1,风向,IEEE4)
样品(1,空气温度,IEEE4)
样品(1,rh,IEEE4)
床头柜

开始进度

串行打开(ComME,-96003,01000)
最后记录号=0
扫描(500毫秒,1.0)
接受数据记录(532769,Station_1A_Meas)

recordno=站点_1A_测量记录(1,1)
dataout=记录号>;最后记录编号
如果数据输出,那么
获取记录(记录表,Station_1A_Meas,1)
串行输出(ComME,可记录,“”,1,0)
lastrecordno=记录号
结束如果
下一次扫描

“这只是模拟从远程记录器接收数据的测试代码
'go boolena是手动设置的
慢速序列
扫描(10,秒,3.0)
如果进行,则调用表站_1a_mes
下一次扫描
结束程序

新对话如下:

谢谢你,安德鲁。我会看看这个。

我还有一个问题。我有一个应用程序,可以通过TCP/IP将14个数据记录器的数据发送到远程数据记录器。远程数据记录器有一个与上面类似的程序,但有14个表和一些附加说明。远程数据记录器应该每秒接收一次数据,然后将这些数据从远程数据记录器的一个串行端口发送出去。现在,我注意到,有时远程数据记录器会同时接收两个或多个记录(来自TCP/IP传输),留出一段时间,直到以后我才会接收到任何数据。现在,我不确定这是否可能是某种网络延迟问题,或者是否有其他问题。有什么想法吗?

谢谢

新对话如下:

我认为您所看到的几乎可以肯定是由网络延迟引起的,因为记录器不会尝试将Senddata数据包分组在一起。它可能会这样做的唯一原因是,如果有大量的Pakbus通信正在进行到发送数据的记录器,并且发送数据的内容被备份到传出传输队列中。

不过,我要质疑的一件事是,你所做的事情是否可靠。在这种情况下,发送数据实际上是单向数据传输,不需要检查两个记录器之间丢失的记录。

如果你以另一种方式工作,并让主记录器从远程记录器收集数据,你就可以更好地控制重试和计时等。在最新的操作系统中(将在未来几天内登陆网站),用于提取数据的命令Getdatarecord也将支持一次获取多个记录,例如,get可以一次性获取多个未收集的记录。这是一种更可靠的方法,可以确保数据被收集回主记录器。

这需要两个系统之间有更多的数据流量,因此如果您正在为显示器或类似的东西整理数据,这并不总是合适的。

新对话如下:

你好,安德鲁,

感谢您的回复。

您能否进一步扩展使用GetDataRecord指令将如何在从远程数据记录器收集数据时提供更高的可靠性?这怎么能告诉我遥控器和其他记录器之间丢失了多少记录?我必须跟踪记录到记录的转换才能确定这一点?就没有遗漏记录的可能性而言,这种方式是否更可靠?

网络延迟现在对我来说是一个问题,因为这个1秒的数据需要被显示“;实时“;所以我一次收到两张或两张以上的唱片是不好的。如果这会增加网络流量,我不确定我是否应该走那条路。

新对话如下:

对于当前的操作系统,您可以指定指令用于从远程记录器获取记录的超时时间和重试次数。

这意味着,如果出现问题,记录器将重试获取记录,而Senddata只是发送一条记录,并希望它到达目的地。

对于下一个操作系统中的Getdatarecord,它将包括一个额外的参数,用于指定要收集的记录数,该记录数将收集任何未收集的记录,最高可达该最大数。记录器会跟踪它收集的最后一条记录,所以你不需要麻烦跟踪它。

如果您通过TCP/IP使用Senddata,那么TCP/IP的基本可靠性应该会将记录传输到另一端,因此这可能是您的应用程序中的一个问题。听起来网络流量或路径中的路由器速度缓慢或损坏可能会导致问题。这是硬连线网络还是GPRS?

分享到:

原文链接:,转发请注明来源!
海洋仪器网 仪器使用 TableName输出 _Campbellsci论坛问答
「TableName输出 _Campbellsci论坛问答」评论列表

发表评论