1、1双通道虚拟示波器设计设计步骤(一)软件部分:首先对系统结构进行总体规划设计,再分步完成各功能模块,最后进行系统联调。示波设计的基本原理和思路如下:LabJack U12 为多功能数据采集模块,被测信号必须变换为合适的模拟输入才可以送入数据采集模块,否则会烧毁板卡。由于最高采集频率、内存缓冲量及调用方法等方面存在着不同的技术指标,在设计本虚拟示波器时选用了 LJ Burst 程序模块。LJ Burst 模拟通道数据采集驱动程序从 1,2,或 4 个模拟通道,以指定的扫描率(可高到 4096 赫兹)读取指定扫描数的电压。先将采集的数据放在 LabJack 的 4096 个内存缓冲器中。然后再传送
2、到计算机上。具体内容:1双通道示波器通道选择的设计(1)设计思想:选择 LabJack U12 多功能数据采集模块上的 8 个模拟输入端口 AI0AI7 作为示波器的输入通道 ,以实现双踪示波器功能。关于模拟输入端口 AI0AI7 的一些相关硬件特性见 LabJack U12 多功能数据采集控制器用户说明书。LabJack U12 多功能数据采集卡的底层驱动程序 Burst 端口图如下:触发处理时基处理波形显示参数测量被测信号 通道控制 数据采集数据处理分析数据存储与读取2(A)通道选择点击 Channel 1/Channel 2 的下拉菜单选择所对应的输入通道号。单端输入模式时:可选择 AI
3、0AI7;差动输入模式时:硬件规定作为差动输入端口只能选择顺序排列的相邻两个,如 0 与 1、2 与 3、4 与 5、6 与 7,所以差动输入通道号必须按照规定选择。(B) 硬件增益选择选择差动输入模式时:在 Channel 1/Channel 2 下面会显示出相应通道的硬件增益选项(Channel 1 G/Channel 2 G),放大倍数与电压的对应关系如下:序号 放大倍数电压(伏)序号 放大倍数 电压(伏)1 G=1 20 5 G=8 2.52 G=2 10 6 G=10 23 G=4 5 7 G=16 1.254 G=5 4 8 G=20 1单端模式时:硬件增益选项(Channel 1
4、 G/Channel 2 G)将自动隐藏。3(2)程序流程图:通道号7 否?开始通道选择双端差动输入自动显示增益选择增益值显示输入通道号及其增益值AI0-AI7 单端输入自动增益隐藏显示输入通道号完成否?是是结束否否(3)框图程序4首先,设计通道和通道增益。创建两个 Ring 结构,将它们分别命名为 Channel 1、Gain1。然后将 IO 0 SE(+/-10v)、IO 1 SE(+/-10v)、IO 2 SE(+/-10v)、IO 3 SE(+/-10v)、IO 4 SE(+/-10v) IO 5 SE(+/-10v)、IO 6 SE(+/-10v)、IO 7 SE(+/-10v)、0
5、-1 Diff、 0-2 Diff、 0-3 Diff、0-4 Diff 依次输入到 Channel A 的 Properties Edit Items 中;将 1(+/-20V) 、 2(+/-10V) 、 4(+/-5V) 、 5(+/-4V) 、 8(+/-2.5V) 、10(+/-2V) 、 16(+/-1.25V) 、 20(+/-1V) 依次输入到 Gain1 的 Properties Edit Items 中。至此,完成通道 A 即通道 A 增益的编辑。将 CH A Gain 放入 case 结构 true 中,在该结构的 false 中任意输入一常量,按照程序框图完成对应的连接
6、。通道 B 的相关操作与此完全相同。在 A 和 B 的 case 结构外各有一比较器,通道的选取值与 7 进行比较。若选取值小于7,则比较器输出为零,因比较器的输出与通道的属性节点 Visible 相连,故此时通道的增益不可见。当通道选取为差动输入时,比较器输出为 1,从而通道的增益可见,可以对其值进行调节。框图程序右端为簇结构,这样的结构可以减少框图程序中的连线,使程序结构更加清晰。将通道、通道增益、通道数分别与 Array Constant 组装,之后将组装后的结构按照通道、通道增益、通道数顺序依次放入簇中。注意,一定要按照通道、通道增益、通道数的顺序放入簇中,否则将造成程序错误。至此,一
7、个簇结构建立成功。完成上述工作后,将通道、通道增益分别与两个 Build Aarray 结构连接,再将之前建立的簇结构与这两个 Build Aarray 结构分别与一 bundle by name 结构对应端口相连接,在 bundle 结构的 num of channel 创建常量 2。至此,完成通道选择部分的设计。最后,将 bundle 结构的 output cluster 连接至 Burst 的 Analog Input Commands 端口。(4)前面板设计5单端输入隐藏增益:差动输入显示增益:2示波器错误显示部分的设计(1)设计思想该功能是以信息显示窗口的形式出现在前面板上的。运行中
8、它有两状态:无错误时(no error),以蓝底黑字显示“normal”字样,表示运行状态正常;错误时(error),它将是红底黑字用英文显示当前错误信息。(2)程序框图创建一个 case 结构,将 LJ Burst 的 error out 端口与该结构的 相连接,则原case 结构的 True、False 变为 No Error 和 Error,边框的颜色相应的变为绿色和红色。(A)Error 部分。首先,在 case 中放入 Unbundle By Name 和 GetErrorString.vi,这个 vi 的作用是将错误代码转化为错误信息,在 String 中显示。在前面板加入一个 S
9、tring 用以显示信息。在程序框图中找到这个 String,将其放入 case 结构中。将 与 Unbundle By Name相连,在 Unbundle By Name 上单击鼠标左键选择 code。完成上述操作后,将 case 中三个结构相连接。接下来,创建 TextColor 属性节点。在 String 上单击鼠标右键,选择CreatProperty Node Text Text Colors BG Color。然后添加 Color Box Constan与上述属性节点相连,并选择为红色。6(B)no error 部分在 String 结构上单击鼠标右键,创建 Local Variab
10、le 并将其放在 case 外的任意位置;再次创建一个 TextColor 属性节点放在 case 结构外,并将其命名为 no error。选择case 结构为 No Error,将 Local Variable 和 TextColor 属性节点放入 case 结构内。在Local Variable 上单击鼠标右键,创建 Constant,并输入 normal;添加 Color Box Constan 与 TextColor 属性节点相联接,并选择 Color Box Constant 为蓝色。(3)前面板设计无错误: 有错误(提示错误信息):3示波器波形显示部分的设计(1)设计思想(A) 采
11、样控制部分该部分由扫描频率(Hz)以及扫描点数连个控件组成,如框图程序中最左边所示。扫描频率(Hz):256到4096,指定了每秒所进行的扫描次数。扫描点数:32到2048,指定了采集的扫描点数,即决定了总的采集时间。( 最高采样频率是4096Hz。)扫描频率和扫描次数这两个参数决定了总的采集时间。例如以 4096 赫兹的扫描速率来采集 1024 个扫描点数,那么它将采集四分之一秒的数据。 可以设置粗调区间,数字输入框则显示用户当前的设置。也允许用户通过键盘或鼠标直接输入设置区间,可视为细调。(B) 信号分析处理部分该部分主要由 Array Index 和 Aamplitude and Pha
12、se Spectrum 组成。Array Index完成对 n 个数组的索引;Aamplitude and Phase Spectrum 将 Burst 采集的电压信号转变为电压有效值-频率信号,可以在 Wave Graph 上显示。(C)波形显示部分该部分由判决器、Hide Channel B 开关、以及 bundle 结构这三部分组成。当 Hide Channel B 开关打开时,两个判决器的 f 通道被选通,将同时显示通道 A 及通道 B 的幅值和电压有效值-频率波形;当 Hide Channel B 开关闭合时,两个判决器的 t 通道被选通,此时,只显示通道 A 的幅值和电压有效值-频
13、率波形,隐藏通道 B 的相关波形。(2)程序框图7(3)前面板设计8波形设置:通过它的弹出菜单,用户可以设定波形曲线的各种属性,包括波形的名称、线型和颜色等等。坐标比例控制:可以在程序运行中放大、缩小或移动所显示的波形,还可以调节格式、精度、颜色等显示信息。坐标轴范围调整:4示波器测量数据的存储(1)设计思想在示波器运行过程中,点击 save 按钮即可对波形的进行存储操作。波形存储默认文件名为 data.xls;存储格式为 excel 形式。(2)程序框图本部分主要由两个 case 结构组成。其中“Transpose 2D Array”实现矩阵的转置; “File Dialog”将提示信息设为
14、 Save data file as.,默认的文件名设为 data.xls,文件保存格式设为*.xls; “Write To Spreadsheet File”实现数据的写入。数据格式为:%.8f; 为是否 Transpose 的控制开关。 “For Loop”为一循环结构,由 number of scan 控制循环次数。9(3)前面板设计5其它(1)触发控制(A)设计思想用来控制是否启用数字输入输出口(IO)触发器。按下则启动触发器;否则不启动。触发器按钮的作用:用于选择触发口(硬件规定,只有 IO0/IO1 可做为触发端口)选择触发状态(选中则高电平触发,否则低电平触发) 。指定一个超时时
15、间,使程序不会无休止地等待触发信号。(B)程序流程图10(C)框图程序: (D)前面板设计图中Trigger和簇 分别由Burst的Trigger和Advanced端口创建Control和Constant得到。创建完成后断开它们与Burst的连线,按照框图程序进行连接。选择Bundle by Name,将 与Bundle by Name相联接,在Bundle by Name上单击鼠标左键,选择Timeout (seconds)。然后,在Timeout(seconds)的左端单击鼠标右键创建Control,更改属性得到 。(2)幅值控制(A)设计思想该部分用一个Knob控件与Scope纵坐标轴的最大与最小属性节点相连,从而实现对Scope虚拟仪表的显示范围进行调整。(B)框图程序: (C)前面板设计:在框图程序中找到Scope仪表,在其上单击鼠标右键,选择create property node Y scale Range Minimum,再用鼠标进行拖拉,直至出现Maximum ,然后进行连接。