摘要:为提高训练效果,仿真训练系统中需进行信号波形测试。在介绍PCI1721板卡基本功能及主要特点的基础上,介绍了VB编程结合PCI1 721总线扩展实现信号产生的方法,给出了信号产生软件实现的基本方法、PCI1721实现多通道输出的方法以及VRML和VB交互的实现方法,便于以后功能扩展。为保证输出波形满足要求,实现脉冲信号、视频信号、检波信号等模拟信号的选择输出,设计了整形电路。这样既可以实现虚拟测试又可以实现真正测试。
在电子设备模拟仿真系统中需要产生关键点的波形,供训练者测试使用,以提高模拟系统的仿真度。通常情况下模拟仿真系统由计算机和仿真机柜组成,如果在仿真机柜内部单独设计信号产生器,无疑会增加仿真系统研制难度与成本。本文介绍一种采用VB编程结合PCI1721总线扩展实现波形测试的方法,实现的思路是对虚拟模型设置传感器节点,与VB进行交互,通过虚拟模型的传感器节点,进行波形虚拟测试,通过VB编程控制控制PCI1721输出.配以整形电路,实现真正的波形测试。
1 PCI1721简介
PCI1721是一款高性能的PCI模拟量输出卡,每个模拟量输出通道都带有一个12位的双缓冲器DAC,具有许多强大的独特功能,比如最大更新速率为10 MHz的波形输出功能、自动校准功能和板卡ID等。
1.1 板卡基本功能
板卡的基本功能如下:
1)自动校准功能
PCI1721通过使用校准程序可以提供自动校准功能。PCI1721内建的校准电路对模拟量输出通道中的增益和偏移误差进行修正,无须调整外部设备和用户设置。
2)PCI总线数据传输
PCI1721支持PCI总线DMA功能用于高速数据传输和无间隔的模拟量输出。通过设置PC的内存,PCI1721可执行总线数据传输,而不需要CPU的干预,可使CPU去执行其它更重要的工作,比如:数据分析和图形操作。这种功能允许用户全速使用所有I/O功能且不丢失数据。
3)系统重启动后保持输出值
用户可以单独将4个通道的输出设为不同的范围:0~+5 V、0~+10 V、±5 V、±10 V、0~20 mA或4~20 mA,所有范围都可以通过软件进行选择。当系统热重启动(电源不关闭)时,根据跳线设置,PCI1721能够保持上一次的模拟量输出设置或输出值,或者返回到默认配置。这种特有的功能能够避免在系统意外重启动过程中的误操作带来的危险。
4)板卡ID
PCI1721带有一个DIP拨码开关,当计算机机箱中安装了多块PCI1721板卡时,可使用此开关来定义每个板卡的ID。当用户使用多块PCI17 21板卡构建自己的系统时ID设置功能将极为有用。如果板卡的ID设置正确,用户就可以很方便地在硬件配置和软件编程过程中区分和访问每块板卡。
5)卡上FIFO(先入先出)存储器
PCI1721卡上提供了FIFO(先入先出)存储器,可存储1 kb的D/A转换值。
6)可编程定时器/计数器
PCI1721提供了可编程的定时器和计数器.用于为D/A变换提供触发脉冲。定时器/计数器芯片为82C54,含有3个16位10 MHz时钟。其中有一个计数器作为事件计数器,用来对输入通道的事件进行计数。另外两个计数器级连在一起,用作脉冲触发的32位定时器。
7)波形模拟量输出
PCI1721提供4路模拟量输出通道。它们均可产生连续的波形输出,对一个模拟量输出通道可产生每秒10 ms的数据输出,用户也可以对波形数据存储在卡上的FIFO中,这样可以产生循环的波形输出。PCI1721卡上的FIFO可以存储2到1 024个波形采样。
1.2 板卡主要特点
板卡的主要特点如下:
1)10 MHz最大数字更新速率
2)PCI总线数据传输
3)自动校准功能
4)4路模拟量输出,带1k FIFO
5)每个模拟量输出通道带一个12位DAC
6)内部/外部触发的实时波形输出
7)同步输出功能
8)灵活的输入类型和范围设定
9)系统重启动后保持输出设置和输出值
10)16路D10和1个10 MHz 16位分辨率计数器
11)板卡ID
2 软件设计
2.1 软件实现的基本方法
在模拟仿真系统中,对所要实现波形测试的模型(如面板上的测试点),加入接触传感器TouchSensor节点。接触传感器的作用是检测用户基于指点设备(主要是鼠标)的动作,并将其转换为各种事件输出。在软件中当接触传感器检测到的鼠标双击动作,则用Script节点传送一个字符串到一个脚本文件中。在这个脚本文件中,在注册表中新建了一个注册表项,Setipt节点传送过来的字符串,写入该注册表项,以供VB来读取。
通过VB来编写PCI-1721板卡产生波形代码。在写波形代码时,先对所要产生的信号进行测试,确定信号的格式与参数。在编写程序时,先将PCI1721板卡的驱动、事件等模块添加到程序中。在VB主程序中,根据信号格式,用VB语言画出所要产生的各种信号。在产生波形时,先将上面提到注册表项的值读出,根据判断,确定为某个测试点后,输出该测试点的波形。波形测试孔的触发流程如图1所示。
具体步骤如下:
1)在JavaScript脚本中定义一个判断函数,即function gzwx_ceshi_panduan(name);
2)通过在测试孔的节点Transform内设置TouchSensor节点,触发Script节点,实现VRML和JavaScript脚本的交互,从而调用的Java Ser ipt脚本内的函数,如:
Browser.loadURL (‘JavaScript:parent.bottomFrame.gzwx_ceshi_panduan(\“A机编码输出\”)’,‘Target=_self’);
3)JavaScript脚本内的函数通过判断name,调用不同的网页函数,将不同波形的各项数值写入注册表;
4)VB通过不断的读取注册表的值,从而在示波器上得到所需要的波形。
2.2 PCI1721板卡多通道输出实现
在用VB编写PCI1721板卡波形产生过程中,考虑到观察信号时,会用到信号之间的同步关系,可在PT_FAO Wave FOrm Start的Enabled Channel参数中设置值为15.4通道输出,便于以后的扩展。但是PCI1721板卡并不是简简单单的设置输出通道参数后就会把数据从4个通道输出,EnabledChannel参数只是将四个通道都设置为可用,从4个通道输出不同的波形还要求将不同通道的数据先按照一定的格式放入一个总的数组,设备会按照所给的数据从不同的通道输出。
2.3 VRML和VB的交互实现方法
通常虚拟训练软件是用3DMAX建立模型,用VRML将各个模型节点联系起来的,VRML没有与VB交互的外部接口,所以在虚拟训练软件中的模型操作与VB波形产生程序之间需要一个媒介来传递信息。采取的方法是,虚拟训练软件中的模型接触传感器检测到动作后,就向Script节点传递一个事件,Script接收到此事件就给脚本文件传递一个内容为该模型名称的字符串,然后脚本文件将传递过来的字符串写入一个新建的注册表值,VB则可以通过函数读出注册表中的字符串,针对每个模型名称的不同,则可以调用不同的产生波形代码,从而实现波形的测量。这种实现交互的方法,不仅简单、方便,而且在程序调试过程中,方便观察程序的执行情况。
3 整形电路设计
所要产生的信号既包括模拟信号又包括数字脉冲,对于模拟信号直接输出即可,但对于数字脉冲,由于最高采样率为10 MHz,导致输出的脉冲波形前沿上升和下降沿都比较平缓,输出的波形达不到要求。为此设计了整形电路,如图2所示。
74LS04是一个六路反相器,对PCI1721板卡输出的脉冲波形进行两次反相,波形由模拟脉冲信号变成数字脉冲信号,使得PCI1721输出的脉冲波形上升沿和下降沿变的陡峭,基本上达到了实际中的要求。AD7502是一个八输入选择器,选择从PCI1721板卡输出脉冲信号或视频信号、检波信号等。从PCI1721板卡一个通道输出的波形一路经过两个非门后接到选择器,一路直接接到选择器,用程序控制PCI1721板卡数字输出D0和D1,将D0和D1分别接到选择器的地址端A0和A1,如果当前该通道输出信号是数字脉冲,则选择器选择输出经过两个非门后的一路信号;如果输出的信号是模拟信号,则选择器选择输出直接接到选择器的一路信号。
4 结束语
在模拟仿真训练系统中通过编程和扩展PCI板卡来产生信号,既可以满足训练中的虚拟测试,又可以满足真正的信号波形测试,大大提高了训练效果。