基于LabVIEW程控示波器完成数据波形显示

基于LabVIEW程控示波器

功能需求:

基于上一篇示波器显示串口下发数据的波形,现在有一个需求是要求使用台式示波器抓取串口发送的数据,其需要具体实现的功能:

  1. 通过软件设置台式示波器的水平分辨率、垂直分辨率、触发模式以及触发电平;
  2. 软件调用串口发送数据,每一次发送一个U8数据;
  3. 软件读取台式示波器触发的波形,并在波形图上显示。

需要使用到的软件:LabVIEW 2023、NI MAX、串口调试软件(XCOM V2.0)、

需要使用到的硬件:PC、USB转RS-485/422转换器一个、示波器(RIGOL DS1102Z-E)、导线若干。

首先照着上一篇的方法将示波器采集波形的环境搭建完成,搭建的过程在上一篇中有非常详尽的说明,此处稍微说明:需要使用转换器连接到PC的USB接口上,并使用XCOM在新增的串口下发送数据,将转换器的另一端发送端T+、T-与示波器的引脚相连,打开示波器,调整参数直到抓取到详细的波形。

本篇文章想说明的是,如何使调整参数的过程在软件中完成,并返回波形至软件。首先我们要在使用的示波器的编程手册中找到本次任务需要使用的命令语句。

控制示波器的编程命令语句

  1. 设置垂直分辨率

命令格式 :CHANnel<n>:SCALe <scale>

功能描述 设置指定通道的垂直档位,默认单位为V。

举例 :CHANnel1:SCALe 1   /*设置CH1的垂直档位为1V*/

  1. 设置水平分辨率

命令格式 :TIMebase[:MAIN]:SCALe <scale>

功能描述 设置主时基档位,默认单位为s/div。

举例 :TIMebase:MAIN:SCALe 0.0002   /*设置主时基档位为200μs/div*/

  1. 设置触发模式
  1. .选择触发类型

命令格式 :TRIGger:MODE <mode>

功能描述 选择触发类型。

举例 :TRIGger:MODE EDGE /*选择边沿触发*/

  1. .设置触发条件

命令格式 :TRIGger:EDGe:SLOPe <slope>

功能描述 设置或查询边沿触发的边沿类型。

举例 :TRIGger:EDGe:SLOPe NEGative   /*设置边沿类型为下降沿*/

  1. .设置触发源

命令格式 :TRIGger:EDGe:SOURce <source>

功能描述 设置边沿触发的触发源。

举例 :TRIGger:EDGe:SOURce CHANnel1    /*设置触发源为CH1*/

  1. 设置触发电平

命令格式 :TRIGger:EDGe:LEVel <level>

功能描述 设置边沿触发时的触发电平,单位与所选信源当前幅度单位一致。

举例 :TRIGger:EDGe:LEVel 0.16   /*设置触发电平为160mV*/

  1. 设置触发方式

命令格式 :TRIGger:SWEep <sweep>

功能描述 设置触发方式。

举例 :TRIGger:SWEep SINGle  /*选择单次触发方式*/

  1. :WAVeform命令用于读取波形数据及其相关设置。
  1. .设置通道源

命令格式 :WAVeform:SOURce <source>

功能描述 设置波形数据读取的通道源。

举例 :WAVeform:SOURce CHANnel2     /*设置通道源为CH2*/

  1. .设置波形数据的返回格式

命令格式 :WAVeform:FORMat <fomat>

功能描述 设置波形数据的返回格式。

举例 :WAVeform:FORMat WORD /*设置波形数据的返回格式为WORD*/

  1. .读取波形数据

命令格式 :WAVeform:DATA?

功能描述 读取波形数据。

  1. 示波器开始、停止运行

命令格式 :RUN     :STOP

功能描述 :RUN命令使示波器开始运行。:STOP命令使示波器停止运行。

以上就是我们本次任务所要用到的一些控制示波器的命令语句。

编程前准备

本次任务使用的示波器型号为RIGOL DS1102Z-E,并且应用示波器的USB接口与PC通信。请使用USB数据线将示波器后面板的USB Device接口与PC相连。 示波器与PC正确连接后,接通仪器电源并开机(请确认 Utility → 接口设置 → USB设备 当前选择“计算机”)。此时,PC上将弹出“硬件更新向导”对话框,请按照向导的提示安装“USB Test and Measurement Device (IVI)”。

验证搭建的环境是否正确,可以打开NI MAX 软件先进行测试。在保证所有的外部环境均正常的条件下再开始编程。

第一步,选择设备与接口下对应的示波器选项,在右侧弹出的对话框中选择打开VISA测试面板。

点击Input/Outout选项,点击Write,写入一个默认的指令。

最后点击Read选项,观察返回的观察其返回的数据是否正常。若正常便可以编写软件实现具体需求,若未返回数据则需要进一步排查问题。

编写软件

实现功能的代码部分,我们为了循序渐进的讲解逻辑,这里拆开来一一讲解。

  1. 首先使用“VISA打开”函数,将输入的VISA资源名称进行配置,此处的配置方法是在前面板键该控件---选择VISA类----I/O Session----USB Instr。配置一般为“USB 0::0xAB1::0x0517::DS1ZE232310130::INSTR”的形式。

使用“VISA写入”函数,设置其水平分辨率、垂直分辨率。

2.使用“VISA写入”函数,设置触发相关操作。

3.设置好触发相关设置后,进入下一帧顺序结构中,在本帧中,我们加入COM口的发送数据,该部分就相当于使用XCOM下发数据在示波器上显示波形的效果。稍微不同的是我们在写入之前先让示波器重新运行一次(初始化),进入while循环中当按下采集键是,在选择结构中的顺序结构会下发提取示波器波形的命令并推出循环,退出循环后再将COM口的数据写入一次。

注意,在设置单次出发后,需要延时一段时间才能写入提取波形的命令,并在后续提取出波形,这跟示波器的硬件特性有关。

  1. 本帧主要实现示波器数据的提取,使用“VISA读取”函数,将示波器显示的波形读取至软件的波形图中。本例中读取的波形数据长度总字节数小于2048。

提取波形数据的具体步骤是:由于读取的数据格式为TMC头+波形数据点+结束符。TMC头为#NXXXXXX的形式,#为TMC规定的头标志符,N表示后面含有N个字节,以ASCII字符的形式描述波形数据点的长度,结束符用于表示通讯的终 止。例如,一次读取的数据为:#9000001200XXXX表示9个字节描述数据的长度,000001200表示波 形数据的长度,即1200字节。提取出N的数值,通过使用“部分字符串”和“十进制数字字符串至数 值转换”两个函数完成。进而再提取出有效的波形数据长度。最后通过“字符串至字节数组转换”将字符数据转换为数组形式,即可在波形图控件上显示波形数据,然后 通过“数组子集”函数去掉头部的TMC数据头。

结果

1.使用COM5接口发送数据F0(11110000),示波器显示的波形和软件读回的波形。

  1. 使用COM5接口发送数据AA(10101010),示波器显示的波形和软件读回的波形。

  • 31
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天还没学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值