请教:多线程采集同步问题 点击:572 | 回复:6



clieworm

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 4回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2003年12月25日
发表于:2004-08-30 15:03:00
楼主
现在有两张卡pci9118和9812,同样的采样频率,用两个采集线程双缓冲模式进行采集并显示,请问如何做到两张卡数据显示的同步?实际进行过程中发现对同一的信号,两个线程的波形输出有相位移



yoyo1101

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 590回
  • 年度积分:0
  • 历史总积分:645
  • 注册:2002年8月30日
发表于:2004-08-31 15:24:00
1楼
这是因为两块板卡启动不同步造成的相位差,可以使用同一个外部触发信号,利用板卡的外触发功能,同时触发两块板卡以达到同步采样的目的。

clieworm

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 4回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2003年12月25日
发表于:2004-08-31 22:28:00
2楼
那外部触发能用软件实现吗?

yoyo1101

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 590回
  • 年度积分:0
  • 历史总积分:645
  • 注册:2002年8月30日
发表于:2004-09-01 10:18:00
3楼
这两块卡同步的话,必须要使用外部触发信号,并在软件中作相关设定;凌华DAQ-2000系列板卡提供多卡同步总线,通过一根20Pin直连线相连,可以实现两块板卡同步触发。

clieworm

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 4回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2003年12月25日
发表于:2004-09-02 21:58:00
4楼
还有就是取数据的问题,发现每次HalfReady的时间都有飘移,可能是线程执行时间的问题,但发现9118比9812完成采集(相同数据长度和采样频率)的速度要快,这样导致在显示两张卡同步信号的时候相位差的漂移。请教问题出在哪里,该如何解决,附流程: 主线程: 1.AI_ContScanChannels(9118),AI_ContScanChannels(9812)开始采集 2.开辟9118采集线程,开辟9812采集线程 3.定时取一段时间的9118和9812的buffer数据并显示 9118采集线程: do { AI_AsyncDblBufferHalfReady(cardid, &HalfReady, &fstop); } while (!HalfReady && !fstop); if (!fstop) { end=clock(); AI_AsyncDblBufferTransfer(cardid, Buffer); Form1->Memo1->Text=IntToStr(sampled)+"-"+FloatToStr(end-start); start=clock(); } 9812采集线程:(同9118)

yoyo1101

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 590回
  • 年度积分:0
  • 历史总积分:645
  • 注册:2002年8月30日
发表于:2004-09-03 09:42:00
5楼
把两块板卡的启动顺序和线程启动顺序调换一下看看,是不是变成9812先完成,因为这两块板卡并没有严格意义上的同步。

clieworm

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 4回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2003年12月25日
发表于:2004-09-04 15:31:00
6楼
还是一样的,估计是两张卡的晶振精度问题 5.4.4 Multiple Cards Operation When multiple cards are used in one system.The 4-channels on one card can achieve simulaneous conversion because of the same internal clock source. However,the channels between two cards can not be synchronized because the clock come from different sources. Even when the same external clock source is applied to all cards,the A/D conversion time is still possibly asynchronous because an on-board clock divider(divided by 2) is used. Therefore,when the same external clock source is applied to multiple cards,the time difference of the sampling clocks between two cards will be half of the sampling clock period. The A/D clock can not synchronize the multiple cards.

热门招聘
相关主题

官方公众号

智造工程师