GAGE 82G 采集卡在激光测距机中的应用

2022-02-28 19:09:16 北京汉通达科技有限公司



摘要:将高速采集卡 GAGE 82G 应用于激光测距机,其硬件设置含采样速率、采样模式、触发源、触发深度、输入电阻、触发沿等参数。采集卡程序设计包括:初始化驱动程序和硬件、准备采集卡的数据获取、获取数据、判断采集完成情况、传输数据、计算距离等。该应用以VC++.net 作为开发平台,1 秒内可得到所测的距离信息。



1      前言

激光测距机的终端任务是将具有一定时间间隔的主回波脉冲信号进行处理、并给出所测的距离。采用Gage 82G 数据采集卡和 VC++ 开发软件,解决了激光测距机对回波信号的处理及距离显示。

2        采集卡的接口函数和硬件设置
Gage 82G 数据采集卡给用户提供了 Windows 标准动态 连接库文 件 Gage_drv.lib 。gage_ driver_initialize 设置系统中的每个采集卡,并初始化驱动。gage_force_capture通过采集卡硬件用于强迫获取数据。gage_input_control 用于设置采集卡的输入通道。gage_start_capture 准备采集卡硬件的数据采集。gage_transfer_buffer从指定通道拷贝采集卡板载存储器空间采样点的值到特定缓冲器。gage_triggered 判断是否采集卡碰见了触发事件。gage_trigger_control_2 建立采集卡的触发参数。
硬件参数设置:采样速率 2G~1K S/s;单通道和多通道采样模式;触发源含 A、B 通道触发、外部时钟触发及内部触发;外部触发BNC 输入电偶:AC、DC;外部触发BNC 输入范围±10V~± 100mV;触发深度 0~8MB;触发电平 0~255;输入电阻 50hom、1Mhom;触发沿含上升和下降沿。

3        采集卡的程序设计

选用 VC++程序设计采集卡数据控制程序,其数据流程如图 1,分为 6个步骤:

1      程序数据流程

第一步初始化驱动程序和硬件:在 I/O 选定安装硬件的位置、建立存储路径。通过查看GAGESCOP.INC 结构文件找到存储器部分在系统安装采集卡的I/O 位置。通过采集卡的有效配置可以建立和更新GAGESCOP.INC。初始化驱动和硬件通过 InitBoard()完成。

第二步准备采集卡的数据获取:在任何时候,开始一个数据的获取过程,最优先的是准备采集卡的数据获取。在获取数据期间,企图改变采集卡设置是十分困难的。通过函数SetBoard(), 对采集卡设置修改。在修改过程中,为了满足需要, SetBoard()执行多个 Gage API 命令。

第三步开始获取数据:gage_start_capture程序开始获取前触发数据,并等待触发事件。gage_start_capture(GAGE_SOFTWARE==board.source) 程序取 一个参 数 ,当触 发 源被设 置 到SOFTWARE,便自动数据获取。当参数为 0 时,通过 gage_software_trigger 命令,内部触发也可发生。

第四步完成一次获取:一次采集后,通过应用程序询 问是否重 置。先采 集卡直到 使用gage_triggered程序触发开始记数。一旦触发,直到使用 gage_busy 命令,采集卡才不再获取数据。对于高速重复触发,普遍使用短触发时间段,对于点触发,大多使用长触发时间段。如果超过触发时间段,就使用 gage_force_capture程序来强迫触发。如果超过占线时间,使用 gage_abort_capture 程序来中断获取。具体程序如下:
检查是否发生触发。在指定记号总数内,触发没有发生,通过gage_force_capture 命令强迫触发。如果触发信号很慢,应通过 TRIG_TIMEOUT 增加:
ticks= GetTickCount(); while (!gage_triggered())
{ if (GetTickCount() >= ticks + TRIG_TIMEOUT)gage_force_capture(board.source);
}
检查获取是否完成。如果不在指定记数总数内,通过 gage_abort_capture中断获取。对于缓慢的采样速率,暂停时间的数值保持不变,应该通过BUSY_TIMEOUT增加:
icks= GetTickCount(); while (gage_busy ())
{ if (GetTickCount() >ticks + BUSY_TIMEOUT)
{ gage_abort_capture (board.source); }
}

        第五步:传输数据:在采集卡不再繁忙时gage_busy 程序返回 0 ,数据可以被传输。通过gage_calculate_addresses 命令来确定采样数据板载存储器的地址。这个程序返回开始地址,触发地址,和结束地址,需要这些地址来确定在存储器中获取的数据的位置。
存储器就像是一个循环的缓冲器,所以地址的直接数字比较应该避免。例如,因为超过存储器记数一圈,这时从板载存储器获取的结束地址可能比开始地址有一个更低数字值。为了确定获取长度,无疑要用结束地址减去开始地址,因此错误地产生了一个负值。gage_normalilze_address 程序,将记录存储器一圈完成,用于比较。在数据传输前,采集卡必须使用 gage_need_ram 程序为数据传输做准备。传输数据前,使用gage_need_ram(1);而在传输数据完成后,使用 gage_need_ram(0)。从板载存储器里找回数据的方法是使用 gage_transfer_buffer_3程序。如果硬件支持,程序传输数据使用大数据块PCI插槽_控制。PCI插槽_控制是越过 PCI插槽来传输数据最快的方法。如果没有 CPU的裁审, PCI传输数据的速率可保持在每秒 100Mege位以上。当在单通道模式操作硬件时,从 2ADC储库里 gage_transfer_buffer_3也可自动插入数据。
 
第六步:计算距离:利用双通道模式采集,2ADC  同步使用严格相同时钟信号,没有时间差存在。实现了2个通道同时采样。A通道为触发通道,B通道为接受通道,用时间间隔来计算距离:
MaxValue= (double) gage_mem_read_chan_b(location); for (i = 0 ; i < points ; i++)
{ value = gage_mem_read_chan_b (location); location =(location + 1) & board_info->
max_available_memory - 1; if(MaxValue > value)
{ MaxValue = (double)value; j=j+k; k=1; } else { k=k+1; }
}
distance=(j-1)*tbs*0.15;
distance 为计算的距离,tbs为采样间隔时间(取决于用户所选取的采样速率)。程序界面如图2
 

2     程序界面
4        结束语

采用 GAGE82G 采集卡,以 VC++.net 作为开发平台,利用 VC 生成的友好界面和 GAGE 82G 资源,在 1 秒内可得到所测的距离信息,提高工作效率,该程序在 Windows XP,Windows 2000 下调试成功。以后的开发将致力于提高处理连续信号能力和实时性,缩短处理信号时间。同时,利用 Matlab 从数据文件中取出数据,进行图形显示,可以更加直观的观看波形。




本文是伍丽莎发表于《兵工自动化》2006年第25卷第1期的文章。




  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018
  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018

Copyright ©2007-2024 ANTPEDIA, All Rights Reserved