labview的时间精度到底是多少?
几ms采一次又问题吗?
你的采集卡多少k德?
哈哈,似乎没有问题。
只是在windows下的实时控制问题都有些问题。
labview运行一条普通的命令需要多少时间?
曾经实测了一下,就是空跑循环,设置一下优先级,误差可以到1ms这个样子
你的采集卡没有内部时钟?
windows的定时向来是靠不住的
看来完蛋了...
ms级别的实时控制就是不行,只能用vc了。
关键问题不是计数器的值,而是计数器每变一次
我要采取一步操作...
而计数器变化的频率是几百,也就是几个ms一变,
如果执行命令很慢,那么就会丢失,就会误操作...
唉...
计数器的值可以通过缓存等方法完全得到,可是这个实时的控制
却不能完成。
用RT系统阿
nod
labview RT好像可以
我用RS232试过一次,读取一个数据要一百零几ms,
代码就包括visa open,write,read,close和提取返回命令语句中的数值这几部分,
不知道有没有办法提高采集速度啊
.3
.3
附件里第一个是I/O助手转换后的源代码,
第二个是我精简后测试执行时间的代码,多次测量结果都在100零几ms
串口设备是一个激光位移传感器,
有啥办法改进么?多谢!
版本7.0
.3
.3
这跟你串口通讯速率有关系吧
我也碰到过这种问题,主要是仪器在拖你的时间,你得等它一段时间才能读完。。。
你看看能不能调Baud Rate?
哦,谢谢!
Baud Rate的Default value是9600,
setting range是9600,14400,...115200,
把它调大会减少执行时间么?
.3
你试试看吧 看你仪器支不支持高Baud Rate了
估计115200就是最高了
另外读数据的时间和你每次读的数据量也是有关系的
你要读,仪器也要一个字节一个字节的给你往外送阿
这些都需要时间的
谢谢,我把sensor的Baud Rate改为115200,
读取一个数据的时间降到了75-85ms,提高了近30ms,
这就能够保证测量过程中,设置100ms延时的while loop不会丢失某些测量数据了,
之前运行时,获得的测量点数总要比预计的少几个,因为超过了100ms
不过要是能降低一个数量级就好了,^_^
.3
.3
对,115200最高了,
每次发送M1,0的命令,返回“M1,+/-测量值”的字符串,需要从中提取测量值
btw,你也是ISCAS的?
.3
刚才没注意IP,原来是同事阿 :)
我在1#
modbus不可能实现的
最快也至少要40ms
问题有好多呢
1.windows系统本身就不实时;
2.labview在windows肯定不可能完成
3.采用labview+vc dll方式,主要控制在dll中完成
结果导致以下问题:
I.利用查询方式,在死循环中查询,那么应该多线程,在辅助
线程中不断查询,但是这样对系统资源消耗还是有点大,
堪堪能够满足要求;
而且,vc写的测试程序能够运行,把dll集成到labview中,
运行几秒就死掉了,哈哈
II.如果利用中断方式,windows2000以上都不再支持端口直接
读写和硬件中断,如果非要中断,需要编写硬件驱动vdx...
oh,my God..
所以,结论是这个windows根本就不是什么可行的好方案,
看来要用单片机另外板子了.
labview rt,我没用过,;(
如果是实时采集的话,
最好用缓冲或者高速磁盘流.
还没那么夸张 呵呵
不知道你为什么要用 VI + dll ,然后又把实时放在dll 里呢?
首先我觉得要明确的是,是否能肯定你一个周期的操作本身(计算算法之类的)所花费的时间在这个周期内,如果在,那还是可以试试的。
如果真是秒级的 那我就毕不了业了。。。 555~~~~~~~~~~~~~~
哦,可能是太夸张了,因为我以前从来不用这个的,;)
因为在labview下面这个实时不能满足,就是说运行速度有点慢,
有时候采到的数据不及时,
而用vc写的dll可以满足。
其实这里labview就是一个控制界面,所以的任务都是
dll里另外开的线程来完成了的。
那还是把实时的分出去,或者单片机或者dll吧,监控方面交给LAbVIEW得了
呵呵
既然这样,干脆用vc+measurement studio做算了