C#实现仪器的自动控制
1.概述
在生产测试中,测试设备必不可少。如果是小规模生产,则可以进行手动测试。但是,为了达到批量生产的目的,为了简化测试并节省时间,需要自动测试。出于这种需求,需要对仪器进行自动程序控制。
下面的图片是一个相对常见的测试框架
整个控制过程中最关键的部分是主机与测试仪器之间的通信。首先,在建立测试环境之后,沟通是关键的第一步。第二步是使用“仪器语言”告诉仪器我们需要他们做什么。简而言之,这两个步骤。
让我们首先介绍一些相关的知识点。
2.通用控制界面
公共控制接口主要包括:GPIB,串行端口(RS-232),USB,LAN或以太网)。
串行接口的通信速度很慢,并且很少使用现代测试系统。
尽管现代仪器控制界面非常丰富,但对于仪器制造商和用户而言,GPIB接口是使用最广泛的。
常用的USB接口版本是USB 2. 0,它支持三种传输速率:低速1. 5Mbps,全速12Mbps和高速480Mbps。传输速度根据外部设备自动调整,无需设置。直接连接的最大电缆长度为5M,最多可以连接127个设备。
以太网是当今现有LAN采用的最常见的通信协议标准,可以实现互连设备之间的10Mbps-10Gbps数据通信。
我在实践中使用的主要方法是LAN和USB,因此主要提到这两种方法。
有关控制界面的详细介绍,请访问相关网站以供参考。
3.SCPI(可编程仪器的标准语言)
SCPI(可编程仪器标准命令)程序控制的仪器标准命令是1990年由九家仪器公司共同发布的。它基于IEEE488.2构建,面向测试功能或测试信号,并倡导仪器控制的一致性。
主要功能是:
程序控制命令是针对测试过程的,而不是描述仪器的操作;兼容的编程环境使用相同的命令和参数来控制具有相同功能的仪器。高层定义程序控制的消息,该消息与通信的物理连接层硬件无关。
SCPI基于IEEE488.2,但不仅限于GPIB接口,还可以用于RS232C,LAN,USB总线。
与编程方法和编程语言无关,SCPI用户测试程序模块易于移植。
SCPI具有通用命令,适用于所有仪器。也有特定的命令,即不同的乐器具有不同的命令。但是所有命令都符合SCPI标准。
有关SCPI的更详细介绍,请参阅相关材料,因此在此不再赘述。
4.VISA(虚拟仪器软件体系结构)
VISA是驱动程序软件体系结构。开发此架构的目的是统一与GPIB,串行,以太网/ LAN,IEEE 1394和USB仪器的通信,并简化仪器控制应用程序。通过VISA API,开发人员可以使用GPIB,串行,以太网/ LAN,IEEE 1394和USB仪器。
VISA具有以下优点:
有关VISA的更详细介绍,请参阅相关材料。5.仪器控制程序
接下来,让我们谈谈如何使用VISA与仪器进行通信。
方法1
平台:vs2013。
构建项目后,现在引入两个.NET托管DLL,并添加NationalInstruments.Common和NationalInstruments.VisaNS对项目的引用。可以在C:\ Program Files(x86)\ National Instruments \ MeasurementStudioVS20XX \ DotNET \ Assemblies \目录中找到这两个dll文件。
打开VISA会话。
查询数据。与仪器建立通信会话后,我们可以开始向仪器发送数据并回读其响应。
我们还可以使用Write函数发送但不读取数据。
最后关闭会话
我需要指出一点。使用串行端口和USB端口进行控制时,此方法失败,因此我使用了第二种方法。我尚未测试此方法是否不适用于所有串行端口和U端口。如果已经测试过,则可以相互通信。同样,此方法不适用于使用Socket的乐器。
方法二
第二种方法使用签证界面。
控制流程类似于第一种方法。首先,将Visa3 2. dll文件放在项目的调试目录下。如果您不这样做,程序将首先搜索调试目录,然后搜索system32目录自动测量设备,并查找Visa3 2. dll文件。在这里自动测量设备,与上述不同,由于dll文件是.NET非托管程序集,因此需要将其显式导入,因此dll文件将导入到项目中。负责导入的类文件参考Visa3 2. cs。 (注意:您可以检查文件是由dumpbin -depents ***。exe还是dll管理的。如果存在mscoree.dll,则是托管文件,否则为非托管文件)
在项目中创建Visa3 2. dll后,可以引用其中的功能。有关特定用法,请参阅NI-Visa帮助。
下面是代码的一部分
该方法不适用于不支持VXI-11协议的仪器。您需要自己实现TCP通信。
关于仪器的控制,我还有很多事情要弄清楚。目前,我将记录这段时间内的收成。如果对此有任何想法,我可以随时进行交流。