1引言
目前,分散控制系统(DCS)已广泛用于石油、化工、电力、冶金等工业控制领域。在DCS的实际工程应用中,通常需要根据不同的控制对象设计出具体的控制方案,然后在DCS上通过控制组态的方式进行实现。但是由于实际工程的限制,新设计出的控制策略与算法很难有机会在现场进行测试。因此,有必要设计出被控对象的仿真模型供DCS测试时使用。
近年来,出现了MATLAB这种功能强大并在控制领域被广泛应用的软件,使用它可以很方便地为各种被控对象建立仿真模型。如能将DCS和MATLAB两者相连,由DCS完成控制运算功能,MATLAB提供被控对象的仿真模型。将充分发挥两者的优势,同时也能为科研人员开发新的控制策略和算法给予极大的帮助。
本文以履带车辆传动系统为例,基于国电智深的EDPF-NT系统和MATLAB建立车辆传动系统仿真平台。在此平台上,在EDPF-NT系统中开发车辆传动系统电控模拟器,控制传动系统的运行。使用MATLAB构建传动系统模型,模拟传动系统的运行。该平台可以方便的模拟传动系统的换档过程,为优化换挡策略,提高传动系统的整体性能提供较好的仿真环境。仿真平台的总体结构如图1所示。
图1仿真平台的总体结构
2仿真平台硬件组成
在构建传动系统仿真平台时,首先要解决硬件的设计问题。它主要由EDPF-NT系统的工程师站、DPU卡、COM卡、I/O卡和上位机组成。工程师站的功能是进行组态及设计控制方案,而上位机主要是运行传动系统MATLAB模型和数据通信程序。
3仿真平台数据通信的实现
在进行传动系统仿真平台构建过程中,实现平台内数据快速准确的通信是重点研究的内容,主要解决EDPF-NT系统与MATLAB的数据通信。出于安全性的考虑,EDPF-NT系统的数据库只允许读取而不允许写入,所以EDPF-NT系统与MATLAB模型的数据通信要分三部分实现,首先是在工程师站读取EDPF-NT系统实时数据并发送给上位机,其次是MATLAB模型读取送至上位机的EDPF-NT系统数据,最后是在上位机中将MATLAB模型运行后的数据通过COM卡送入EDPF-NT系统。
3.1EDPF-NT系统数据读取
EDPF-NT系统的数据以特定的格式存储于数据库中,不能直接读写。国电智深为了方便用户对于数据的使用,提供了可以被VC、VB等软件调用的NTClient.dll文件,用户可以通过NTClient.dll提供的函数来读取EDPF-NT系统的实时数据。本文采用VB开发了读取EDPF-NT系统数据,同时利用Winsock控件将读取的数据发送到上位机的程序。此程序分为三部分:
1)声明NTClient.dll提供的函数;
2)读取EDPF-NT系统的数据;
3)发送数据到上位机。
3.2MATLAB对EDPF-NT数据的调用
作为当前最流行的仿真软件,MATLAB在控制系统分析与设计中起着重要作用。但是MATLAB本身不提供底层通信接口,必须使用其它方法实现网络上的数据通信。所以由EDPF-NT系统工程师站送至上位机的数据首先使用VB编写的程序接收,接下来通过OPC技术实现对这些数据的调用。
在不同的程序间传递数据时需要选择合适的通信接口,为此引入工控行业的软件接口标准OPC(OLEforProcessContro1)技术。OPC技术试图按照标准的方法解决不同程序、设备之间的数据交换问题,它采用服务器/客户端模式,只要提供了具有统一OPC接口的服务器,即可按照一致的OPC客户端接口访问服务器,实现数据交换。
MATLAB可以作为ActiveX自动化控制器,通过ActiveX自动化控制器技术,用户可以在MATLAB中,通过编写M文件对ActiveX自动化服务器进行各种控制。利用VB开发使用OPC自动化接口的OPCAxtiveX控件,在OPCAxtiveX控件中添加通信模块,接收EDPF-NT系统的数据,并将这些数据赋给OPCAxtiveX控件的属性值,通过MATLAB获取OPCAxtiveX控件中对应的属性值,就可以实现在OPC技术下MATLAB对EDPF-NT系统数据的调用。
首先是建立OPCAxtiveX控件,并在内部工作变量的初始化中设置网络。其次在OPCAxtiveX程序中添加网络通信代码,完成对EDPF-NT系统工程师站送到上位机的数据进行接收。最后将接收到的数据赋给ActiveX控件属性值,生成OPCAxtiveX控件,并注册。用于数据接收的OPCAxtiveX控件就可以被MATLAB来使用了。
在MATLAB使用一个ActiveX组件前,必须要找到对象的名字,即ProglD,另外还要了解对象用到的方法、属性和事件。利用这些信息,通过ActiveX客户支持就可以在MATLAB中应用这个对象。
利用actxcontrol函数来生成一个ActiveX组件,实现MATLAB和OPC之间的通信。
在图形窗口中生成一个ActiveX组件语法为:
h=actxcontro1(progid[,position[,handle···[,callback{event1eventhander1;···event2eventhandler2;}]]])
用get、set、invoke、propedit、release和delete等函数可以操作OPCAxtiveX控件,最终实现MATLAB对EDPF-NT数据的调用。