Lab Windows/CVI为美国NI公司的虚拟测控软件,具有超强的实时数据采集和处理能力,以及丰富的图形界面GUI设计功能.它主要的直接支持硬件设备为NI公司的AD/DA板卡和远程的Field Paints等产品,价格昂贵.这些硬件设备对工业控制中常用的设备,如PLC、变频器及自我开发的微控制器、采集器等设备缺乏有效的兼容,无法满足国内工业控制仪表和测试的现实需要,故其优越的性能还没有在这一领域得到充分发挥.本文通过实践,研讨了基于LabWindows/CVl实现一般设备网络远程虚拟测控方法.从系统性和实用性的角度,较好解决了CVI应用存在问题,丰富了虚拟测控的形式和内容.
1远程控制的框架结构
本文采用的是客户端/服务器的网络模式,如图1所示.客户端放置于远端,主要提出控制申请、递交控制参数和观测分析实验结果等.服务器(本地机)放置于最接近现场或对象的地方,实现对现场或对象的数据采集与控制、返回现场的实时录像等.服务器的另一个重要任务是,认证来自客户端的控制申请,根据具体控制项目的不同,服务端可采用灵活的控制方式,有的在计算机PCI或ISA槽插上数据采集卡对对象实行UDC测控C3),有的则通过串_口通讯(如RS232 , RS485 )操纵专门的仪器设备或微控制器对对象实行监督型测控。
2关键技术的研究和开发
2.1 LabWindowsJCVI与Matlab的软接口技术
为了方便实现各种复杂的算法,服务器端的系统Matlab设于后台,完成控制系统建模和算法计算工作.其他程序如通讯、数据库、数据采集、部分数据处理等用CVI编写,通过对Matlab的调用,获取算法计算结果等数据.CVI对1VIatlab的调用关键是数据和命令的交换,即软接口技术.本文采用引擎程序实现软接口。Lab W indowslCV I环境的引擎程序是ANSIC编写的,它通过在程序中调用引擎函数完成与Matlab之间的数据交换和命令传递.其环境建立即创建引擎函数的使用条件,包括建Libeng. lib,,3个静态链接库文件.引擎程序中会使用到的engine函数和mx函数都包括在这些静态库中了.此外,是对engine.h头文件的包含.因为engine.h中不但含有对引擎函数及相关数据类型的定义,还对matrix.h进行了包含.如果缺少了它们,将无法使用Matlab引擎.引擎程序的主体部分如下:
#include“engine.h”//包含引擎头文件
//其他编译预处理
int main()
{//变量定义及初始化
Engine *ep; //定义引擎指针ep
mxArray * A=NULL, * B=NULL;//定义结构体变量1
double * Breal,* Bimag;
double a[10]={0,1,2,3,4,5,6,7,8,9};
char buffer[360];//程序主体,所涉及的函数已经在静态库和engine. h中声明了
if(j (ep=engOpen(NULL)))//引擎调用函数engOpen
{
fprintf(buffer,“\n Can’t start Matlab engine!\n");
return EXIT_FAILURE;//不成功返回值EXIT_FAILURE
}
A=mxCreateDoubleMatrix(1, 10, mxREAL);//构造1X10的双精度矩阵
mxSetName(A,"A");//矩阵命名,这个名字是在Matlab环境中使用的
memcpy((void *) mxGetPr(A), (void *)a, sizeof(a));//为矩阵的实部赋值,a已定义engPutArray(ep, A) ;//将已定义的变量输人Matlab环境
engEvalString(ep,"Y=3. *sir(A);")//使用Matlab的计算函数求解Y= 3 sin(x)
B=engGetArray(ep, "Y");//从Matlab中获得矩阵值,并赋给结构体指针变量BengCloSe(ep);//关闭引擎,对Matlab的调用就此结束
//下面是对输出矩阵变量的处理
Breal=mxGetPr (B);//获得矩阵实部
Bimag=mxGetPi (B);//获得矩阵虚部
if(Bimag)//计算结果应是实数矩阵,如果虚部不为空,则显示出错
Sprintf(buffer, "Get array wrong!”);//释放内存
mxDestroyArray(A);
mxDestroyArray(B);
return 0;}
2.2 数据通讯技术
2.2.1 在LabWindows/CVI环境下使用TCP/IP协议
LabWindows/CVI的TCP库函数提供丁与平台无关的,面向连接的字节流网络通信协议编程接口.与用户接口库目标文件回调函数处理用户接口事件的方法类似,TCP回调函数可以处理3种TCP消息,即TCP_CONNECT, TCP_ DISCONNECT和TCP_DATA 库函数可以分为服务器函数、客户函数和支持函数.
2.2.2 在LabWindows/CVI环境下使用串口通讯
许多外设都可以采用RS232/RS485的控制模式控制.变频器的控制就是一个典型例子.图2为CVI实现变频器控制的结构示意图.LG公司的iG5系列的变频器有其自带的专用驱动程序DriveView,可对变频器各项参数进行调节和控制.但其操作界面刻板,使用形式单一,通过发挥CVI的优势,可以大大扩展其控制的内容和形式.但由于iG5不是NI公司的产品,必须编制另外的通迅控制程序.LabWindows/CVI实现对变频器通迅控制的技术思路是,远程服务器使用CVI的RS232串口命令,利用变频器说明书提供的LG专用通讯协议实现对变频器实施控制.客户端通过设定控制参数和Ethernet上的网络摄像机,监控其运行.通讯协议可选择用MODB-US-RTU通讯协议和LG公司专用协议.考虑控制的可靠性和可控内容的多样性,选择LG公司的专用通讯方式.协议主要部分为读请求、写请求和应答回复等.
(1)请求读取.总字节为12 B,如表1所示.
(2)请求写入.总字节为12十n*4=44 B(最大值),表1,2中,标记“”是字符,以ENQ为头码,EOT为尾码发送请求。变频器编号是I/048中的设定值,该编号是两位的ASCII-HEX码.CMD是表示命令的选项,读的时候为字符“R”,写的时候为字符“W”.地址表示要从变频器里面去读或写的数据的地址,用字符型表示.其表示从地址开始的连续几个单元,用字符“1”~“8”中的一个表示.SUM是校验码.具体计算公式是将ENQ和SUM之间的所有字符每个转换为十六进制数的形式,然后相加最后取低8位比.如
SUM是将来通信中唯一的校验码,是调试程序中主要的标志符号。CVl实现通迅控制的程序可按以下3类来编制.
(a)与变频器实现通讯的程序,即读请求和写请求程序.
(b)上位机对收回来的数据进行处理,形成整型数据显示在面板上。
(C)面板功能函数.通过CVI丰富的GUI函数调用,设计出如图3所示的客户端响应控制界面,其中包含着变频器的常用控制参数的设定,如频率、转向等.通过面板上的网络功能钮,可以单独或统一地设定每台变频器的参数.
另外,采用CVI 6.0。提供的fictive X技术调用网络摄像机的专门监控软件,可实时观察被控电机的运行现状(图3中变频器驱动的电机运转清晰可见).由此可见,用CVI软件来实现变频器控制,可以更丰富、更灵活扩展变频器的使用形式和内容,充分体现了CVI的测控领域应用的优势。
3结束语
虚拟测控从近距离测控发展到远程测控是必然趋势.虽然LahWindows/CVI对网络通讯提供了很好的库函数支持,但对非我外设的连接、开发和利用方面,仍需用户自主进行设计.本文提供技术和方法在实践中得到了验证.这些技术方法可为拓展LabWindows/CVI在I业虚拟测控领域的应用,增添新的远程控制形式和内容,提供有力的帮助.
京公网安备 11011202001138号
