使用串行传感器 _Campbellsci论坛问答

仅供参考~我们在 串行传感器接口。

http://www.campbellsci.com/documents/technical-papers/serial.pdf

使用串行传感器
_Campbellsci论坛问答

珍妮特

*最后更新者:Janet于2009年10月13日上午10:32*

新对话如下:

好东西在那里,谢谢。

新对话如下:

你好我是论坛的新手,也是电子世界的新手。。

上面的链接非常有用,但不幸的是,我有一个CR5000,我想在它上连接Decagon数字传感器(5TM,用于土壤湿度测量的频率反射计)。
在CRBasic编辑器中,CR5000无法识别以下命令:

串行打开、串行刷新、串行关闭(适用于CR1000)

您知道CR5000是否可以读取等效的命令吗?
是否存在与CR5000类似的应用说明?

非常感谢,我需要尽快解决这个问题。。

新对话如下:

CR5000是一款稍老一代的记录仪,它不像新设计那样广泛支持串行I/O。

然而,它确实支持SDI-12传感器,5TM传感器具有SDI-12兼容模式。对于这些传感器,将传感器连接到CR5000上的SDI-12端口,并使用SDIRecorder指令读取传感器。Decagon可以提供更多关于使用这些传感器的SDI-12模式的信息。

新对话如下:

谢谢!
事实上,这正是我正在做的,SDI12运行良好。

新对话如下:

我正试图从电脑向CR5000输入一个串行信号。如果我下载CR5000的最新操作系统;宽范围支持”;为了这个?我已经使用SerialInput进行了某种操作,但从应用程序注释来看,更新的命令更有用。

新对话如下:

要实现这一点,您要么需要为您的CR5000获取SDM-SIO1,要么使用CR3000/CR1000/CR800数据记录器。

对CR5000的串行I/O支持在历史上相当有限。串行输入是一个“串行”输入;遗产;那个时代的指示。随着2011年12月OS Std6的发布,您现在可以将SDM-SIO1连接到CR5000。只有当使用SDM-SIO1的Tx/Rx端口时;现代的“;串行输入、串行输出、串行打开等说明。在这种情况下,这些说明确实很有效。

查看“;SDM-SIO1”;CR5000的CRBasic帮助系统中的帮助主题。对于SerialOpen指令中的COM端口号,您将使用32+SDM-SIO1的SDM地址之和。


http://www.campbellsci.com/sdm-sio1
http://s.campbellsci.com/documents/us/manuals/sdm-sio1.pdf

新对话如下:

谢谢你提供的信息。串行输入功能“;作品”;因为我可以收集PC输出的一些数据,但由于(在我解释的时候)PC输出速率和CR5000采样速率之间的时间不同步,我错过了很多点。SDM-SIO1是否解决了这个问题?

新对话如下:

SerialInRecord和SerialInBlock指令是在SerialIn指令之外开发的,用于解决您所描述的问题。所以,是的,获取SDM-SIO1,将其连接到CR5000,然后使用SerialInRecord和SerialInBlock(以及SerialOpen、SerialClose等),这一切都将比旧的/过时的SerialInput指令更好地解决您的问题(或任何串行数据I/O问题!)

新对话如下:

您可能想在CRBasic帮助中查看SerialInBlock和SerialInRecord的详细信息,以了解我所说的内容。

新对话如下:

会的,再次感谢!

新对话如下:

我现在将SDM-SIO1与CR5000一起使用(带有更新的操作系统)。数据登录良好,似乎不会跳过数据点,但传感器的输出和CR5000记录的时间之间似乎有1-2分钟的延迟。这是一个常见问题吗?如果是,我该如何解决?谢谢

新对话如下:

您的扫描间隔和表格输出间隔是多少?

如果CR5000每分钟仅激活1次,则传感器输出事件与数据记录器尝试读取它的时间之间可能会有长达59秒的延迟。

你的程序或其中的片段会很有帮助

新对话如下:

扫描间隔和表格输出间隔为100毫秒。这是一个程序(我把它改编自一个朋友的CR1000程序):

序列模式

平民的 PTemp、batt_volt、NBytesReturn和NBytesBuffer
平民的 原始字符串 作为字符串*1000, 花键串(13) 作为字符串*30
平民的 零字节 作为布尔值

Const公司 时间延迟 = 4

数据表(表1,1,-1)
数据间隔(0100,毫秒,10)
样品(1, 时间戳(_A) ,字符串)
样品(10, 花键串(2) ,即4)
样品(1, NBytes已返回 ,UINT2)
样品(1, NBytes缓冲器 ,UINT2)
床头柜

开始进度
串行打开(3219200,08000)

扫描(100,毫秒,0,0)

NBytes缓冲器 =串行输入通道(32)
串行输入记录(32, 原始字符串 ,&H0A,0,&H0D, NBytes已返回 ,11)

如果 NBytes缓冲器 <;1500然后
延迟(0, 时间延迟 ,毫秒)
其他的
结束如果

如果NBytesReturn=0,则
延迟(0, 时间延迟 ,毫秒)
串行输入记录(32, 原始字符串 ,&H0A,0,&H0D, NBytes已返回 ,11)
其他的
结束如果
SplitStr([i]SplitStrings[/i(), 原始字符串 ,”&”;,13,0)
调用表表1
下一次扫描
结束程序

新对话如下:

程序看起来不错(除了TimeStamp_anlz
在使用之前未声明为变量)。

您是如何看待CR5000上记录的数据的?
您使用的是LoggerNet、PC400还是RTDAQ?

可能是您在LoggerNet中设置了一个1分钟的计划收集吗?要比LN计划的采集间隔更频繁地查看数据,您需要使用ConnectScreen或类似功能连接到数据记录器。

传感器多久发送一次数据?如果它每秒只发送一次数据,我会减慢你的主扫描速度。

您的程序是否在状态表中显示任何监视程序、跳过的扫描或跳过的记录?

新对话如下:

再次您好-仪器以10Hz的速率发送数据。我调整了其中一个设置并重新启动了仪器,现在数据似乎没有滞后。希望现在一切顺利。谢谢你的帮助!

新对话如下:

我可能说得太早了。。。在运行它一位之后,CR5000收集数据的速率似乎确实存在滞后。我可以在程序中更改什么来解决这个问题吗?

新对话如下:

对此最有可能的解释不是没有真正的滞后,而是传感器发送了太多数据,记录器在其串行缓冲区中越来越多地提取数据。。。继续阅读。

这是一个常见的问题,因为您有两个具有独立时钟的系统。如果时钟相互漂移,并且传感器向记录器发送的数据没有同步,则可能会导致数据过多(如果传感器时钟运行速度比记录器快)或数据过少(如果速度较慢)。这可以通过在记录器的串行缓冲区中建立数据或在您期望的时候没有数据来看到。这种情况发生的速率随着时钟的相对漂移而变化;它可能每隔几分钟或每天发生一次。

如果您不能强制传感器与记录仪时钟同步(例如,在您提示从传感器获取数据的位置),则没有完美的解决方案。

这个问题的实际解决方案是通过使用serieinrecord指令的最后一个参数来提供的。您可以更改此项以读取数据记录器缓冲区中的最新记录。这将有效地跳过传感器中的额外记录。传感器以比读取更高的速率发送这些记录。

如果传感器运行速度较慢,您会发现相反的问题,即当您需要缓冲区时,缓冲区中没有数据;NaN”;或者复制最后读取的测量值。(如果处理时间序列,这两种方法都不理想,但后者问题较小,但在科学上并不完全正确。)

如果您使用这些选项,那么您的程序中只需要调用一次序列记录。

新对话如下:

我认为问题是数据有时比记录器输入得更快。幸运的是,传感器也会记录数据,因为它是一台PC,所以我要尝试将缓冲区设置为一个低值(~200)。我可以填写任何用传感器数据记录的NaN。我已经将SerialInRecord中的最后一个参数从11设置为01,这样它将获得传感器的最新输出。我认为这是我目前能做的最好的事情。谢谢

新对话如下:

嘿,伙计们,我认为这是关于SD1、SD2等串行传感器的好信息。。


S型梁

*最后更新者:markspend1于2013年7月13日上午6:11*

新对话如下:

嘿,伙计们,我认为CR5000通常由其车载标准可充电电源供电。使用时,其内部电池电源需要车辆或交流电池充电器。谢谢!!

S型梁

*最后更新者:m125于2013年8月20日上午8:36*

分享到:

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

发表评论