EDA/IC设计
基于DCS与MATLAB的车辆传动系统仿真平台数据通信的实现
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数据的调用。
3.3EDPF-NT系统数据输入实现
在前文提到,出于安全性的考虑,EDPF-NT系统数据库的数据只允许读取,不能直接写入。所以必须使用Modbus协议通过COM卡将MATLAB模型运行后的数据送到EDPF-NT系统。在VB中使用ModbusMaster通信控件,可以方便的作为Master向Modbus的Slave(COM卡)发送数据。
在向EDPF-NT系统传输数据时,需要设置好相应的通信参数,包括端口、波特率、响应超时时间、数据位格式(RTU/ASCII)、校验方式、停止位以及和COM卡相关的从站地址和发送数据时COM的物理起始地址。
MATLAB模型每次运行结束后,就会自动将数据通过Modbus网络送到EDPF-NT系统的COM卡,EDPF-NT系统将读取送至COM卡的数据。
4数据通信测试
在软硬件调试完成后,以手动换档为例来测试平台的数据通信是否准确可靠。首先使平台处于运转状态,在EDPF-NT系统开发的传动电控模拟器上进行控制。电控模拟器操作界面如图3所示。
图3电控模拟器操作界面
EDPF-NT系统的控制信号可以迅速地发送给上位机中的传动系统模型,控制模型的运行,同时上位机又将模型运行后得到的数据发回EDPF-NT系统,并在电控模拟器的界面上显示。
测试时,在电控模拟器上进行操作,从一档逐次换到四档。位于上位机中的传动系统模型接收换档控制信号后,按照所给的档位运行,运行后得到的传动系统变速箱输出转速曲线如图4所示。
通过测试可以看到,仿真平台内的数据通信迅速、准确、可靠,能够满足仿真实验的要求。
5结论
本文针对基于国电智深EDPF-NT系统和MATLAB的车辆传动系统仿真平台中不同设备、软件间数据不能共享的问题,提供了比较完善的解决方法,实现了整个平台内的数据通信,运行表明整个仿真平台运行良好,数据通信准确迅速,为车辆传动系统的研究提供了的帮助。
200多个MATLAB经典教程和MATLAB论文请查看:matlab教程
全部0条评论
快来发表一下你的评论吧 !