您的位置:首页 > 热点 >

基于MATLAB的控制系统实时仿真平台设计

硬件在回路平台的实现

平台结构

图1是控制系统硬件在回路仿真平台的结构框图,整个平台由一台PC机、一台工控机和一台DSP及相关通信和数据采集设备组成。

(1)PC机为宿主机,运行Windows系统和MATLAB软件,宿主机在仿真前完成控制算法的设计,在Simulink下进行控制器的软件在回路仿真验证,对控制算法模块和对象模块进行分离并执行自动代码生成,通过以太网完成链接、下载;仿真过程中,宿主机对控制器和对象仿真机进行实时监控、在线调参和数据记录;仿真结束后进行数据的整理分析。

(2)工控机作为目标机,由工业控制计算机及配套的ISA总线结构的数据采集卡组成,运行的是对象数学模型来模拟被控对象的运行过程。为了保证程序执行的实时性,同时更方便、快速地组建仿真系统并满足监控仿真过程的需求,发动机仿真机采用xPC目标环境。

(3)控制器是基于TMS3202812 DSP芯片的开发板,运行控制算法,通过D/A模块向工控机发送控制信号并通过A/D模块从工控机接收对象的状态。

本文主要的研究工作就是围绕着基于DSP和xPC Target的平台的构建和实现展开。

DSP的自动代码生成实现

平台中的F2812 DSP开发板包括16路A/D转换通道,其拥有12位分辨率、80ns转换时间、0~3V量程;在板集成4个12位分辨率、 10V量程的D/A通道。针对该DSP开发板,MATLAB/RTW工具箱提供了包括A/D、D/I、D/O等相关元件在内的驱动程序支持包Target Support Package TC2,能够通过自动代码生成技术完成生成编译和下载。

在此过程中,有两部分关键工作:

S函数的封装

由于2812系列DSP芯片本身没有D/A转换模块,MATLAB/Simulink并未提供2812系列DSP的D/A驱动程序模块。这就要根据DSP开发板生产商提供的C代码的D/A模块驱动程序,利用S-functions进行封装,以便得到通用的、能直接使用的Simulink模块。  

S函数提供了一个C、C++、Ada、Fortran等代码和Simulink模块之间的接口,用来实现对模块的编程。通过S-函数创建的模块具有与Simulink模型库中的模块相同的特征[5]。其基本步骤如下:

(1)编写S函数接口文件,也就是将厂商提供的C形式的D/A驱动代码按照S-Function要求的格式进行改写,相关函数及流程如图2。

(2)接口文件的编译:将编写好的接口文件保存为DSPDA.cpp,使用命令MEX DSPDA.cpp进行编译,生成DSPDA.mexw32文件,如图3所示。

(3)S函数封装:此步骤需将Simulink->User-Defined Functions的S-Function模块与S函数接口文件名进行关联,并在S-Function Parameters中添入D/A模块的3个输入参数(通道选择、电压范围选择和采样时间)。

(4)添加自定义模型库:创建slblocks.m文件,并利用blkStruct.Name和blkStruct.OpenFcn函数完成程序的编写,将S函数模块添加到Simulink模块库。

标签: MATLAB 实时仿真 DSP 201307

相关阅读