Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

PCI 6259 数字输出与模拟输入同步

Solved!
Go to solution

我现在需要利用采集卡的port0 输出数字信号,然后我会收集ai0的模拟输入信号。在这个过程中,我希望数字输出与模拟输入同步,保持1M/s的频率。是不是应该单独设置计数器ctr0作为触发信号,请问这个过程应该怎么实现?

0 Kudos
Message 1 of 13
(2,942 Views)

Hi shuai94,

 

如果你只想同步ai和do任务的话利用master-slave模式共享采样时钟和触发即可实现,具体的代码可以参考此链接的第3部分。

 

Start Task会生成隐性的触发信号,如果没有特殊需求的情况下是不需要创建co任务提供触发信号的。

 

Regards

0 Kudos
Message 2 of 13
(2,900 Views)

你好,多谢你的回答和帮助。但是我还是一些疑问。我还是如果不创建co任务的话,而利用master-slave模式,那么DAQmx start trigger中的source能不能用 Dev1/do/StartTrigger?这个不在可选择项中。就像图中所示,这种方式好像不太可行。

0 Kudos
Message 3 of 13
(2,881 Views)
Solution
Accepted by shuai94

Hi shuai94,

 

master-slave模式下利用共享采样时钟可以不用特地设置触发源,但是一定要保证slave任务的Start Task比master的先执行,利用错误数据流或顺序帧保证执行顺序。虽然slave任务先运行,但是并没有采样时钟使其工作,只有master任务执行之后才会有采样时钟生成,slave任务才能工作。

 

PCI 6259是M系列板卡,没有独立的di/do开始触发,这时同步的时候需要把di/do任务设为slave,共享AI的时钟即可,你只需要把你代码里面的主从顺序换一下。

 

如果还有疑问可以继续跟进,解决了还请采纳或赞一下~

Regards

Message 4 of 13
(2,858 Views)

你好,我换了主从顺序以后,发现数字输出的时候会在进行触发的时候报错,整个程序如图中所示,请问哪里需要再修改?

0 Kudos
Message 5 of 13
(2,823 Views)
Solution
Accepted by shuai94

Hi shuai94,

 

1. 你的截图里面AI和DO还是并行的,两个任务的运行顺序是不确定的,你先加一个如下图所示的顺序结构,do任务的靠前,ai任务靠后。

Screen Shot 2019-09-18 at 15.24.27.png

 

2. 你的ai任务没有指定Sample clock source,创建常量选择onboard clock即可;注意到ai任务是连续采集,你需要把Analog 1D DBL放在一个while循环中进行并且需要将数据读出,否则数据会一直缓存在fifo(板卡的内存)中,导致内存爆掉导致报错。

 

3. do任务是有限点生成数字信号,在Start Task之后以及Stop Task之前你需要添加一个 Wait until done,保证数字信号全部完成才结束。

 

4. do任务的Start digital edge其实可以不加,不过加了应该没有问题。

 

5. 关于弹出错误,还请把错误报告贴出来。

 

Regards

Message 6 of 13
(2,811 Views)

你好,我ai也可以设置成有限点,我也添加了顺序框图,但还是会程序运行后在Start digital edge后会报错,错误就在第二张和第三张图像中显示。

0 Kudos
Message 7 of 13
(2,802 Views)

Hi shuai94,

 

没想到给定了触发信号反而会报错,原因可能就是我之前所说的M系列板卡的数字任务没有独立的触发:

9579106c-926e-4cfa-8642-e99f8cc193a6.jpg

 


解决办法很简单,把do任务的指定触发给删了就行,两个任务还是同步的

 

Regards


Message 8 of 13
(2,799 Views)

非常感谢您的回答,这个问题困扰我很久了。另外我还有一个额外的问题,当我保持采样速率不变,改变有限点数,当有限点数大于采样速率的10倍时,程序也会报错。我修改了wait until done的等待时间后依然会报错。这个问题我也不知道改怎么解决?

Download All
0 Kudos
Message 9 of 13
(2,782 Views)

Hi shuai94,

 

不客气;

 

关于第二个问题,其实是个简单的算术题。每通道采样数设为1200,但是采样率只有100Hz,这就表明需要12s才能写满一个通道,也就是说经过12s才会出一次数据,所以等待时间必须要设为12s以上,除了wait until done以外还需要修改ai任务中Read的等待时间,因为默认的等待时间只有10s,超时就会报错。

 

如果有帮助的话可以给个奖励哟~ 谢谢

 

Regards

0 Kudos
Message 10 of 13
(2,777 Views)