请教两块采集卡采集的问题!!! 点击:1894 | 回复:20



呵呵呀

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-09-03 10:35:00
楼主
请问各位高手,我用的采集卡是RTD公司的PCI4400采集卡,现在想实现两块采集卡同时采集。将两块采集卡装上之后,在系统->设备管理器中可以发现其资源分配情况。一个是IRQ5,一个是IRQ9,都有地址分配。在板卡自带的诊断程序中也可以看出其资源分配情况。但是用其自带的Windows两块板的例程(examples)执行的时候,只能一块板起作用,从另一块板的openboard的返回信息中,可知道没有分配IRQ资源,LAS0、LAS1、LAS2的地址都是0。我自己编程运行也是这种情况。请问是怎么回事???



GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2003-07-16 16:29:00
1楼
得看 Driver 是否有支持两块板卡同时(+IRQ)采集数据. 您可以向原厂询问看看.

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-16 16:59:00
2楼
板子自带的例程中就有两块板的程序,结果我装上两块卡之后,例程就没法正常用(只一块板正常)。我看Manual中说可以支持好几块,超过两块。再说这板子是美国的公司产品,太麻烦。想请教有没有人遇到这种情况。我现在被这东东搞得烦躁死了!!!

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-17 10:20:00
3楼
卡的采集速率是否一样?是否是同一个时基控制的?

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-17 12:03:00
4楼
两块卡是一样的,都是美国RTD公司的PCI4400采集卡,你说的同一时基是什么意思???我看板卡本身提供的例程W2BOARDS中说得是可以独立采集,但是老是只能有一块卡正常工作,另一块的IRQ资源分配有问题,我用VC单步运行可是发现其资源分配,也就是在打开的时候就可知道其IRQ分配情况。结果与板卡自带的诊断程序所检测到的IRQ资源不一样,诊断程序的资源分配是合理的。 还想问一下,两块卡同时工作,其IRQ资源是不是必须不一样,才不至于冲突。中断共享的意思是不是两块卡公用一个IRQ资源??????

GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2003-07-17 14:01:00
5楼
Interrupt Sharing 是指两块(或多块)板卡(或其它 device)共用同一个 IRQ Number, 且各 device driver 会对此 sharing 作适当的支持. 共用一个 IRQ 时是否会冲突? 这得看 driver 是否有支持 sharing 的处理. 若是使用同一个 IRQ 的 devices 中, 有任一个 driver 不支持 sharing 的处理, 那很可能就会使得这些 devices 全都无法运作. (也可能 OK 啦, 得看有问题的 ISR 其串接位置!)

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-17 17:33:00
6楼
我自己编写了DOS和Windows采集程序,并且DEVICE_NO都是0,但是我发DOS程序和Windows用到的不是一块板(我的PC机上有两PCI4400),DOS用的是一块,而Windows用到的是另一块。 当我将Windows的单块板的程序(例程)中的DEVICE_NO从0改为1的时候,会出现IRQ资源变成0的问题,也就是资源分配有误。运行会出现“ADFIFO overrun”的错误信息。 我感觉有一块板在Windows环境下无法获得资源,也就是无法起作用。这是怎么回事???会不会是第二块板的driver有问题???但是为什么在板子自带的诊断程序又有资源分配,一到Windows程序中就会资源分配有误???敬请高手指教!!!

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-18 23:00:00
7楼
我不知道你的卡是串行的还是并行采集的,时基是主要是指同一时钟控制的意思,用来控制板卡的,据我所知,不同的中断只要是同一时基控制,同样速率的卡是可一起工作的即扩充通道数,厂家的驱动应支持如你所做的软件中检测不到别一张的话,应是程序与驱动的接口问题.

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-21 09:07:00
8楼
谢谢各位! 这个问题我已解决了,确实是驱动没有装好的问题!Windows自己默认的驱动只是第一块。 我还想问问为什么我用两块板同时采集的时候,第二块板的采集会失真,第一块板的采集还好,我是FIFO做缓冲。判断一块板FIFO半满后开始读两块板的数据。 不知道各位碰到过这种情况没有?????

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-22 09:35:00
9楼
感谢各位的支持, 我的问题解决了一半!感谢大家的支持!!

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-22 09:42:00
10楼
我还想问问大家,大家一般实现连续采集用的什么方法。是用定时器还是用什么别的方法!! 我是菜鸟!!希望能得到大家的指教!!!

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-22 09:42:00
11楼
我还想问问大家,大家一般实现连续采集用的什么方法。是用定时器还是用什么别的方法!! 我是菜鸟!!希望能得到大家的指教!!!

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-22 09:42:00
12楼
我还想问问大家,大家一般实现连续采集用的什么方法。是用定时器还是用什么别的方法!! 我是菜鸟!!希望能得到大家的指教!!!

GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2003-07-22 09:55:00
13楼
看需求囉! 若希望数据的采集频率固定的话, 使用 Timer Trigger 会是很好的作法. 而若是希望用最高的速度去采集数据的话, 或许 polling 是不错的(但采样频率不固定).

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-22 15:34:00
14楼
我的采集频率是不固定的,用的是Burst模式。我说的是控制程序循环的方式,也就是用那种方法使程序不断的循环,只要不退出就是死循环!!

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-22 15:34:00
15楼
我的采集频率是不固定的,用的是Burst模式。我说的是控制程序循环的方式,也就是用那种方法使程序不断的循环,只要不退出就是死循环!!

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-22 15:37:00
16楼
我所使用的语言是VC。 还有我想问,对工控机而言,最短能在多短的时间内重新启动!!!因为我的程序如果死掉,就要求在很短的时间内重新启动并运行!!!

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-07-23 09:34:00
17楼
数据采集中数据量很大,存储时是用数据库好,还是用数据文件好?

GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2003-07-23 10:33:00
18楼
这也是看需求吧! 透过 Database, 日后的查询统计...都不错用. 若讲效率的话, 我认为直接存入 file 的效率会好一点, 省去了中间 Database 接口的处理动作 (加入 index, format, record...). 工控机的动新启动时依不同的硬件, 不同的 OS 而不同. WinCE + RISC CPU + diskless 其 kernel 好像就要 7 秒钟的启动时间了. 其它跟 PC 差不多的工控机, 恐怕是.... 够久的了! (不同的环境得实测才知!) 工控机的 OS 都是 install 在 Harddisk 上, 而 harddisk 的存取速度又很慢...., Windows 内又有一堆杂七杂八的软件, 重新启动的时间.... 不容易快起来咧!

国安

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 242回
  • 年度积分:0
  • 历史总积分:256
  • 注册:2002年4月15日
发表于:2003-08-05 11:32:00
19楼
启动时间要求高的话,要么用实时系统如WinCE,要么用DOS. 存储的话,对速度要求高的话不要用数据库,直接存盘.再不够的话用SCSI,再要求高直接跳过文件系统对HD直接操作.

呵呵呀

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 14回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2003年6月24日
发表于:2003-09-03 10:35:00
20楼
我现在又碰到一个问题!!我所使用的采集卡FIFO有16K,而我要求的实时数据采集通道有16个(每块板),采用的是Burst模式,采集一次每个通道采1024个点,数据量每个通道有1024×2B(采集的电压值是整性量),也就是2K,所以如果将FIFO做后台采集的话,是不够用的。 我采用了一种方法:等每块板halffull的时候,将数据读出,相当于每次读数据的1/4;这样的话可是采集到完整的数据。 但是,当我一边采集一边做其他的事的时候,程序就会死掉。我想可能是别的任务占用了太多的CPU时间,导致CPU的速度不能和FIFO的速度匹配(在我的程序中有判断FIFO半满的循环语句,会不会因为FIFO太快导致循环死掉?)。 因为我的程序要求在采集的过程中和别的机器交换数据(是基于WEB环境的),所以在采集的过程中不可避免的要实现远程的存储,这样经常程序会死掉!!试问:有没有什么办法可以使远程的数据存储不占用CPU的时间,就像DMA方式一样????

热门招聘
相关主题

官方公众号

智造工程师