0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过编程实现测试和测量的自动化

麦克泰技术 来源:嵌入式系统专家之声 2023-12-22 11:13 次阅读

作者 | Stuart Cording(Elektor)

译者 | 禾沐

测试有时是一件单调和枯燥的事情,寻找故障也十分具有挑战性。那么,为什么不利用测试和测量仪器上的通信接口来简化我们的测试过程呢?本文中我们将探索用Python进行控制,不需要昂贵的软件和授权的工具。

对于大多数开发者而言,测试和测量设备在工作台上只是静静地在等待任务。不过你把设备转到背面时,往往会看到通信接口。只要有合适的软件,我们就可以控制测量过程,并收集结果以供事后分析。寻找偶发事件和故障,或者在测试应用的多个系统参数时,这会非常有帮助。产品下线测试和元件的分级也可以用类似方式进行自动化测试。

1 实验室电源设备的远程控制

电源控制是一个很好的起点。大多数应用的硬重置都需要一次电源重启,更进阶的测试可能包括极端电源输入,甚至是过电压测试。这类测试在汽车中很常见,系统需要能承受400ms的87V输入(ISO 7637-2)。另一种和电源相关的常见故障模式是电压逐渐升高或降低。此时电路往往会进入欠压状态,不能自行恢复。最后,自动测试系统中的设备应该能够设定电压和最大电流,特别是系统会用于不同产品时。

近年来,实验室电源设备的价格大幅下降,面对大量低价的设备,知名厂商往往不愿意(或者无法)在价格上竞争,而是增加更多功能。我们不知道英国剑桥的Aim and Thurlby Thandar Instruments(Aim-TTi)是不是也是如此,但他们的产品确实无愧于公司口号“测得到的好价值”。在他们的直流电源产品中,入门级的EL-R系列(见图1)值得关注,特别是如果你想要试着搭建自动测试系统时。该系列的设备使用低噪音线性调节提供单、双和三输出,设备散热不使用风扇,输出范围是30到130W。设备上有一个或两个LED显示和模拟控制,一些型号还包括遥感终端。单输出的EL302P(支持RS-232接口)和EL302P-USB(支持USB接口)是值得关注的两个型号,它们的输出功率为60W,输出电压0-30V,电流0-2A。

2fa339aa-a077-11ee-8b88-92fbcf53809c.png

图1 EL-R系列直流电源通过串行接口(RS-232或通过USB)实现的虚拟COM)支持测试自动化(来源:Aim-TTi)

这两个型号的设备包括软件驱动,厂家网站上还提供PSU Sequencer工具,帮助用户通过手动或者自动的方式逐步调整电压/电流设定(见图2)。软件还可以从数据表中引入预先准备好的序列。

2fcda906-a077-11ee-8b88-92fbcf53809c.jpg

图2:通过Aim-TTi的PSU Sequencer软件可以简单地进行电压/电流的重复设定(来源:Aim-TTi)

2 用Python进行电源控制

根据你的测试需要开发控制软件也不困难。设备的硬件RS-232接口的波特率为600到9600,USB接口则会以一个虚拟COM口的形式出现。用户手册中给出了全部的命令,稍做规划就可以开发一个将每个命令单独包装为函数/方法的软件库。一种方法是运用Arduino和一个RS-232收发器来控制电源供应,这种做法还有可以和其他测试功能结合的优势,例如信号传输中继或是捕捉模拟/数字信号

或者,Python提供pySerial模块,利用它可以很容易地编写一个Python命令接口模块(见例1),实现自动控制机制。对文档稍加研究,还可以实现TCP/IP到串口的接口;实验性的RFC2217备忘录中定义了这一功能,让用户可以在远程PC上配置串口接口并实现通信。

例1:通过pySerial获取PSU ID的Python代码

2fde095e-a077-11ee-8b88-92fbcf53809c.png

3 示波器和自动化

示波器也能够远程控制。示波器有许多功能,从捕获模拟/数字信号到快速傅里叶变换,我们可以在多种自动测试中使用示波器。例如,一些故障需要一系列复杂事件以特定顺序出现才会发生。如果你的团队发现了触发故障的方法,下一步就是配置示波器捕获相关的信号,帮助寻找故障的原因。

Arduino和树莓派等开发板可以通过模拟输出和数字信号很快变成触发故障的工具,需要时还可以增加信号中继或是场效应管。这些开发板还能向示波器提供准确的触发信号,帮助采集分析故障所需的数据。

大多数示波器上有USB和LAN接口,但是一些型号只支持私有软件或是只能从浏览器上进行配置。好消息是,我们已经有了一个基于USB的测试和测量类规格(USBTMC)。类似于存储设备类(闪存盘等)和人机接口设备类(键盘、鼠标等),这一USB类预先定义好了与测试和测量设备交互的命令。

一些示波器支持USBTMC,像是200MHz、2GSa/s(GSa/s:每秒千兆采样)的B&K Precision 2567B混合信号示波器(见图3)。该设备上搭载4个模拟频道,有一个16频道的数字接口,内置50MHz随机波形产生器,支持高级触发方式。虽然它10.1寸的触摸屏让手动配置变得十分简单,我们同样可以很容易地通过USB进行配置。

2ff7178c-a077-11ee-8b88-92fbcf53809c.jpg

图3 B&K Precision 2560B系列混合信号示波器的USB接口兼容USBTMC规格,

可以很容易地用Python进行自动化(来源:B&K Precision)

4 示波器的远程配置

多亏了Alex Forencich在GitHub上的USBTMC开源项目,Python是进行示波器远程配置的最佳编程语言。在Linux上使用这一模块需要适当的权限,在Windows上则需要先安装PyUSB和libusb。

首先,你需要指定用于识别USB设备的厂商(VID)和产品(PID)信息。在Linux上,你可以连接你的设备,然后在命令行运行lsusb,命令的结果会包括这些信息。在Windows上,你可以从设备管理器的设备属性中找到必要的信息。在两种系统中VID和PID都应该是16位的16进制数值。

然后,需要在Python代码中引入usbtmc模块,并使用其中的接口(API)。代码基本上就是在屏幕上打印文字,并读取键盘输入。USBTMC的本质就是和测试/测量仪器进行通信的包装层,控制命令是根据示波器的编程指南实现的ASCII字符串,其中包含设备支持的选项。如果设备支持,也可以使用VISA资源字符串。

设备的VID和PID是针对产品,而不是特定单元的。因此,如果有两台以上同型设备,可以用它们的序列号作为第三个参数。一般可以从设备的标签上获得序列号,或者通过“*IDN?”命令查询(见例2)。

例2:通过usbtmc控制B&K Precision示波器的Python代码

3006e932-a077-11ee-8b88-92fbcf53809c.png

示波器间的主要区别是带宽、取样速度和存储容量。有时候,一些型号上会搭载实用的小功能。B&K系列支持矮脉冲触发(见图4),即一个信号跨过一个阙值,但是并未达到另一个阙值(例如,负矮脉冲跨过了较高的电平,而没有越过较低的电平)。分析故障时,设备上的小功能有时会非常有帮助。

301b6056-a077-11ee-8b88-92fbcf53809c.png

图4 矮脉冲触发可以帮助寻找没有完全升起或降低的脉冲(来源:B&K Precision)

5 无显示的测试设备

Red Pitaya的测试设备让我们产生了疑问,每个工具都需要自己的显示器吗?强大的FPGA以太网接口能够让你的PC/笔记本电脑成为用户界面。Liquid Instruments的Moku:Lab也采用了类似的思路,只有餐盘大小的设备上有一系列模拟输入和输出接口,让Moku:Lab成为了盒子里的实验室。

Moku:Lab的正面有四个BNC接头(见图5),右边的一对提供模拟输出,支持1GSa/s(每秒10亿)采样率,分辨率为16位,带宽大于300MHz(3dB衰减)。左边的一对是模拟输入,带宽为200MHz(3dB衰减),输入阻抗50Ω,12位分辨率下采样率为每频道500MSa/s(每秒5亿)。设备内部的时基精度好于500ppb。设备支持触发输入,提供同步多个单元用的接头。有线连接通过以太网和USB接口实现,第二个USB口还可以用来给平板电脑充电。最后,还有一个SD卡槽和直流电源接口。

302fe29c-a077-11ee-8b88-92fbcf53809c.png

图5 餐盘大小的Moku:Lab是一台12合一的仪器,可以通过Python API进行配置(来源:Liquid Instruments)

尽管Moku:Lab上搭载了有线接口,它的设计主要是通过Wi-Fi(802.11b/g/n)配合iPad上配套的应用使用。在应用的用户界面上可以选择12种不同的仪器,从我们熟悉的示波器和频谱分析器,到少见的PID控制器和激光锁盒。设备还可以用作数据记录仪,采样率不到100kSa/s(每秒10万)时,存储上限由插入的SD卡决定(即直接写入SD卡);采样率较高时,可以以最高1MSa/s(每秒百万)的速率在内部存储中进行记录。

与其他现代的工具类似,Moku:Lab提供Python API,支持MATLABLABVIEW,并附带数个样例(例3)。设备可以很快地整合到一个自动测试系统中,也非常适合射频设备的大规模测试和元件的分级。

例3:在Moku:Lab上生成随机波形的Python代码

30608528-a077-11ee-8b88-92fbcf53809c.png

6 节省时间、提升准确性

在复杂系统中,测试设备就是工程师的眼睛,但它们也不是万能的。偶发事件很难进行跟踪,只有知道故障成因时才能提出解决方案。虽然复杂度各不相同,如今很多测试和测量仪器都提供编程API,而易于学习的Python往往是首选的编程语言。如果你想要的测量场景很难触发,需要多组操作来完成一轮测试,或者需要大量重复操作,那么实现自动化是解决之道,也许并没有你想的那么困难。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22450

    浏览量

    645879
  • 编程
    +关注

    关注

    88

    文章

    3440

    浏览量

    92404
  • 测量仪器
    +关注

    关注

    3

    文章

    640

    浏览量

    41650
  • 电源设备
    +关注

    关注

    0

    文章

    63

    浏览量

    11802

原文标题:通过编程实现测试和测量的自动化

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LXI-未来的测试自动化总线技术

    LXI-未来的测试自动化总线技术作为以太网技术在测试自动化领域的应用扩展,LXI(LAN eXtension for Instrument)目前正在被绝大多数仪器行业的领先厂商采用。L
    发表于 06-08 10:23

    优化自动化测试系统的测量精度

    的。正如上面所举的两个例子,通过了解自动化测试系统对测量精度与分辨率的需求,可以准确地评估仪器系统总的误差范围,并验证其是否符合测试的要求。
    发表于 06-13 15:03

    OPhone自动化测试技术概述

    本文将对OPhone平台上可采用的几种自动化测试技术进行介绍,并对每种技术的优缺点做简要的总结。OPhone台除了为应用程序开发提供丰富的API外,也为开展自动化测试提供了多种途径。【
    发表于 05-06 08:58

    【OK210申请】与功率测试仪串行实现自动化数据传输

    实验与测量仪串行通信口,实验数据储存或传输,,测量仪与开发板连接,通过上位机软件的与测量仪的通信握手协议,发起通信命令,每发的一个命令字对应相应的命令功能,轻松实验
    发表于 07-17 10:04

    实现工业自动化的市场阻碍

    ,虽然很多厂家都在宣传工业自动化、宣传物联网。但是仔细的分析可以发现,大多数厂家提供的只是通过开放式程序编程来链接云端应用,客户需要自己想办法来处理这些数据。 买家多为中小企业,不太可能有足够的资源,来
    发表于 09-11 15:54

    【北京】诚聘自动化测试工程师

    猎头招聘:自动化测试工程师(薪资:25-40 K/月)工作职责:1、负责硬件相关测试效率的提升;2、负责老化测试,长时间可靠性验证及其自动化
    发表于 12-05 16:15

    开关电源自动化测试系统的设计与实现

      摘 要: 按照以软件为核心的模块系统构架,设计并实现了新一代开关电源自动化测试系统。该系统能自动完成开关电源功能
    发表于 11-29 16:59

    自动化测量软件,让直径测量更便捷

    据传输方面,软件的测量数据可以通过有线、无线网络向用户指定的电脑、手机、生产车间控制系统传送指定的数据,用户也可以通过电脑访问方式、手机APP访问方式读取测量软件数据库内的
    发表于 01-16 10:40

    自动化测试框架思想和构建

    自动化测试一般是指软件测试自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。本文介绍的是
    发表于 07-18 06:52

    七个步骤实现自动化测试

    本文介绍自动化测试的 7 个步骤:改进自动化测试过程,定义需求,验证概念,支持产品的可测试性,具有可延续性的设计( design for s
    发表于 07-18 07:42

    如何对用户界面进行自动化测试

    按键操作)的自动化, 可以实现完全的自动化测试。 如下图所示,界面测试蚂蚁机器人自动控制相机拍摄
    发表于 03-06 19:57

    纳米软件案例之电阻自动化测试系统

    和LakeShore336、泰克4200参数分析仪之间由GPIB相连。电阻自动化测试系统由通信连接、参数设置、运行测试、数据保存4个模块组成。通信连接模块实现与泰克4200、LakeS
    发表于 08-21 11:41

    自动化测试系统问答

    )、兼容性入手。自动化测试的具体实现,总是离不开清晰的思路,要用最简单的方式理清思路,应该是包含下面七个过程的:2.设计:设计测试用例,测试
    发表于 10-12 19:02

    python控制CANoe实现自动化测试的方法

    ”完成了python控制CANoe实现自动化测试。那么,python能控制钉钉么?答案是可以的。那么用py
    发表于 12-29 08:12

    LabVIEW与Tektronix示波器实现电源测试自动化

    LabVIEW与Tektronix示波器实现电源测试自动化 在现代电子测试测量领域,自动化
    发表于 12-09 20:37