发表于:2004-02-13 11:14:00
6楼
> > 我是一名在校学生,在课题中要用到数据采集的知识,希望你能帮忙.我的课题是一磁悬浮系统,利用一电磁铁吸引其下方与其有一定距离的小球,电磁力与小球重量相等时小球悬浮在空中.现在要对检测小球位置的传感器的电压信号进行采集,然后与预先设定平衡点的电压比较,利用PID控制算法输出控制电压到电磁铁上.我现有一块凌华的PCI-9111HR卡,因为我要对每次采集回来的数据与平衡点的电压比较,然后输出控制电压,而且速度越快越好,是不是不能用 continuous analog input方式采集,要用single-point AI方式.我的触发方式是否应该用Timer Pacer Trigger方式呢?我试着写了一下初始化程序,你看是否正确呢?
> > Register_Card(PCI_9111HR),CardNumber);
> > AI_9111_Config(CardID,TRIG_INT_PACER,0,0);//这句能不能省去阿
> > while(1)//循环读取采集的数据
> > {
> > AI_VReadChannel(cardID, ADChan, AD_B_10_V, &AdVoltage);
> > fun()//数据的处理函数
> > {
> > .
> > .
> > .
> > }
> > }
> > 您帮忙看看我的思路是否正确,能否实现。
> >
> > 谢谢!
> >
>
渴望自由您好:
对于您的程序(sigle-point AI),基本上没有什么问题。AI_9111_Config(CardID,TRIG_INT_PACER,0,0);//这句是可以省去的,如果省去就会按照卡的默认设置(我们不建议这样做)。
对于您上述说的这个系统,我认为应该采用continuous analog input方式进行采集。
这块板卡的采集方式有两种:
1)continuous analog input是由板上的晶振触发的。板上有1k的FIFO,据我估算0.5毫秒可将采集到的数据传到内存一次(半缓冲,100KS/s),如果这样的速度可以满足您的要求的话,就没有问题。
2)single-point AI为查询方式,由程序触发。首先,查询方式不能保证您对模拟量离散化的正确性;其次,程序的处理是需要时间的(当CPU空闲的时候可以正确采集数据 ,当CPU忙的时候,采集的触发程序就会被搁置,这样采集就会有误差。);最后,您的D 调节要求的实时性较强。总上诉述,所以我认为不能用查询方式。
大钊