keysight测试软件调试小结
作者:互联网
2021年年底,接到一个任务,编写一个软件,用于控制keysight237设备进行半导体器件的电学测试。当时一个指导我的老师给出的方案是使用labview做。但是,第一我不太会用labview编程,第二我发现python也可以实现同样的功能,第三也是最重要的一点:python可以做界面。labview的界面太丑了。我始终认为颜值既是战斗力。
于是我使用了python中的pyvisa库,它使得可以直接用python和GPIB接口的设备通信(其他类型的接口应该也可以)。当然还需要NIVisa和一些其他的支持。我应该是安装了NIvisa+labview+IOlibsuite。最后一个好像是是德科技公司的一个IO调试助手。环境的搭建就断断续续花了两个礼拜,很糟心。
接下来就是阅读keysight236/237的手册了,三百多页的英文手册打印出来的时候确实有点吓人。不过还好,不需要全部阅读。编程只需第三部分的指令说明就可以了。指令这一块确实走了不少弯路。因为我不知道哪些指令组合起来才能让设备运行。当时已经可以和设备通信了,但是设备怎么也不开始扫描,最后花了很大的功夫才搞懂。需要设置F指令,Q指令还有N1X和H0X指令类似这样的组合才可以运行。
之后便遇到了一些奇怪的问题,后来才明白是由于量程导致的。大致来说就是测试的样品是高阻样品,电流非常小,以至于1000V的电压下也几乎测不到电流(nA以下)。测试时间很长很长。开始以为是使用了S指令,也就是加积分时间减小误差,导致了测试速度很慢。后来我用同一个样品,不同的量程(0-9)测试。其测试时间和量程有明显的指数关系,如图:
右图是测量的IV结果曲线。量程越小,测试精度越高(手册说最小电流能测到fA级别),所需要的时间越长。虽然我不知道具体是什么机制导致的指数关系,但这个结论确实很有意思。
然后经过一系列的百度和CSDN,我用Tkinter做出了初代版本软件的界面。可以进行IV测试并以excel文件保存数据。已经有了基本的轮廓了。
平时使用设备的时候还需要知道在给定电压下,电流和时间的关系,也就是It曲线,所以再次研究手册,我完成了IVt功能。
其实很多时间花在了两个界面的切换上,不同测试的参数不一样,切换界面需要删除旧的界面再创建新的界面。python 的全局变量使用我没学过,就遇到了不少bug。最后我采用的是一个小界面用一个函数,函数里定义了输入控件按键控件,放在一个frame里。使用三个全局变量分别代表三个frame。切换界面的时候用destroy()方法删掉所有界面,然后再新建一个需要的frame,赋值为全局变量。在函数中赋值全局变量的时候一定要加global声明!
后面接开始做界面了(其实当时我觉得界面还行,但是导师有一天突然跑过来和我说你哪个软件界面太丑了,能不能改一下。然后就跑了,留下懵逼的我)。做界面的时候也遇到了一个和全局变量有关的问题,就是在加载图片的时候,如果这段代码不放在主函数里,这个图片就不能显示。后来是通过将加载的图片变量在函数中声明为全局变量的方法才得以解决。据说是python的回收机制会把刚加载的图片当做垃圾回收了。
寒假前基本就完成了软件的1.0版本。回去以后也是因为疫情吧,就一直想着升级一下,一个是界面要改,一个是和设备通信的时候想用线程去做,不然设备在运行的时候软件也会卡住。新界面还是用tkinter完成的。我先用ppt+莫兰迪色系去P了好几张界面图:
不得不说PPT用来P图确实不错。最后实在不知道怎么去搭配颜色,就干脆写了一个小程序,模拟了一下界面,然后在莫兰迪色系中随机颜色,看上哪个了就记下来,然后最终确定了各个部分的颜色。这里也很感谢老妈的帮助。
最后的界面如下(后来还是有小改动):
然后我去问了同学,他们对这个软件有什么建议。我觉得有几个说的比较好,界面切换的时候把当前所在界面标出来,我是将对应的Iv测试按键颜色加深实现的。还有就是保存数据的时候一带保存图片,我花了一些功夫,还是完成了这个功能。
最后的最后,我在那台测试用的古老台式机上跑了程序,结果发现它的显示器分辨率不够,不能完全的显示界面,于是又调界面大小,控件位置等等。最后用pyinstaller打包成exe文件,简单写了一个操作说明和写给下一个开发者的文档。在那台古老的32位台式机上留下了源代码。这个工作应该是告一段落了。
600多行的代码前前后后也花了一些时间,从中也学到了不少东西,也留下了一些问题需要解决。比如还有几个半导体电学的测试设备需要用电脑软件控制,还有一个电脑通过一根线同时控制多个测试设备的问题都还有待解决。如果这一套做下来确实很棒。因为一套光电或者电学的测试设备+软件很贵(我们实验室有一套据说100W的电学测试设备,有一次光换电源模块就花了5W),如果换设备+自己写控制软件就会很便宜(我淘宝上搜的这个设备才10W)。虽然100w的设备和10w的没法比,但从某些功能上讲它没差太多,一个是并不是所有时候都需要最高的精度进行测试,另一个是自己的便宜设备可以随便用,贵的设备需要和别人抢时间用。最后还是希望不论是我还是其他人继续这个工作,都能把它好好的延续下去。
标签:界面,python,测试软件,指令,测试,keysight,全局变量,小结,设备 来源: https://www.cnblogs.com/mysteriouspavilion/p/16217152.html