有关数据采集卡的菜问题 点击:735 | 回复:7



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-12-16 01:59:00
楼主
1.数据采集卡在采样时是一次只采一个点,还是一次采一组点?若是一组点,由什么约束决定一块卡一次可以采的点数 2.由什么决定采到的数据在内存中所占的字节数



GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2003-12-02 13:00:00
1楼
1. 基本运作是... 一个 trigger 信号, 会使 ADC 作一次转换. 我们可以用 Timer/Pacer 来产生一连串的 trigger 信号, 使 ADC 作一连串的采样. trigger 的次数愈多, 采样的次数也就愈多. 2. 解析度, 8 bits 以下占用一个 byte, 9~16 bits 占用 2 bytes, ...

yoyo1101

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 590回
  • 年度积分:0
  • 历史总积分:645
  • 注册:2002年8月30日
发表于:2003-12-02 14:39:00
2楼
一般的数据采集卡既可以实现单点采集又可以实现连续采集,单点采集通常是由软件向软件触发寄存器中写任意一个数值来触发一次单点转换;而连续采集一组点则是由一连串的时钟信号触发A/D转换器进行转换。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-12-02 19:56:00
3楼
还有些疑惑想向大侠们请教 例如:存储容量512k,是不是一次连续采样最多可存的数据为 512k,若为9~16 bits ,因其占2bytes,所以一次可采集并保存的数据为 (512×1024)/2=262144个数据(例如电压值)

别再吃鸽

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 29回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2003年11月20日
发表于:2003-12-04 12:32:00
4楼
存储容量是多少?若是512KBytes,你是对的, 若是512KWords,要再乘2。看细点了。

Qing

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 31回
  • 年度积分:0
  • 历史总积分:132
  • 注册:2003年10月21日
发表于:2003-12-04 14:59:00
5楼
那么多通道扫描算什么性质的采集呢?

yoyo1101

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 590回
  • 年度积分:0
  • 历史总积分:645
  • 注册:2002年8月30日
发表于:2003-12-04 15:37:00
6楼
多通道扫描为多通道共用一个A/D转换器,来一个转换时钟A/D转换器转换一次,时序为第一个转换时钟转换第0通道,第二个时钟转换第1个通道......因此最后存在Buffer中的数据也是依照扫描顺序的,数据处理时要注意。

condon

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2003年10月26日
发表于:2003-12-16 01:59:00
7楼
我用VC在2000下做的研华PCL818L的数据采集: 有时采的数差不多,有时又很莫名其妙,跟测试程序差得很多。 但是又分析不出程序中出了什么问题。请教高人指点一二! Sleep(500); float sam=0; int i=0; sam_current=0; sam_volt=0; /*为selPort端口选择*/ for(i=0; i<allnum;i++) {sam_current+=ReadPort(selPort-1); sam_volt+=2*ReadPort(selPort+7);} /* 取平均值做为最终采样值*/ if(allnum>0) {sam_current=sam_current/allnum; sam_volt=sam_volt/allnum;} ReadPort(int Port) { BASE=0x300; int inNum; unsigned int low; unsigned int high; float inData; Outport(BASE+2,nPort); Outport(BASE+0,0); do inNum=(Inport(BASE+8)&0x80); while(inNum==0x80); low=Inport(BASE+0); low=(low>>4)&0x0f; high=Inport(BASE+1); high=(high<<4)&0xff0; inNum=low+high; inData=-10+20*(float)inNum/4096; if(inData<0) inData=-inData; }

热门招聘
相关主题

官方公众号

智造工程师