新闻中心

EEPW首页>嵌入式系统>设计应用> 基于MATLAB的控制系统实时仿真平台设计

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

——
作者:张晓东 王海泉 王东云 时间:2013-06-26 来源:电子产品世界 收藏

硬件在回路平台的实现

本文引用地址://m.amcfsurvey.com/article/146822.htm

  平台结构

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

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

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

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

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

  DSP的自动代码生成实现

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

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

  S函数的封装

  由于2812系列DSP芯片本身没有D/A转换模块,/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模块库。

pid控制相关文章:pid控制原理


c++相关文章:c++教程


pid控制器相关文章:pid控制器原理


汽车防盗机相关文章:汽车防盗机原理


评论


相关推荐

技术专区

关闭