第九章-仿真应用技术_第1页
第九章-仿真应用技术_第2页
第九章-仿真应用技术_第3页
第九章-仿真应用技术_第4页
第九章-仿真应用技术_第5页
已阅读5页,还剩149页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章仿真应用技术实际应用计算机仿真技术时,还有许多问题需要考虑,本章将向读者介绍部分仿真应用技术,包括:仿真语言、快速控制原型、基于RTW的自动代码生成、人工智能和专家系统在仿真技术中的应用、仿真建模方法学,以及仿真实验的计划指定和实施。如果要有效地进行仿真研究,最大限度地避免工作中的盲目性,减少研究费用,缩短研究周期,必须对整个仿真研究工作进行科学而周密的组织与设计。对于从事实际应用的人员来说,仿真应用技术或仿真研究的组织方法是非常必要的知识。组织与设计工作的好坏,直接关系到仿真应用的成效。本章的最后向读者介绍这一方面的基本知识,使读者尤其是初学者重视仿真实验的组织﹑设计和实验工作,了解有关基本知识,并能应用到实际工作中去。考虑到重点突出﹑篇幅限制等原因,对有些问题仅仅提出,而不做深入讨论。显然,在实际应用时,所要遇到的问题是极其复杂的,需要读者在今后的工作中不断探索,不断总结。第九章仿真应用技术9.1仿真语言及其发展9.2快速控制原型9.3MATALB/RTW实时仿真工具箱9.4人工智能与仿真技术9.5数学模型和建模方法学9.6仿真实验的计划指定和实施9.1仿真语言及其发展

9.1.1连续系统的数字仿真在数字计算机上进行仿真研究时,很重要的一个步骤是将研究对象的数学模型转变为能在计算机上实现的仿真模型,并编制仿真程序。仿真程序的一般组成如图3.14所示。传统地编写仿真程序所采用的语言是高级算法语言,如FORTRAN语言,BASIC语言,C语言等。在采用高级语言编写仿真程序时,用户发现,虽然基本语言不难学习,并且便于移植,不受机型限制。但是对一些模型结构复杂﹑模型状态变量和参数多的系统,用户不得不将许多精力和时间花费在模型参数处理﹑仿真算法和程序的实现,以及输出数据的分析等辅助性工作上,而不能将精力集中于对系统本身的研究。因而需要一种面向问题的非顺序的计算机语言。这种语言应该是足够简单,而且易于学习和使用。用户只需写入被仿真系统的模型,定义变量和必要的数据和命令,就可以进行仿真。这使得用户能摆脱程序编写中的许多细节问题,将精力集中于研究所要仿真的问题本身。这样的一种用于仿真研究的专用计算机语言,便是仿真语言。

9.1.1连续系统的数字仿真仿真程序﹑具有一定通用性的仿真程序包和仿真语言是处理不同问题常用的三种仿真工具。表9.1对它们进行了比较。读者可以根据问题的需求,以及软﹑硬件的可能性进行选择使用。

表9.1通用型编程难易程度功能程序灵活性对存储容易的要求程序执行时间仿真程序差困难弱差低短仿真程序包较好较方便较弱较好较低短仿真语言好方便强好较高较长

9.1.2仿真语言的功能

数字仿真语言是一种直接面向仿真问题的专用语言,是进行数字仿真的重要工具。其主要功能表现为以下三点:(1)有一套完整的规定描述模型的符号﹑语句﹑句法及语法,并有检测用该语言所编写的源程序中错误的能力,最后能将文法上正确的源程序翻译成机器可执行码(一般是先翻译成某一种高级语言,比如FORTRAN语言,然后由计算机厂家所提供的编译程序转换成机器代码)。(2)具有设定模型实验的初始条件﹑终止条件,以及控制并实现单次﹑多次或迭代运行的功能。(3)具有对仿真结果的分析与显示功能。

9.1.2仿真语言的功能

由上面所介绍的仿真语言的三种功能可知:使用者使用这种语言不仅能更多地摆脱掉对程序的熟悉与了解,而且由于它具有更强的仿真功能,因此能用来仿真比较复杂的系统,并且对系统进行更全面的实验。9.1.3对仿真语言的主要要求一个好的仿真语言应满足下列要求:(1)被仿真的问题可以以自然的形式,方便地用仿真语言的语句描述。所谓自然的形式,是指与工程技术人员用来描述被仿真系统的数学模型相一致的形式。通常,被仿真系统的数学模型具有微分方程与代数方程组合的形式,或框图的形式,因而要求仿真语言也能以相似的形式描述系统,最好兼有两种方式描述的能力,因为有些系统的模型具有组合的形式。(2)要求仿真语言具有并行性的特点。在被仿真的实际连续系统中,过程是并行发生的,对模拟计算机来说,它是一种并行的计算装置,即对各个变量的运算是同时进行的,因而真实地体现了所仿真的连续系统中的工作状态。但数字计算机是串行计算装置,为了满足闭合回路的要求,一个变量在先前没有规定就不能出现在语句中,因而仿真语言必须有一种自动分选能力,能将规定数字仿真结构的仿真语言的语句排列成正确的计算顺序,从而使计算机按顺序计算,而从仿真语言的程序看来则如并行运算一样。

9.1.3对仿真语言的主要要求(3)仿真语言应备有多种不同的积分方法可供使用者选择。积分算法是数字仿真程序的核心。微分方程的数值解法有许多种;不同的方法具有不同的特点(精度﹑计算速度和对计算机的要求等),适合于不同的应用场合。多种积分算法的存在为满足用户的具体应用要求提供充分的选择余地。(4)仿真语言应包含有预先编制好的输入和输出程序。输入程序可使用户方便地输入问题的模型和参数,并且便于修改模型参数。输出程序使用户可按所研究的问题的需要,选择有关的输出变量与参数,以多种输出方式输出。输出方式包括数据表格,时间响应曲线,相平面轨迹及变量与参数的交叉列表和绘图。输出设备的形式应多样化,包括宽行打印机﹑数字绘图机﹑图像终端等。使用者可以方便地用于准备技术报告的规格化文件。

9.1.3对仿真语言的主要要求(5)为了面向用户,仿真语言应与现有常用的有序编程语言(通常为FORTRAN,C语言等)有兼容性,使仿真语言的语句和有序语言的语句混和,从而有经验的用户可以将有序语言的功能引入到仿真语言中,扩展仿真语言的能力。(6)为了面向用户,要求仿真语言要适应不同水平用户的要求。对不太熟悉的用户,可以使用仿真语言的基本组成部分,基本结构语句(或基本算符)和代数语句,内装的程序库,完成基本的仿真研究。对熟练的或内行的用户,则要求仿真语言具有扩展能力,能将用户规定的函数和程序加入到内装程序库中。(7)要求仿真语言配有宏函数处理器。用户可将他所研究的问题中多次重复使用的部分编写为宏函数,通过宏函数处理器可被主程序反复引用。仿真语言的宏函数不仅是一种方便的速记手段,而且可成为一种表示分系统或特殊运算的直观的﹑有意义的语言要素。

9.1.3对仿真语言的主要要求(8)仿真语言不仅应便于输入和修改系统参数及初始条件,更进一步应能进行多次运行的仿真研究,对多次运行具有逻辑控制﹑函数存储﹑二次运行间的代数运算等能力。这种多次运行研究可用于①模型参数及初始条件的“起始计算”和运行结果的“终结”处理,如求得时间历程采样的函数;②按预先编定的程序或按前次运算结果确定的参数及初始条件进行多次仿真运行,做迭代仿真实验,优化或模型匹配等研究;③保存多次运行的时间历程;④交叉绘制或交叉列表表示参数和初始条件对解的影响;⑤进行随机输入作用下的统计特性计算(蒙特卡罗仿真)。(9)要求具有多重速率的能力,即被仿真的模型可分成两段或多段(相应于被仿真总系统的分系统或暂存部分),以便①不同时间常数的子系统(如快的分系统和慢的分系统)可采用不同的积分方法或积分步长;②不同子系统结构在时间推移过程中的转接。(10)具有面向问题的错误的诊断能力,使仿真研究者能在源程序的级别上很快发现和改正错误。上述要求是作为设计仿真语言的指导原则提出的,并不是所有仿真语言都能满足所有这些要求。

9.1.4仿真语言的一般结构和组织一、仿真语言的一般结构仿真语言在结构上一般包括三个区域:初始区﹑动态区和终止区,如图9.1所示。一般将仿真语言的单次运行称为仿真,同一问题的多次运行称为研究。(1)初始区:初始区包括了所有在一次仿真之前必须进行的输入/输出操作和初始化步骤。那些具有更永久性特点的初始化操作(如指定具体的积分算法)应在进入这一区域之前进行。图9.2说明了初始区的一般结构。初始区在作用上可用三个分区域说明:解释程序﹑初始分区和积分初始分区。

9.1.4仿真语言的一般结构和组织图9.1图9.2

9.1.4仿真语言的一般结构和组织

解释程序是一个标准的系统程序,它完成仿真分析人员和程序之间在运行时间的交互作用。仿真分析人员可通过终端或其它输入装置输入参数和系统初始化的指令,这些指令经解释程序的翻译而在运行时执行。有下述类型的指令:(a)调整仿真中变量的值(如参数或初始条件);(b)中间读出任何仿真中变量的值;(c)对积分算法中可调控制参数,包括自变量的间隔﹑初值和终值及误差控制参数,进行控制;(d)进行简单的算术运算,用以根据前一次的结果计算参数的改变量;(e)对个别的仿真运行进行初始控制和对一组仿真运行(研究)进行终止控制。初始分区是进行初始化计算﹑输入和仿真研究终止逻辑控制的有序编码。积分初始化程序是运行时间所用数值积分系统的一部分。

9.1.4仿真语言的一般结构和组织(2)动态区:动态区是仿真过程中在数字计算机和外界之间起积极的交互作用中的一部分,它表示在使用者规定的自变量的离散值上进行的所有计算和输入/输出操作。自变量的基本间隔用每次经过动态区的穿越来表示,称为仿真通讯间隔。这一间隔只由与外界通讯的准确度要求来决定。计算(积分)间隔可以比通讯间隔短。计算间隔严格按数字计算(特别是积分)的准确度要求来决定。图9.3所示说明了动态区的一般结构,它可用两个分区域描述:输入/输出和积分。

9.1.4仿真语言的一般结构和组织

图9.3

9.1.4仿真语言的一般结构和组织输入/输出分区包括了在基本自变量回路中进行的积分运算以外的作用,其中有那些不属于导数计算部分的﹑与时间有关的代数计算和动态回路,以及程序条件实验所必需的所有数字输入。程序条件实验用于确定:①是否终止仿真并将控制转移到终止区;②是否要计算新的值和重新开始积分。在通信间隔上输出系统变量是在这一分区上控制的。积分分区包括了动态区内对自变量的所有积分运算。积分分区还可以分成不同的数段,以便对几组仿真的状态变量采用不同的积分速率(或算法)。某些段落也可能根本不包含积分,而可能是仿真与积分速率有不同速率的并行同步逻辑部分的程序。包括积分的各段都有与它相关的﹑计算被积分的状态变量导数的子程序,因为每一积分段都有这样一个子程序,故它被称为导数段。

9.1.4仿真语言的一般结构和组织(3)终止区:终止区接受动态区的控制,并将控制作用返回到仿真的入口处。终止区包括用以适当地终止一次单一的仿真所需要的计算和输入/输出作用。此外,制备某些仿真报告的操作,如数据表和绘图输出,也在这一阶段完成。二仿真语言的程序组织仿真语言的程序通常由三部分组成:翻译部分﹑运行部分和输出部分。(1)翻译部分:翻译部分的主要作用是将使用者用仿真语言编写的仿真程序翻译为中介语言或机器语言的子程序,以供和运行部分的有关程序一起编译(如果仿真语言的程序用中介语言写成)﹑连接和加载。翻译部分还完成语句的分选和排序作用﹑对使用者规定的输出指令的解释作用,以及输入数据(初始条件和参数)的处理。

9.1.4仿真语言的一般结构和组织(2)运行部分:运行部分主要包括仿真运行的控制程序﹑各种积分算法的子程序,以及各种仿真语言的内装程序库函数。它们与翻译模块输出的程序一起进行编译﹑连接﹑加载执行。(3)输出部分:输出部分按使用者规定的输出指令要求将仿真运算结果进行处理。它包括处理输出指令,从有关的数据文件中抽取所需数据的子程序,在指定的输出设备上显示仿真结果的相应的子程序。9.2快速控制原型

RCP,RapidControlPrototyping

对一些大型的工程项目,如果完全遵循过去的开发过程,由于开发过程中存在着需求的更改,软件代码甚至代码运行硬件环境的不可靠原因,最终会导致项目周期长、费用高,缺乏必要的可靠性,甚至还可能导致项目以失败告终。这就是工程技术人员所面临的两种应用问题:一是在开发的初期阶段,快速地建立控制对象及控制器模型,并对整个控制系统进行多次的、离线的及在线的试验来验证控制系统软、硬件方案的可行性。这个过程我们称之为快速控制原型;第二个问题就是已设计完的控制器投入生产后,在投放市场前必须对其进行详细的测试。如果按传统的测试方法,用真实的对象或环境进行测试。这样做无论是人员、设备还是资金都需要较大的投入,而且周期长,不能进行极限条件下的测试,试验的可重复性差,所得测试结果可记录性及可分析性都较差。现在普遍采用的方法就是:在产品上市之前,采用真实的控制器,被控对象或者系统运行环境部分采用实际的物体,部分采用实时数字模型来模拟,进行整个系统的仿真测试,这个过程我们称之为硬件在回路仿真(HILS)。9.2快速控制原型也就是说对于进行控制算法研究的工程师,最好的研究手段是有一个方便而又快捷的途径,可以将他们用控制系统设计软件(如MATLAB/Simulink)开发的控制算法在一个实时的硬件平台上实现,以便观察与实际的控制对象相连时,控制算法的性能;而且,如果控制算法不理想,还可以很快地进行反复设计,反复试验直到找到理想的控制方案。要达到这样一个目的,就要求在开发的各个阶段中引入各种试验手段,并有可靠性高的实时软/硬件环境做支持。当产品型控制器生产出来后,在控制对象可能还处于研制阶段,或者控制对象很难得到,控制工程师可以用先进的仿真技术完成对控制器的测试。9.2快速控制原型快速控制原型和硬件在回路仿真技术提供了这两方面应用的统一平台,可以很好的解决上述问题:l)在系统开发阶段,把快速控制原型系统提供的实时系统作为算法及逻辑代码的硬件运行环境。通过系统提供的各种1/0板,在控制算法和控制对象之间搭建一座实时的桥梁;2)当产品型控制器制造完成之后,还可以用平台系统来仿真控制对象或外环境,从而允许对产品型控制器进行全面详细的测试,甚至极限条件也可以进行反复测试,大大节约测试费用缩短测试周期。9.2.1快速原型制造技术快速原型技术首先在制造领域里得到应用,即快速原型制造技术。快速原型制造技术是用离散分层的原理制作产品原型的总称,其原理为:产品三维CAD模型→分层离散→按离散后的平面几何信息逐层加工堆积原材料→生成实体模型。该技术集计算机技术、数字仿真技术、激光加工技术、新型材料技术于一体,依靠CAD软件,在计算机中建立三维实体模型,并将其切分成一系列平面几何信息,以此控制激光束的扫描方向和速度,采用粘结、熔结、聚合或化学反应等手段逐层有选择地加工原材料,从而快速堆积制作出产品实体模型。9.2.1快速原型制造技术快速原型制造技术突破了“毛坯→切削加工→成品”的传统的零件加工模式,开创了不用刀具制作零件的先河,是一种前所未有的薄层迭加的加工方法。快速原型的“快”并不是由于成型过程中机器运转速度快引起的,诚然,快速运行很重要,但根本原因在于,机器运行由零件CAD模型直接驱动和高度柔性所导致的从设计到制造的全过程的快速性。理解和认识快速成形应从这个角度出发,否则会陷入“快速原型不快”的疑问中。快速原型制造技术基本原理如图9.4所示。9.2.1快速原型制造技术图9.4快速原型制造技术基本原理9.2.1快速原型制造技术与传统的切削加工方法相比,快速原型制造技术加工具有以下优点:(1)可迅速制造出自由曲面和更为复杂形态的零件,如零件中的凹槽、凸肩和空心部分等,大大降低了新产品的开发成本和开发周期;(2)属非接触加工,不需要机床切削加工所必需的刀具和夹具,无刀具磨损和切削力影响;(3)无振动、噪声和切削废料;(4)可实现夜间完全自动化生产;(5)加工效率高,能快速制作出产品实体模型及模具;(6)快速原型的材料可选择的种类较多。9.2.2快速控制原型技术

快速控制原型是指:快速地建立控制对象及控制器模型,并对整个控制系统进行多次的、离线的及在线的试验来验证控制系统软、硬件方案的可行性。快速控制原型的概念已使得在实验室开发控制系统发生了革命性的变化,你不需通过烦琐、冗长的代码开发过程便可迅速得到实验结果—在分析、仿真环境中,利用基于方块和流程图的控制工程语言,对指定的对象,方便地进行实时控制、算法验证、参数优化、代码生成……。9.2.2快速控制原型技术要实现快速控制原型,必须有集成良好便于使用的建模、设计、离线仿真、实时开发及测试工具,如图9.5所示。快速控制原型技术关键为:图9.5快速控制原型原型过程

9.2.2快速控制原型技术

建模、设计、仿真环境:在这一环境中,允许快速建模,反复修改设计,进行离线及实时仿真,从而将错误及不当之处消除于设计初期,使设计修改费用减至最小。目前一般都使用Matlab/SimuLink作为建模、设计、仿真环境。

控制算法代码的硬件运行环境:这是一实时控制系统,用快速原型硬件系统提供的各种工/O板,在原型控制算法和控制对象(实际设备)之间搭建起一座实时的桥梁,进行设计方案实施和验证,从而开发出最适合控制对象或环境的控制方案。

代码生成/下载及试验/调试交互环境:RCP的关键就是代码的自动生成和下载,只需鼠标轻轻一点就可以在几秒钟内完成设计的更改。试验/调试提供了在线监测、在线修改、实时分析、参数优化等工作,充分体现其快速性。最终可得到产品型控制器的代码。9.2.2快速控制原型技术使用RCP技术,可以在费用和性能之间进行折衷;还可在最终产品硬件投产之前,仔细研究诸如离散化及采样频率等的影响、算法的性能等问题。通过将快速原型硬件系统与所要控制的实际设备相连,可以反复研究使用不同检测单元及驱动机构时系统的性能特征,从而逐步完成从原型控制器到产品型控制器的顺利转换。快速原型化是系统实时仿真中最普遍采用的设计思想,计算机辅助软件设计和面向对象的设计思想是快速原型化思想的基础,快速原型设计旨在以设计控制系统和控制策略作为整个研究工作的中心,尽可能减少专业涉及面,同时保证研究工作的质量和进度,与传统控制器设计流程相比较,快速原型设计具有如下特点:9.2.2快速控制原型技术

可重复利用:不同的控制目标其系统的设计有所差异,根据这些设计需求形成的控制系统的硬件环境也存在差异。通过构造具有通用接口形式的硬件平台,快速原型设计可以适应不同控制研究的需要,从而大幅削减后续硬件及改型的成本,并极大地加快研制进度。

结构简单:快速原型设计在系统规模上有较大的简化。用高置信度的物理模型、低成本的计算机系统进行解算,依然满足控制实时仿真的各种技术需求。

开发速度快:传统开发过程由于涉及的专业面较宽,不同专业的交流缺乏整体的交互性,导致开发效率低、返工率高、周期长。快速原型设计的最显著特点之一,就是“快”。由于提供良好的交互环境,设计人员和设计平台之间具有良好的沟通性,甚至许多控制参数的调整,都可以在线实时修改。

成本低:由于采用当今主流的计算机系统作为开发平台,配以成熟的软件平台,设计过程中没有大规模的硬件设计,所以整个仿真系统不仅组成简单,而且实现成本较低。9.2.2快速控制原型技术快速控制原型技术的重要性体现在“从概念到硬件”,即从产品的概念、设计、实现、体化过程。快速原型是20世纪80年代后期国际上出现的新技术,它引发了技式和生产效率的变革,是近20年来科技领域的一次重大突破。9.2.3快速控制原型开发原理传统的开发过程基本上是一个串行的过程,由于专业涉及面过宽,一旦问题后影响面较大,并且发现错误的阶段越晚造成的影响越大,因而工作效低。当检测到错误或测试的结果不满足设计要求时,传统开发过程必须重新开始进行设计和实现,从而造成开发周期太长。同时,从工程研究角度看,的开发和硬件环节的设计不仅周期长,投入成本高,而且缺乏灵活的验证手传统的开发过程存在的很多不足:1)在对控制规律的控制特性或控制效果还没有把握的情况下,己经完成硬路的制造,这时,由于还无法确定所设计的方案能在多大程度满足需求,或不能满足需求的情况下,就已经产生了较大的硬件投入;9.2.3快速控制原型开发原理2)手工编制的控制程序容易产生许多错误,造成系统可靠性降低,一旦在测试过程中出障,就很难确定是控制方案不理想还是软件代码有错误;3)即使软件编程不存在问题,如果在测试过程中发现控制方案不理想,需行修改,则新一轮开发工作又将开始。大量的时间又将耗费在软硬件的修改试上。9.2.3快速控制原型开发原理快速控制原型技术,是指在产品开发的初期,将工程师开发的算法下载到计算机硬件平台中,通过实际1/0与被控对象实物连接,用实时仿真机来模拟器与实物相连进行实时仿真,来检测与实物相连时控制算法的性能,并在控制方案不理想的情况下可以进行快速反复设计以找到理想的控制方案;在确定控制方案后,通过代码的自动生成及下载到硬件系统上,形成最终的控制器产品。快速控制原型技术的基本原理如图9.6所示。9.2.3快速控制原型开发原理图9.6快速控制原型技术基本原理9.2.3快速控制原型开发原理控制器产品传统的开发过程(如图9.7)的开发步骤如下:l)根据需求用文字说明的方式提出设计目标;2)根据以往开发经验提出系统结构;3)由硬件人员设计并制造硬件电路;4)由控制工程师设计控制方案,并将控制模型用方程的形式描述出;5)由软件人员采用手工编程的方式实现控制模型;6)由系统工程师或电子技术专家将代码集成到硬件电路中;7)用真实控制对象或测试台进行测试。9.2.3快速控制原型开发原理图9.7传统的开发过程9.2.3快速控制原型开发原理而快速控制原型的整个开发过程也是一个螺旋型的开发过程(如图9.8)。这旋型的设计过程可实现各个阶段之间快速的重复过程,工程师所设计的系统代表了对整个系统的理解,并且这种理解贯穿了整个产品的开发过程,从而了返回到上一阶段的可能性,即使必须返回到上一阶段设计,由于在整个阶用相同的模型和工具,也很容易返回到上一阶段甚至上几个阶段。9.2.3快速控制原型开发原理图9.8快速控制原型开发过程因此,快速控制原型能够有效地缩短产品开发周期,降低开发成本,能设计出高品质的产品,具有“更快、更好、更便宜”的优点。9.2.4RCP系统研究方法和关键技术V形开发模式是针对控制器产品的特点,设计的一套从产品设计到过程的研发方案。V形开发模式分为五个阶段,即功能设计、原型设计、码生成和硬件制作、硬件在回路仿真及标定/测试。如图9.9所示。(1)V形开发模式图9.9V形开发模式9.2.4RCP系统研究方法和关键技术l)在功能设计阶段,在计算机上建立一个被控对象的数学模型并对它真,然后再把控制系统有关部件模型加到仿真中并进行控制器的优化设计与数学仿真等。这一阶段建立控制系统和被控对象模型,对整个设计进真和分析,确定设计的可行性和参数的大致范围。这一阶段的仿真是非实时仿真。2)在原型设计阶段,考虑到以后可能会对控制器进行修改,往往不希望用硬件实现,而用实时仿真机来代替真实的控制器,将控制方案框图自动生成代码并下载到仿真机上,和被控对象模型或实物连接进行实时仿真。该阶段的仿真是实时仿真,仿真过程允许和实际的设备连接在一起,并包括各软件及硬件中断等实时特性。9.2.4RCP系统研究方法和关键技术3)在产品代码生成和硬件制作阶段,将原型设计阶段的代码自动编译生成为标准芯片的代码并自动下载到产品硬件上。将模型转换为产品代码是开发过程中最关键的一步。过去这种转换完全是通过手工编程实现,现代开发方法则不同,产品代码的大部分是自动生成的。对大多数工程师而言,如果能够加快开发速度,损失代码的部分实时运行效率是可以接受的,如:自动生成代码的运行效率不低于手工代码的10%,内存占用量不超过手工代码的10%。4)有了控制系统的初样,并不意味着计算机辅助设计工具(软件/硬件)就没有用了。相反,现在由于控制系统所完成的功能日渐复杂,对其进行全面综合的测试,特别是故障情况和极限条件下测试就显得尤为重要。但如果用实际的控制对象进行测试,很多情况是无法实现的,抑或要付出高昂的代价。但如果用计算机辅助设计工具对控制对象进行实时仿真,就可以进行各种条件下的测试,特别是故障和极限条件下的测试。而这正是传统开发方法所不具备的。9.2.4RCP系统研究方法和关键技术5)在标定/测试阶段,在实际使用环境下对控制器进行测试,并对控制参数行标定。由此,V形开发模式示意图如图9.10所示。图9.10V形开发模式示意图9.2.4RCP系统研究方法和关键技术随着计算机技术的发展,针对传统控制系统设计方式的不足,学者提出了使用先进的计算机软件和硬件组成所谓的控制系统一化开发环境,即从一个控制器的概设计到数学分析和仿真,从实时仿真试验的实现到试验结果的监控和调节都集在一套平台中来完成。目前许多大公司都推出了相应的一体化开发平台,如Mathwork公司的基于Matlab/Simulink的快速控制代码生成、Dspace等。基于Matlab/RTW的一体化快速控制原型开发坏境方案如图9.11所示,其内容包括:(2)一体化开发环境9.2.4RCP系统研究方法和关键技术图9.11基于Matlab的一体化快速控制原型

9.2.4RCP系统研究方法和关键技术l)提供控制操作界面,建立控制模型;2)集成MATLAB/simulink进行仿真建模;3)集成RTW对Simulink所构建的模型进行自动代码生成;4)集成编译器、链接器、调试器等对生产的代码进行交叉编译和调试,从而目标CPU进行控制;5)集成控制界面,用于实现对所给定参数的测试和优化;6)通过硬件调试接口将生成的目标CPU的机器代码下载到硬件平台;7)实时调试运行应用程序等等。9.2.4RCP系统研究方法和关键技术建立一体化开发环境,通过使用软件工具的图形化界面的模型方框图,输入计算公式、经验公式来编制开发程序,再由系统自动将其编译成目标代码的方式可以高效率。在这样的从控制器控制算法的设计及仿真、控制模型的程序代码成皆是在同一个发展环境下完成的控制器设计概念下,可解决传统控制系是由一连串分离的设计阶段所组成,而在每一个设计阶段彼此间缺乏整合在一体化环境下,由于从模型设计到实时测试的一系列过程都是在同环境下完成的,因此,用户只需要关心控制算法的设计和性能,而不用考的实现过程。在本教材的9.3节我们将向读者介绍MATLAB/simulink中的RTW在快速控制原型中的应用方法。其一体化开发模式如图9.11所示。9.2.5硬件在回路仿真当一个新型控制系统设计结束,并已制成产品型控制器,就需要在闭环下对其进行详细测试。但由于种种原因考虑,这样的全物理闭环实验无法进行,如:

实际的被控对象还未生产出来,无法构成闭环系统;

真实环境中测试需要高昂的费用或风险很大等,使闭环测试难以进行;

真实的使用环境难以建立,如在积雪覆盖的路面上进行汽车防抱死装置(ABS)控制器的测试就只能在冬季有雪的天气进行;

有时为了缩短开发周期,甚至希望在控制器运行环境不存在的情况下(如:控制对象与控制器并行开发),对其进行测试。9.2.5硬件在回路仿真解决这些矛盾的最好方法是采用半物理仿真,即硬件在回路仿真(HIL),HIL仿真方法将助您解决这些矛盾。尤其是对于从事大型复杂控制器设计的人员来讲,HIL的仿真试验是非常重要的。现在,许多控制工程师都把HIL仿真作为替代真实环境或设备的一种典型工程方法。在HIL仿真中,实际的控制器和用来代替真实环境或设备的仿真模型一起组成闭环测试系统。在这个闭环测试系统中,那些难以建立数学仿真模型的部件(如液压系统)也可以作为实际物理部件保留在闭环中。这样就可以在实验室环境下完成对控制器部件(ECU)的测试,从而可以大大降低开发费用,缩短开发周期,甚至完成那些在实际全物理仿真都难以做到的测试。利用HIL技术,控制器设计的工程师可以对控制器进行全面综合的测试,特别是故障情况和极限条件下测试就显得尤为重要了。9.2.5硬件在回路仿真

图9.12硬件在回路的半物理仿真试验结构图图9.12表示了一个单回路的HIL的半物理仿真试验。9.2.5硬件在回路仿真硬件在回路仿真的特点一般有:(1)不需要实际的被控对象存在就可以完成电子控制器部件(ECU)的硬件和软件的测试;(2)可以在实验室的条件下完成许多极端环境条件下的电子控制器部件的硬件和软件的测试;(3)完成敏感元件、执行机构、计算机在全系统下的故障,以及研究故障对系统的影响;(4)可以在极端和危险的工作条件下进行控制器的试验和工作测试;(5)具有试验的可重复性;(6)可以在不同的人-机界面下完成对控制器的试验;(7)降低控制器的开发费用和缩短开发时间。9.2.5硬件在回路仿真下面我们给读者介绍一个应用HIL的示例,该例描述了一个用于测试防抱死刹车系统(ABS)的工业型HIL测试台,即汽车的硬件在回路仿真—ABS控制器测试试验台,如下图所示。9.2.5硬件在回路仿真对现代汽车而言,汽车的舒适性、效率及安全性相当依赖于实现动力系控制、防抱死刹车系统、牵引控制等的电控单元的性能。ECU的软件也越来越复杂,以至于在开发的早期就需进行详细测试。如果用真实的汽车对新的ECU进行测试既昂贵又消耗时间,特别是进行一些极限环境下的测试如:积雪覆盖的路面上的小摩擦测试就只能局限于冬季的几个月。而且用真实汽车进行测试存在可重复性差、不能复现同一测试条件等缺点。硬件在回路仿真这种技术允许在测试台上重复进行测试,从而可以比较产品型ECU及原型ECU的各种特性。9.2.5硬件在回路仿真为了在达到期望的准确性的同时保证模型的实时可执行性,Audi公司的HIL测试工作台使用了TESIS(Munich,Germany)开发的ve-DYNA三维汽车动力学模型。由于在闭环控制中液压刹车系统的非线性及快速动态特性使得给其建立模型非常困难,所以在ve-DYNA仿真模型中没有实现刹车液压系统的动力学模型,而是将真实的AudiA8型液压刹车系统和AudiA8Quattro四轮驱动的液压刹车系统置于一测试架上,该测试架与ABS控制器和VEDYNA模型同时相连。为了象真实的汽车一样给ECU提供I/O信号,整个模型的仿真必须在1ms步长内执行完毕(小于ABS控制器的采样时间)。9.3MATALB/RTW实时仿真工具箱MATLAB作为一种功能强大的数学计算软件,具有数值计算、数据可视化功能和易于使用的编程环境,典型的应用包括工程计算、算法开发、建模和仿真、数据分析和可视化应用程序开发等。它还可用于实时系统仿真和产品的快速原形化,这一点是通过特殊应用工具箱,实时工作间(Real-TimeWokrshpo,RTW)来实现的。RTW是Mathwork公司提供的MA丁LAB工具箱之一,是Simulink、Stateflow、DPsBlocksct和通信工具箱的一个补充功能模块,可用于各种类型的实时应用。9.3.1Real-TimeWorkshop简介

9.3.1.1Real-TimeWorkshop基本概念Real-TimeWorkshop是MATLAB中的实时工作间,它的用途是由simulink模型直接生成独立可执行的C或Ada代码。RTW之所以称为“实时”工作间,是因为它生成的是实时结构的代码,能在实时操作系统中运行,适合于模型与外部硬件设备交互的应用,如半实物仿真、机电控制、数据采集分析等。RTW提供了两种实现方式,一种是一般模式,一种是外部模式、一般模式下RTW自动生成模型的实时源程序和实时可执行程序。它可以直接在目标机的实时操作系统上实时运行,但是不提供实时监视和实时修改参数的功能。在外部模式下,RTW不仅完成一般模式下的功能,并可以利用Simulink实时监视目标机上系统的运行情况,对目标机上的参数进行修改,并在主机上对实时系统进行控制。9.3.1.1Real-TimeWorkshop基本概念

为了便于理解,先介绍几个基本的概念。(1)主机与目标机:Real-TimeWorkshop的应用多数是基于主机/目标机结构的。运行MATLAB的机器称为主机,运行Real-TimeWorkshop生成的代码的机器称为目标机。之所以采用主机与目标机结构,原因是多数情况下的目标机是嵌入式系统,不适合运行MATLAB。当然,也可以在同一台机器上产生、运行代码,这时主机和目标机是同一台机器,但我们仍使用主机、目标机的称谓。(2)目标代码、目标环境与目标:RTW生成的代码因在目标机上运行而被称为目标代码,目标代码的运行环境称为目标环境。目标代码,目标环境统称为目标。(3)外部模式:是Simulink的一种运行模式。在这种模式下,模型不在simulink环境中运行,而是以独立可执行代码的形式运行。在外部模型下,使用simulink中的控制面板工具,可以通过网络连接控制模型的启动、停止、数据回传,调整模型运行参数等。9.3.1.1Real-TimeWorkshop基本概念Real-TimeWorkshop生成的代码也有两个显著的特点:(1)适应多种应用。如果目标系统是嵌入式系统,可以用RTW生成ERT(embdeddrealtime)目标代码。这种代码体积小,运行快,占用内存少,且静态分配内存,相应地,它没有参数在线调节和实时数据监视功能。因此,在嵌入式系统开发中的调试很不方便。幸好,RTW还能生成GTR(genericrealtime)目标代码。这种的代码功能齐全,能在非实时操作系统下运行,是最常用的一种代码类型,也是初学者的首选。如果机器的内存紧张,还有一种MTR(mallocrealtime)代码类型可供选择。这种代码类型与GTR很相似,只不过GTR代码是在编译时静态分配内存,MRT代码是运行时动态分配内存。RTW中还有SRT(S-Functionrealtime)代码类型,这种代码遵循S一Function与Simulink的接口规范,能编译成动态链接库,从而作为大模型中的一个模块,这样做有三个好处:加快Simulink仿真的速度;提高模型的重用性;模型以二进制代码形式发布可以保护知识产权。如果目标系统是Tornado、Dos或windows,RTW也能生成相应的目标代码。9.3.1.1Real-TimeWorkshop基本概念(2)适应多种平台。RTW生成的代码是标准C代码,并将平台相关部分与平台无关部分分离。使用相应的编译器,可以使目标代码在Windows,UNIX,VxWorks,DOS等多种操作系统以及x86,DSP,MC68K、ARM等多种硬件平台上运行。9.3.1.2RTW的主要功能和特征

在开始控制原型技术中,RTW起到了关键性的纽带作用。一般的过程项目设计采用Mathworks工具集进行系统设计的过程可能不完全相同,但大部分项目的产品流程都是首先从simulink环境下建模开始,然后在MATLAB下进行仿真分析。当得到较为满意的仿真结果后,用户可将RTW与一个快速原型化目标联合使用。该快速原型化目标与用户的物理系统连接在一起。用户可使用simulink模型作为连接物理目标的接口,完成对系统的测试和观测。生成模型后,用户可使用RTW将模型转化为C、Ada代码、或者其它嵌入式产品的代码,并使用RTW将扩展的程序创建和下载过程生成模型的可执行程序,再将其下载到目标系统中。最后,使用simulink的外部模式,用户可以在模型运行在目标环境下的同时进行实时的监控和调整参数。9.3.1.2RTW的主要功能和特征从功能上讲,RTW具有以下5个基本功能:(l)Simulink代码生成器:能自动的从Simulink模型中产生C和其他不同微处理器的代码。(2)创建过程:可扩展的程序创建过程使用户产生自己的产品级或快速原型化目标。(3)simulink外部模式:外部模式使simulink与运行在实时测试环境下的模型之间或在相同计算机上的另一个进程进行通信成为可能。外部模式使用户将simulink作为前向终端进行实时的参数调整或数据观察。9.3.1.2RTW的主要功能和特征(4)多目标支持:使用RTW捆绑的目标,用户可以针对多种环境创建程序,包括Tornado和DOS环境。通用实时目标和嵌入式实时目标为开发个性化的快速原型环境或产品目标环境提供了框架。除了捆绑的目标外,实时视窗目标或XPC目标使用户可以将任何形式的PC机变成一个快速原型化目标,或者中小容量的产品级目标。(5)快速仿真:使用simulink加速器、S函数目标或快速仿真目标,用户能以平均5-20倍的速度加速仿真过程。9.3.1.2RTW的主要功能和特征为了实现上述功能,RTW具有如下重要特征。(1)基于simulink模型的代码生成器:

可生成不同类型的优化和个性化的代码;

支持Simulink所有的特性,包括Simulink所有数据类型;

所生成的代码与处理器无关;

支持任何系统的单任务或多任务操作系统,同时也支持“裸板”环境;

使用RTW目标语言编译器能够对所生成代码进行个性化;

通过TLC生成S函数代码,可将用户手写的代码嵌入到生成代码中。9.3.1.2RTW的主要功能和特征(2)基于模型的调试支持:

使用simulink外部模式可将数据从目标程序上传到模型框图的显示模块上,进而对模型代码的运行情况进行监视,而不必使用传统的C或Ada调试器来检查代码;

使用simulink的外部模式,用户可通过simulink模型来调节所生成代码。当改变模型中模块参数时,新的参数值下载到所生成代码中并在目标机上运行,对应的目标存储区域也同时被更新。不必使用嵌入式编译器的调试器执行上述操作。9.3.1.2RTW的主要功能和特征(3)与Simulink环境的紧密集成:

代码校验。可从模型中产生代码并生成单机可执行程序,可对所生成代码进行测试,生成可包含执行结果的MAT数据文件;

所生成代码包含了系统/模块的标识符,有助于辩识源模型中的模块;

支持simulink数据对象,可按需要实现信号和模块参数与外部环境的接口。(4)具有加速仿真功能:通过生成优化的可执行代码,RTW提供了几种加速仿真过程的方法。9.3.1.2RTW的主要功能和特征(5)支持多目标环境:

基于RTW可生成多种快速原型化的解决途径,能极大的缩短设计周期,实现重复设计的快速转向;

RTW提供了多个快速原型化目标范例,有助于用户开发自己的目标环境;

从Mathworks公司可得到基于PC硬件的目标环境。这些目标能将快速、高质量和低造价的PC机变为一个快速原型化系统;

支持多种第三方硬件和工具。9.3.1.2RTW的主要功能和特征(6)扩展的程序创建过程:

允许使用任何类型的嵌入式编译器和链接器,使其可与RTW结合使用;

可将手工编写的监管性或支持性的代码简单的链接到所生成的目标程序中。9.3.1.2RTW的主要功能和特征(7)RTW嵌入式代码生成器提供如下功能:

能生成具有个性化,可移植和可读的C代码,直接嵌入到嵌入式产品环境中;

使用内嵌化的S函数并且不使用连续时间状态,所生成代码更为有效;

支持软件在回路中的仿真。用户可生成用于嵌入式应用系统的代码,同时还可返回到simulink环境中进行仿真校验;

提供参数调整和信号监视功能,可以很容易的对实时系统上的代码进行访问。9.3.1.2RTW的主要功能和特征(8)RTW的Ada代码生成器提供如下功能:

能生成个性化、可读的和高效的嵌入式Ada代码;

由于必须采用内嵌化的S函数,因而可生成比其他RTW目标更有效的代码;

参数调整和信号监视功能可以很容易的对实时系统上的生成代码进行访问。9.3.1.3RTW的应用RTW可用于如下应用情况。(1)产品级的嵌入式实时应用领域。RTW能直接从simulink模型中生成具有产品级质量的、用于实时系统的C或Ada代码,通过交叉编译和链接可直接下载到目标处理器中。用户可通过生成S函数的方法,对所生成代码个性化,或通过使用目标语言编译器指定生成代码的个性,这样用户可以将主要编写代码的工作集中在产品的特性上。9.3.1.3RTW的应用(2)快速原型化当作为快速原型化工具使用时,RTW可使嵌入式系统的设计工作得以快速实现,而无须进行烦琐的手工编写代码和调试过程。其典型的快速原型化可用于设计周期中的软/硬件集成和测试阶段,功能包括:在模块图建模环境下以图形化的方式对算法进行概念化;在设计早期阶段对系统的性能进行估价;通过算法设计和原型化之间的快速重复对设计进行完善;可将simulink作为图形前向终端,在运行实时模型的同时调整参数。用户可使用RTW生成可下载的、能在实时操作系统运行的C代码。RTW提供了多种快速原型化目标,用户可以生成自己的快速原型化目标。9.3.1.3RTW的应用(3)实时仿真用户可以为整个系统或指定的子系统生成代码并运行(用于硬件在回路中的仿真)。典型的应用包括训练模拟器、实时校验和原型化测试。(4)生成完善的实时解决途径用户可以以RTW的体系和框架为基础,开发用于快速原型化或嵌入式系统完善的实时解决途径。目前TRW和第三厂商提供了多种完善的实时解决途径,可支持多种类型的控制及数字信号处理应用,其中支持的目标环境包括运行在已有的实时操作系统、DOS或Windows环境下的各类系统总线PC、PCI、ISA、VME和自定义硬件。支持的目标系统处理器包括MotorolaMc680x0、PowerPC、80X86、ARM、DSP等。9.3.1.3RTW的应用(5)知识产权保护(6)快速仿真使用simulink加速器可将速度提高2-8倍,快速仿真目标可将仿真速度提高5一20倍。9.3.2RTW程序创建过程和代码结构

9.3.2.1RTW程序创建过程RTW程序创建过程能在不同的主机环境下生成用于实时应用的程序。该过程使用高级语言编译器中的联编实用程序,来控制所生成原代码的编译和连接过程。RTW使用一个高级的M文件命令控制程序创建过程,具体包含如下4个步骤:(1)分析模型:RTW的程序创建过程首先从对Simulink的模块方框图的分析开始,包括:计算仿真和模块参数;递推信号宽度和采样时间;确定模型中各个模块的执行顺序;计算工作向量的大小。本阶段,RTW首先读取模型文件(model.mdl)并对其进行编译,形成模型的中间描述文件。该中间描述文件已ASCⅡ码的形式进行存储,其文件名为model.rtw,该文件是下一步的输入信息。9.3.2.1RTW程序创建过程(2)目标语言编译器(TLC)生成代码:目标语言编译器(TargetLanguageCompiler)将中间描述文件转换为目标指定代码。它是一种可以将模型描述文件转换为指定目标代码的解释性语言。目标语言编译器执行一个由几个TLC文件组成的TLC程序,该程序指明了如何根据model.rtw文件,从模型中生成所需代码。9.3.2.1RTW程序创建过程(3)生成自定义的联编文件(makefile):建立过程的第三阶段是生成自定义联编文件,即model.mk文件。其作用在于:指导联编程序如何从模型中生成原代码、主程序、库文件或用户提供的模块进行编译和连接。RTW根据系统模板联编文件(SystemTemplateMakefile),即system.tmf生成model.mk,该模板联编文件为特定的目标环境而设计。RTW提供了许多系统模板联编文件,可用于多种目标环境和开发系统。9.3.2.1RTW程序创建过程(4)生成可执行程序创建可执行程序的最后一个阶段是生成可执行程序,在上一阶段生成model.mk文件后,程序创建过程将调用联编实用程序,而该程序对编译器进行调用。为避免对C代码文件进行不必要的重编译,联编使用程序.object文件和c代码文件的从属关系进行时间检查,只对更新的文件进行编译。该段过程是可选的,如果定制的目标系统是嵌入式微处理器或DSP板,可以只生成源代码。然后使用特定的开发环境对代码进行交叉编译并下载到目标板中。9.3.2.1RTW程序创建过程

左图详细地列出基于RTW的快速控制原型基本过程。可以看出,利用RTW实现快速原型仿真法,模型从设计到实现是一个可循环的过程。9.3.2.1RTW程序创建过程首先,利用MATLAB和Simulink生成系统模型simple.mdl,在模型确认后,就可以利用RTW生成对应的C源程序simple.c,并从C源程序生成实时可执行程序simple.o,随后,就可以将实时可执行程序下载到目标机上运行。这时在主机上就可以利用RTW的外部模式进行监视和控制。利用RIW实现快速原型仿真法的过程可以分为几个部分:build过程;调用TLC编译过程;Make过程;如果使用了自定义S函数,还有调用S函数过程。9.3.2.2代码结构1文件分布完整的模型代码分为两部分:固定框架部分和生成部分。前者是由系统提供的,后者是由模型生成的。框架中定义了函数接口,生成的代码中是这些函数的实现。假设所示的模型为simple.mdl,目标为GRT时,生成的文件及作用见表9.1。9.3.2.2代码结构9.3.2.2代码结构固定框架部分包括::(1)主函数文件grt_main.c:定义模型的执行流程(当以VxWokrs为目标平台,主函数文件为rt_main.c,目标为DOS时,主函数文件为drt_main.c)。(2)通信程序模块ext_svr.c等:处理模型与Simulink的通信。(3)数据记录模块rtwlog.c等:将部分仿真输出数据写入mat格式的文件。9.3.2.3实时代码与非实时代码Real-TimeWorkshop生成的代码既可在实时操作系统下运行,也可在非实时操作系统下运行。但在这两种操作系统下运行的代码,虽由同一个模型生成,却是不同的代码。例如,在非实时操作中,生成的代码与主函数文件grt_main.c联编,在实时操作系统VxWorks中,生成的代码与rt_main.c联编。但在两种操作系统下运行的代码结构相同,代码执行顺序也相同,因此一般情况下会得到相同的仿真结果。模型在实时与非实时环境下的运行情况比较见表9.2。9.3.2.3实时代码与非实时代码9.3.2.4单任务与多任务

在嵌入式操作系统中,任务是单线程序列指令形成的一个无限循环,在系统程序中用函数表示:VoidTask(void){while(true){RunApplication-specficcodes;Waitforeventbyeallingasevriceprovidedbythekernel;RunApplication-specificcodes:}}每个任务包含一段固定的代码和数据空间,操作系统通过任务控制块对它的执行、通信、资源等情况进行控制。任务没有自己独立的代码段和堆,只有独立的动态栈。任务中的地址即是真正的物理地址。由于不需要进行地址空间映射以及共享代码段和堆,任务切换时的上下文切换时间大大减少。9.3.2.4单任务与多任务代码段与堆的共享减少了上下文切换时间,却带来了共享代码的可重入性问题。RTW中的任务沿用了上述的任务概念。先来看模型的采样时间与任务的关系。在Simulink中,只有离散的模型才能生成实时代码,即必须设置模型的采样时间。在Simulink中,模块的采样时间不能小于模型的采样时间,并且必须是模型采样时间的整数倍。如果Simulink模型中每个模块的采样时间都等于模型的采样时间,即系统中只有一个采样时间,我们说这种系统是单任务系统。如果Simulink模型中某个模块的采样时间不等于模型的采样时间,即系统中有多个采样时间,我们说这种系统是多任务系统。实时系统与非实时系统中多任务系统的实现方法不同。9.3.2.5实时与非实时的多任务系统实现Real-TimeWokrshop中的多任务系统,用一个整数表示的任务号(tid)来区分不同的任务。tid相同的任务有相同的采样时间,tid越小,表示采样时间越短,任务的优先级越高。优先级高的任务即所谓的快系统,优先级低的任务即所谓的慢系统。RTW中,tdi等于0的任务称为基本任务,其它任务称为子任务。在非实时系统中,多任务用两个嵌套的循环实现:参看教材253页的例子程序。9.3.2.5实时与非实时的多任务系统实现由该例子可以看出,非实时系统中,快慢系统在一个whiel循环中计算各个仿真帧。假设系统有两个采样时间,快系统的帧计算时间是1秒,慢系统的帧计算时间是2秒。在实时系统中,每个任务作为一个线程运行,线程之间用信号量实现同步。实现多任务的代码结构如教材253页的程序:9.3.2.5实时与非实时的多任务系统实现假设系统有两个采样时间,快系统的帧计算时间是1秒,帧长是1秒,慢系统的帧计算时间是2秒,帧长是2秒,则整个系统的最小帧长可为2秒。慢系统的每一帧被分解为计算量相等的两帧,每帧计算时间T’=T’’=l秒,这是由基于优先级的调度策略的实时操作系统实现的。为防止出现重入问题,采样时间不同的两个模块不允许直接连接,中间应加入“单位延迟”或“采样保持”模块。9.3.2.6外部模式外部模式是RTW提供的一种仿真模式,用于实现Simulink模型框图与外部实时程序之间的通信。使用外部模式,可以通过Simulink模型框图对外部模式进行实时监视,即Simulink不仅是图形建模相连和数学仿真环境,还可以成为外部实时程序的图形化前向控制台。外部模式可以实现两个独立的系统(宿主机和目标机)之间的通信。在外部模式下宿主机的Simulink向目标传送请求信息,使目标机接收改变的参数或更新的信号数据,目标机则对请求作出反应。这就实现了在线情况下不需要重新编译目标程序就可以直接调整参数,如图9.15示。外部模式的通信是基于客户/服务器的体系结构,这里Simulink作为客户机,而目标机是服务器。9.3.2.6外部模式

可以说,能使用外部模式进行仿真是RTW的一个特色。外部模式具有以下功能:

实时的修改调整参数。在外部模式下,Simulink在模型中的参数发生改变时自动将其下载到正在执行的目标程序中。该功能可使用户实时的调整参数,而无须对模型进行重新编译。图9.15RTW外部模式的经典配置

9.3.2.6外部模式

对多种类型模块或子系统的输出进行观察和记录。在外部模式下,用户可以直接监视或记录正在执行的目标程序中的信号数据,而无需编写特殊的借口代码。在外部模式下,用户可以定义数据从目标机上传导到宿主机的条件。

外部模式工作的前提是建立Simulink和RTW所生成代码之间的通信途径,该途径通过底层传输层实现,Simulink与RTW所生成的代码都与该传输层无关。底层传输代码与该层传输代码被具有一定功能的独立模块隔离,这些模块的作用是格式化、传输和接收数据包。这种设计方法允许不同的目标使用不同的传输层,如Tornado、GRT目标支持宿主机/目标机的TCP/IP协议通信,而XPC目标同时支持RS232和TCP/IP协议的通信,Real-TimeWindows目标则通过共享内存实现外部模式通信。9.3.3RTW嵌入式代码在VxWorks/Tornado

环境下实现过程

本小节介绍如何应用RTW生成基于VxWorks操作系统的代码,如何对RTW中的相关文件进行配置,如下所示:一、配置模板联编文件在创建程序之前,必须要配置VxWorks模板联编文件tornado.tmf来指定使用VxWorks的具体环境信息,主要修改如下:(1)VxWorks配置为提供VxWorks所需要的信息,必须指定目标及目标机所用CPU的类型。其中目标类型用于为系统指定正确的交叉编译器和链接器,CPU类型则用于定义CPU宏信息。该信息位于具有如下标志的部分:#-------------------------VxWorksConfiguration------------------------------需要编辑修改如下的选项,进行配置:VX_TARGET_TYPE=armCPU_TYPE=ARMARCH4所定义的目标类型和CPU类型,必须和VxWorks中BSP板级支持包所对应的目标类型和CPU类型一致,否则编译将发生错误。9.3.3RTW嵌入式代码在VxWorks/Tornado

环境下实现过程(2)下载配置为在程序创建过程能够执行自动下载功能,必须指定Tornado目标服务器工作所需的目标名和宿主机名。为此需要修改如下的宏:#------MacrosforDownloadingtoTarget---------------TARGET=targetTGTSVR_HOST=lttyTARGET名应与VxWorks目标板的相同名称一致(相应的设置在BSP包中bootconfig.c中),TGTSVR_HOST则要和Tornado里的targetsever名称一致。9.3.3RTW嵌入式代码在VxWorks/Tornado

环境下实现过程(3)指定工具位置为确定程序创建过程中所用到的Tornado工具的位置,还要在环境变量中或模板联编文件中顶替如下的宏,定义一些编译器、目标模板等工具的路径:#----------------ToolLocations---------------------------------WIND_BASE=C:/Tornado2.2forarmWIND_REGISTRY=LTTYWIND_HOST_TYPE=x86-win32以上定义了Tornado开发环境的安装目录,以及宿主机目标名称和计算机类型。#----------Macrosreadbymake_rtw------------------------------MAKECMD=C:/Tornado2.2forarm/host/x86-win32/bin/make该宏则定义了RTW所使用的make编译器的位置,此项选择一定是在Tornado下的make工具路径,其他路径会造成编译失败。#----------TornadotargetcompilerincludesConfiguration------I$(GNUROOT)/lib/gcc-lib/arm-wrs-VxWorks\2.9-010413/include该宏定义了Tornado目标链接器宏的路径。9.3.3RTW嵌入式代码在VxWorks/Tornado

环境下实现过程二、创建程序在生成Simulink模块图,对模板联编文件配置好后,就可以开始创建和初始化创建过程。(1)首先在Solver选项中,在选项中输入以下参数具体如教材256页的图9.16所示:Starttime:0.0;Stoptime:由系统运行时间决定;Solveroptions:设置Type为Fixed-step,并选择ode5(Dormand-Prince)算法,对于纯离散时间模型,应设积分算法为discrete。Fixedstepsize:根据用户需要设定。9.3.3RTW嵌入式代码在VxWorks/Tornado

环境下实现过程(2)在对Real-TimeWorkshop中的选项配置,在SystemTargetfile中点击Browse…按键选择正确的Tornado.tlc,再对正确配置Generatemakefile选项:Templatemakefile——tornado.tmfMakecommand——make_rtw配置完成后如教材257页的图9.17所示。9.3.3RTW嵌入式代码在VxWorks/Tornado

环境下实现过程(3)最后设置TornadoTarget选项卡因为需要使用外部模式对系统进行仿真,所以要选中Externalmode并对MEX-file参数进行配置:‘192.168.12.139’是目标板定义的IP地址;对冗余级别的选项为默认的无信息0(冗余级别用于控制在数据转移过程中显示的细节程度);配置TCP/IP的服务器端口号,为默认值17725,为了避免端口冲突,也可设定在0~65535之间的一个数字,根据目标板情况,选择合适的选项即可。如教材257页的图9.18所示。最终完成了所有参数配置后,点击Apply按键。9.3.3RTW嵌入式代码在VxWorks/Tornado

环境下实现过程三、初始化创建过程单击SimulationParameters对话框的Real-TimeWorkshop选项卡上的Build按键,开始创建程序。所生成的目标文件已扩展名.lo命名(代表loadableobject)。该文件是由创建文件指定的交叉编译器针对目标处理器进行编译的。编译成功后会在Matlab的Commandwindows下显示##SuccessfulcompletionofReal-TimeWorkshopbuildprocedureformodel:xx9.3.3RTW嵌入式代码在VxWorks/Tornado

环境下实现过程四、下载并交互的运行在开发调试阶段一般都选用,手动下载模型映像之后仿真。主要原因是因为控制率的设计需要根据结果作一定的修改;另外VxWorks的参数配置选项也要不断地发生变化,有很多不确定因素,所以在初期一般以手动下载为主,当程序基本确定后,直接编译到VxWorks操作系统中,开机后直接运行。主要包含3个步骤:(1)在宿主机和VxWorks目标机之间建立通信连接。因为RTW需要通过VxWorks的网络功能与目标机通信,所以在这里VxWorks的映像中必须含有网络组件。(2)将目标文件从宿主机转移到VxWorks目标上。所用命令为在宿主机与目标机通过网络建立连接后,在Tornado环境下打开Shell工具,将生成的.lo映像下载到目标机上。(3)运行程序。在映像下载成功后运行->sp(rt_main,模型名称,"-tf50-w","*",0,30,17725)生成的实时代码映像开始在目标机上工作了。9.3.4水下航行器深度控制系统仿真

在完成应用RTW代码自动生成实时代码设置,具体执行过程后,便可以进行真实系统仿真试验。本论文所选择的是某水下航行器的纵向深度控制系统实验。由于实验室条件限制,不能利用一个真实的舵机和深度采集传感器来进行系统控制仿真。所以采用相关的数学模型来代替,结合控制规律一起生成实时代码映像在目标机中运行,调试。在今后条件允许的情况下逐步实现真实系统代替数学模型,半实物仿真,实物仿真。深度控制器传递函数式9.1,这是一个PI控制器;鱼雷深度通道的传递函数式9.2,是一个2阶系统,控制深度规定为10米。

应用Matlab系统建立名称为auv的模型如下图所示

根据前述步骤,把系统模型生成可执行的实时代码映像,需要注意的是在编译过程中的时间会根据模型的复杂程度不同时间可能会比较长,待完成后会在matlabCommandwindow下提示成功完成,另外在编译过程中可能会出现某些链接工具或文件无法找到的错误,这种情况一般是因为Matlab/RTW与Tornado对编译器所在目录定义不同产生的,根据提示信息将所缺失的文件找到并放在指定的目录下就可以了,在完成映像生成后下载并执行sp(rt_main,auv,"-tf50-w","*",0,30,17725)命令,可以在串口终端上显示如下信息:Waitingforstartpacketfromhost.在Simulink模型图上选择Simulsation—〉ContecttoTarget等待连接,待连接完成后单机运行,即可从scope得到实时的系统运行情况,在这时可以在串口超级终端上打印相关信息如下所示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论