MATLAB与控制系统仿真第9章MATLAB的仿真集成环境Simulink引言Simulink是MATLAB里的一个实现动态系统建模、仿真与分析的仿真集成环境软件工具包,是控制系统计算与仿真最先进的高效工具。本章首先对Simulink环境介绍,对功能模块做了说明,并给出一些示例。对如何建立子系统与模块封装、如何编写S函数也做了介绍。主要内容9.1Simulink概述9.2Simulink的基本界面操作9.3Simulink的功能模块及其操作9.3.1Simulink的功能模块9.3.2功能模块的基本操作9.3.3功能模块的连接操作9.4Simulink仿真环境的设置主要内容(续)9.5子系统及其封装技术9.5.1子系统的建立9.5.2子系统的封装9.6用Simulink建立系统模型示例9.7Simulink的高级应用——S—函数的编写本章小结9.1Simulink概述在Simulink帮助文档中,将其概括为ToolforModel-BasedDesign,ToolforSimulation,ToolforAnalysis。Simulink是对动态系统进行建模、仿真和综合分析的图形化软件。它可以处理线性和非线性系统,离散、连续和混合系统。也可以处理单任务和多任务系统,并支持具有多种采样频率的系统。9.1Simulink概述Simulink的图形化仿真方式,使其具有更直观形象、更简单方便与更灵活的优点。比如由Simulink创建的控制系统动态方框图模型,是系统最基本的直觉图形化形式,非常直观,容易理解。并且可以在仿真进行的同时,就看到仿真结果。这样可以大大简化设计流程,减轻设计负担和降低设计成本,提高工作效率。9.1Simulink概述Simulink内置有各种分析工具,如多种仿真算法、系统线性化、寻找平衡点等,都是非常先进而实用的。Simulink仿真的结果能够以变量的形式保存到MATLAB的工作空间,供做进一步的分析、处理和利用。它还可以将MATLAB工作空间中的数据导入到模型中。9.1Simulink概述更为优秀的是,Simulink具有开放的体系结构,允许用户自己开发各种功能的模块,无限制地添加到Simulink中,以满足不同任务的要求。9.2Simulink的基本界面操作Simulink启动命令窗口键入simulink工具栏上选相应图标基本操作在模块库中选择构建系统模型所需的模块直接拖放到所建立的系统模型窗口中按照系统的信号流程将各系统模块正确连接起来9.2Simulink的基本界面操作注:演示例1创建一个正弦信号的仿真模型。9.3Simulink功能模块及操作为便于仿真,Simulink模块库提供了丰富的功能模块。功能模块既可以通过右键点击左侧的子模块库选[Openthe**library](**代表相应的子模块库名)打开,也可以直接双击右侧的子模块库查看。常用模块组(CommonlyUsedBlocks)CommonlyUsedBlocksOut11UnitDelayz1TerminatorSwitchSumSubsystemIn1Out1ScopeSaturationRelationalOperator=ProductMuxLogicalOperatorANDIntegrator1sGroundGain1Discrete-TimeIntegratorKTsz-1DemuxDataTypeConversionConvertConstant1BusSelectorBusCreatorIn11连续系统模块组(Continuous)Continuous-TimeLinearSystemsContinuous-TimeDelaysZero-Pole(s-1)s(s+1)VariableTransportDelayTiVariableTimeDelayToTransportDelayTransferFcn1s+1State-Spacex'=Ax+Buy=Cx+DuIntegrator1sDerivativedu/dt连续系统模块组(Continuous)Zero-Pole(withinitialstates)(s-1)s(s+1)Zero-Pole(withinitialoutputs)(s-1)s(s+1)TransferFcn(withinitialstates)1s+1TransferFcn(withinitialoutputs)1s+1State-Space(withinitialoutputs)x'=Ax+Buy=Cx+DuPIDController(withApproximateDerivative)PIDPIDControllerPID连续系统模块组(Continuous)Integrator:积分器模块,输出对输入时间积分。Derivative:微分器模块,输出对输入时间微分。State-Space:状态空间表达式模块,实现线性状态空间系统。TransferFcn:传递函数模块,实现线性传递函数。Zero-Pole:零极点函数模块,实现用零极点方式指定传递函数。TransportDelay:传输延迟模块,以固定的时间延迟输入。VariableTransportDelay:可变传输延迟模块,以变化的时间量延迟输入。VariableTimeDelay:可变时间延迟模块。非线性模块组(Discontinuities)DiscontinuitiesWrapToZeroSaturationDynamicupuloySaturationRelayRateLimiterDynamicupuloRateLimiterQuantizerHitCrossingDeadZoneDynamicupuloyDeadZoneCoulomb&ViscousFrictionBacklash非线性模块组(Discontinuities)Backlash:磁滞回环模块。Saturation:饱和非线性模块。SaturationDynamic:动态饱和非线性模块。DeadZone:死区非线性模块。DeadZoneDynamic:动态死区非线性模块。Relay:继电模块。Quantizer:量化模块。Coulomb&ViscousFriction:库伦与黏性摩擦非线性模块。RateLimiter:静态限制信号的变化速率。RateLimiterDynamic:动态限制信号的变化速率。HitCrossing:过零检测非线性模块。WraptoZero:环零非线性模块。离散系统模块组(Discrete)Sample&HoldDelaysDiscrete-TimeLinearSystemsZero-OrderHoldWeightedMovingAverageUnitDelayz1TransferFcnRealZeroz-0.75zTransferFcnLeadorLagz-0.75z-0.95TransferFcnFirstOrder0.05zz-0.95TappedDelay4DelaysMemoryIntegerDelay-4ZFirst-OrderHoldDiscrete-TimeIntegratorKTsz-1DiscreteState-Spacey(n)=Cx(n)+Du(n)x(n+1)=Ax(n)+Bu(n)DiscreteFilter11+0.5z-1DiscreteDerivativeK(z-1)TszDiscreteZero-Pole(z-1)z(z-0.5)DiscreteTransferFcn1z+0.5Differencez-1z离散系统模块组(Discrete)IdealizedADCquantizer(settings:12-bitconverterVmin:0,Vmax:5)AD12bitsDiscreteZero-Pole(withinitialstates)(z-1)z(z-0.5)DiscreteZero-Pole(withinitialoutputs)(z-1)z(z-0.5)DiscreteTransferFcn(withinitialstates)1z+0.5DiscreteTransferFcn(withinitialoutputs)1z+0.5离散系统模块组(Discrete)UnitDelay:单位时间延迟,延迟信号一个采样周期。DiscreteTransferFcn:离散系统的传递函数,实现离散传递函数。DiscreteZero-Pole:离散系统的零极点函数,实现离散零极点模型。DiscreteState-Space:离散系统的状态方程,实现离散状态空间系统。First-OrderHold:一阶保持器,实现一阶采样保持器。Zero-OrderHold:零阶保持器,实现零阶保持器。Memory:记忆模块,用于返回上一时刻值。DiscreteFilter:离散滤波器,实现IIR和FIR离散滤波器。数学运算模块组(MathOperations)Vector/MatrixOperationsMathOperationsComplexVectorConversionsWeightedSampleTimeMathu+TsVectorConcatenateUnaryMinus-uTrigonometricFunctionsinSumofElementsSumSubtractSqueezeSqueezeSliderGain1SineWaveFunctiontSignRoundingFunctionfloorReshapeU(:)Real-ImagtoComplexReImProductofElementsProductPolynomialP(u)O(P)=5PermuteDimensionsP:[2,1]MinMaxRunningResettableuRymin(u,y)MinMaxminMatrixConcatenate2MathFunctioneuMagnitude-AngletoComplex|u|uGain1DotProductDivideComplextoReal-ImagReImComplextoMagnitude-Angle|u|uBiasu+0.0AssignmentY0UYAAlgebraicConstraintf(z)zSolvef(z)=0AddAbs|u|数学运算模块组(MathOperations)Gain:增益函数模块,输入乘以一个常数,执行比例运算。SliderGain:可调增益函数模块。一般数学函数,如Add(求和函数)、Substract(减法函数)、Product(乘法函数)、Divide(除法函数)、Abs(绝对值函数)、Sign(符号函数)、TrigonometricFunction(三角函数)、RoundingFunction(取整函数)、Sum(求和函数)等。数学运算模块组(MathOperations)MathFunction:数据函数模块,包括指数函数,对数函数,求平方,开方等函数。AlgebraicConstraint:代数约束模块,强制输入信号为零。ComplextoReal-Imag:复数的实部虚部提取模块,输出复数输入信号的实数和虚数部分。ComplextoMagnitude-Angle:复数变换成幅值幅角的模块,输出复数输入信号的幅值和相位。输入源模块组(Sources)Model&SubsystemInputsSignalGeneratorsUniformRandomNumberStepSineWaveSignalBuilderSignal1SignalGeneratorRepeatingSequenceStairRepeatingSequenceInterpolatedRepeatingSequenceRando