labview关于数据采集的问题
。不知道各位有何高见,请指导一下,谢谢! 展开
我这里问的没说详细,所以你不是很了解我说的背景。你应该是懂labview的,我在论坛里发帖说的比较清楚,麻烦你 看下,看看有什么思路没。十分感谢。
http://bbs.elecfans.com/forum.php?mod=viewthread&tid=523073&extra=
我看了你论坛里的帖子,一般地说,这个问题多数是上位机引起的。这里有几个问题需要考虑:
第一,如果下位机一秒发200多次,而你只是2秒钟读一次,那么大多数数据会丢失。这样当你读取的时候读到的数据可能不是完整的一组。例如你读到6字节16进制数,有可能读到的数据的前二字节是上一组数的后二字节,然后读到的数据的后四字节是本组数的前四字节。一旦出现这种错位情况则数据一定会突变。建议你首先把数据整理一下,确保它是正确的6字节一组,然后再做数据变换处理。
第二,既然有校验,当然可以直接用校验剔除错误数据,不用与其他数据作比较。不符合校验规则的一定是错误的数据。
顺便说一下,这种直接求和的校验方式因为简单易用,在单片机中使用很多。像CRC16这种更可靠个符合标准,但是使用复杂占用资源多,在单片机中不怎么用。
第三,务必关闭终止符,等待时间要放在“Bytes at Port”控件之前
参考附图:
就是实现比较本次输入与上次输入,如果这次输入跨越太大就说明数据突变了就舍去这次的值并用上次的值代替。用了反馈节点,虽然这次会舍去这个突变值,但是它还是进去了反馈节点,下次正常值来和它比较,那么这个突变值最终还是被记录了。现在就是头疼有不知道该怎么实现比较并舍去突变的值用上次的值替代。请教了,谢谢
可以用两个变量,比如AB,A存上一个数,b存当前的数,如果b偏大就用a代替b
如果b正常,就把b替换掉a的值。下一次新的b值再和a比较