• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

2021年底,我接到一个任务,写一个控制是键科技237设备进行半导体器件电气测试的软件。当时指导我的一个老师给了一个用labview的方案。但是,第一,我不擅长用labview编程,第二,我发现python也可以实现同样的功能,第三,最重要的一点:python可以作为接口。labview的界面太丑了。我一直觉得颜值是兼具战斗力的。

所以我用的是python中的pyvisa库,它使得直接与带有python和GPIB接口的设备通信成为可能(其他类型的接口应该也可以)。当然,我们也需要NIVisa和其他一些支持。我应该安装NIvisa labview IOlibsuite。最后一个好像是德国科技公司的一个IO调试助理。环境的建设断断续续花了两个星期,非常糟糕。

下一步是阅读钥匙236/237的手册。300多页的英文手册,打印出来真的有点吓人。不过还好,不需要全部看完。编程只需要第三部分的指令。这部分说明确实走了不少弯路。因为不知道哪些指令组合起来才能让设备运行。当时已经可以和设备交流了,但是设备根本没有开始扫描,最后费了好大劲才看懂。你需要设置F指令,Q指令,N1X和H0X指令运行。

然后就遇到了一些奇怪的问题,后来才知道是靶场造成的。一般来说,被测样品是高阻样品,电流很小,在1000V电压下几乎测不到电流(nA以下)。测试需要很长时间。一开始以为是用了S指令,也就是增加了积分时间来减少误差,导致测试速度慢。后来我又用不同范围(0-9)的同一个样本测试了一下。测试时间与测量范围之间存在明显的指数关系,如图所示:

z1betmmpen24103.png

1qkugi1qbys4104.png

右图是实测IV结果曲线。测量范围越小,测试精度越高(说明书上说最小电流能测到fA级),耗时越长。虽然不知道是什么机制导致了指数关系,但是这个结论真的很有意思。

然后经过一系列的百度和CSDN,我用Tkinter做了第一版软件的界面。您可以进行静脉注射测试,并将数据保存在excel文件中。我们已经有了基本的轮廓。

3lsltwqwnqj4105.png

通常在使用设备时,需要知道给定电压下电流与时间的关系,也就是It曲线,于是我又研究了一下手册,完成了IVt功能。

其实很多时间都花在了两个界面的切换上,不同测试的参数也不一样。切换接口需要删除旧接口并创建新接口。我没有学过如何使用python的全局变量,所以遇到了很多bug。最后,我使用了一个带有功能的小界面,其中输入控制按钮控件被定义并放在一个框架中。使用三个全局变量分别表示三个帧。在切换接口时,使用destroy()方法删除所有接口,然后创建一个新的所需帧,并将其赋为全局变量。给函数赋值全局变量的时候,一定要加一个全局声明!

然后我就开始做界面(其实当时我觉得界面还可以,但是有一天导师突然来找我,跟我说你哪个软件界面太丑了,能不能换一个?然后我就跑了,留下我一个人发呆)。在制作界面时还有一个与全局变量相关的问题,就是在加载一张图片时,如果这段代码没有放在main函数中,这张图片就无法显示。后来通过在函数中将加载的图像变量声明为全局变量解决了。据说python的回收机制会将新加载的图片作为垃圾回收。

寒假前基本完成了软件的1.0版本。也是因为以后疫情。我一直在考虑升级。一个是接口需要改,一个是我想在和设备通信的时候用线程来做,不然设备运行的时候软件会卡死。新接口仍然是用tkinter完成的。我先用ppt莫兰迪色系P了几个界面图:

cqebe0y5tah4106.png

og/2566786/202205/2566786-20220502220414479-1477137573.png" width="324"/>     aa3gm4ses0s4107.png

不得不说PPT用来P图确实不错。最后实在不知道怎么去搭配颜色,就干脆写了一个小程序,模拟了一下界面,然后在莫兰迪色系中随机颜色,看上哪个了就记下来,然后最终确定了各个部分的颜色。这里也很感谢老妈的帮助。

最后的界面如下(后来还是有小改动):

4wrx02yxd4q4108.png

 然后我去问了同学,他们对这个软件有什么建议。我觉得有几个说的比较好,界面切换的时候把当前所在界面标出来,我是将对应的Iv测试按键颜色加深实现的。还有就是保存数据的时候一带保存图片,我花了一些功夫,还是完成了这个功能。

最后的最后,我在那台测试用的古老台式机上跑了程序,结果发现它的显示器分辨率不够,不能完全的显示界面,于是又调界面大小,控件位置等等。最后用pyinstaller打包成exe文件,简单写了一个操作说明和写给下一个开发者的文档。在那台古老的32位台式机上留下了源代码。这个工作应该是告一段落了。

600多行的代码前前后后也花了一些时间,从中也学到了不少东西,也留下了一些问题需要解决。比如还有几个半导体电学的测试设备需要用电脑软件控制,还有一个电脑通过一根线同时控制多个测试设备的问题都还有待解决。如果这一套做下来确实很棒。因为一套光电或者电学的测试设备+软件很贵(我们实验室有一套据说100W的电学测试设备,有一次光换电源模块就花了5W),如果换设备+自己写控制软件就会很便宜(我淘宝上搜的这个设备才10W)。虽然100w的设备和10w的没法比,但从某些功能上讲它没差太多,一个是并不是所有时候都需要最高的精度进行测试,另一个是自己的便宜设备可以随便用,贵的设备需要和别人抢时间用。最后还是希望不论是我还是其他人继续这个工作,都能把它好好的延续下去。

Link to comment
Share on other sites