您的位置 首页 方案

使用Python言语完成实验室自动化

作为一名系统和应用工程师,得益于自动化仪器和软件,我已经节省了不计其数的日日夜夜;例如LabVIEW,这是一款系统设计平台和开发环境,支持可视化编程语言。LabVIEW支持用户利用友好的图形用户界

  作为一名体系和运用工程师,得益于主动化仪器和软件,我现已节省了不可胜数的日日夜夜;例如LabVIEW,这是一款体系规划渠道和开发环境,支撑可视化编程言语。LabVIEW支撑用户运用友爱的图形用户界面(GUI)构建运用程序。该渠道带有多个库和模块,使其能够与仪器通讯,所以可用于实验室主动化。作为LabVIEW用户,我现已运用该东西构建了多款运用程序,但在曩昔几年中,我现已开端逐渐将其筛选,代之以Python言语(见侧栏:“Python是什么以及怎么运用?”)。

  为了了解其间缘由,咱们首要了解一下Python相关于现有替代言语的首要优势,以及评论Python运用程序的作业实例。表达Python便利和强壮之处的最佳办法是介绍一个完好、可作业的Python主动化脚本,例如我用来完成稳压器(VR)负载调理曲线(负载调理是指输出电压随输出电流(负载)增大而发生的改变)主动丈量的脚本。

  这些稳压器分为两类:零下垂稳压器规划的输出电阻为零;因而,输出电压设置点不该随输出电流增大而改变。相比较而言,下垂稳压器具有“载重线”,意味着被规划成具有特定的等效输出电阻。本例中所用稳压器的零电流输出电压为1 V,设定的载重线为2.5 mΩ。

图1. 丈量装备

  在图1所示的实验装备中,运用Chroma 63201电子负载施加负载电流(VR输出电流)。经过收集经过校准的4 mΩ短路器上的电压,测得输出电流。运用Agilent 34970A数字收集器(DAQ)收集电压和电流,DAQ和电子负载均经过GPIB衔接至核算机。咱们丈量的意图是证明:在必定输出电流规模下,输出电压在技术指标规模之内;图2所示为运用程序的流程图。

图2. 运用程序流程图

  从根本代码结构开端

  以下是主动化脚本代码的榜首部分。Python言语中,注释用#表明:

  第1至3行引证库,其间包括随后代码中运用的办法:

  •Numpy是用于科学核算的封装库。本例中,Numpy用于发生输出电流值的数组。

  •Pandas (用于数据处理和剖析的库)创立一个功能强壮的数据结构,以贮存咱们的丈量成果。

  •Visa是PyVISA库,用来操控咱们的仪器。

  •Time是一个十分便利的库,用于发生某些时间推迟。

  留意,引证的Numpy和Pandas库被重命名为np和pd,以坚持代码整齐。本文中提及的一切库要么现已随Python 装置包供给,要么也很简略从在线软件库中装置。

  第4至5行创立咱们用来拜访Chroma电子负载和Agilent DAQ的目标。这正是PyVISA的效果:咱们只需调用instrument办法,并供给表明通讯接口的字符串(GPIB)以及仪器在总线上的地址。

  第6行创立results数据框(dataframe),用来贮存丈量成果。数据框是一种二维标签数据结构,各列的数据类型能够不同。运用数据框而不运用数组,答应咱们经过简略回忆的字符串而不是数字来引证列,以及在数据自身中混合数字和文本。

  第7行创立一个实数数组,从0到20,步长为2。这些数字表明以安培为单位的输出电流值,在这些电流点丈量VOUT。

  第8行用于构建“for”循环。留意,语法很简略了解:每次履行循环时,创立一个load 变量,其值等于loads数组的新元素。当运用了数组的悉数元素时,循环完毕。有意思的是,Python运用缩进界说代码的层次结构,而不依赖于任何类型的括号。这样能够坚持代码的整齐和易读性,十分有用。

  已然咱们现已界说了主循环,就需要告知仪器设置电流,然后读取电压,并保存成果。

  仪器通讯及保存数据

  咱们接下来看看第二部分的代码:

  第9至10行装备相应的负载电流并翻开负载。只需要运用读/写办法,而且知道仪器承受的指令串(可查阅仪器手册),即可经过GPIB接口进行通讯。与其他编程言语相似,%.2f为占位符,在实践运转时用变量load的值替代。也表明咱们期望数据表明为带两位小数的实数。第11行发生1秒推迟,这关于保证仪器和电路到达稳态条件十分有用。

  第12行创立一个空目标(在Python中称为字典),用于暂存履行一次循环的成果。

  第13至16行用来丈量输出电压和电流。榜首条指令告知仪器咱们想要做什么(丈量直流电压,选用主动变比)以及对应的收集通道。分别在通道101和102收集输出电压和电流。第二条指令读取回来的成果并将其贮存在temp中。数据以字符串的方式回来,所以有必要运用float函数将其转换为实数。此外,因为DAQ丈量的是电压,咱们需要将读数与短路器电阻(0.004 Ω)相除,得到正确的电流值。

  看看运用Python和Pandas有条理地保存数据是多么简略:temp字典中的字段无需提早界说,而且运用具有意义的字符串进行拜访。无需回忆列号与数据之间的联系,而假如运用数组存储数据的话则有必要这么做。

  在第17行中,咱们将字段附加到results数据框。留意,results也不需要进行初始化;每次附加一个新行时,将添加新字段至数据框。

  第18行可选,但在终端上打印当时电压和电流值十分有用,特别关于长期丈量,能够作为承认运用程序仍然在运转的途径,以及了解履行到了什么程度。

  在第19至20行,封闭负载,将数据保存到硬盘。关于后者,每个数据框目标都运用一种内置办法将数据保存到CSV文件。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/204195.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部