首页 动态仿真集成环境—Simulink

动态仿真集成环境—Simulink

举报
开通vip

动态仿真集成环境—Simulink la b3 11 .g fk d. m tn 1 5 动态仿真集成环境—Simulink Simulink是MATLAB软件的扩展 它是实现动态系统建模和仿真的一个软件包 它 支持连续 离散及两者混合的线性和非线性系统 它与MATLAB语言的主要区别在于 其与用户交互接口是基于Windows的模型化图形输入 其结果是使得用户可以把更多的 精力投入到系统模型的构建 而非语言的编程上 所谓模型化图形输入是指 SIMULINK 提供了一些按功能分类的基本的系统模块 用户只需要知道这些模块的输入输出及...

动态仿真集成环境—Simulink
la b3 11 .g fk d. m tn 1 5 动态仿真集成环境—Simulink Simulink是MATLAB软件的扩展 它是实现动态系统建模和仿真的一个软件包 它 支持连续 离散及两者混合的线性和非线性系统 它与MATLAB语言的主要区别在于 其与用户交互接口是基于Windows的模型化图形输入 其结果是使得用户可以把更多的 精力投入到系统模型的构建 而非语言的编程上 所谓模型化图形输入是指 SIMULINK 提供了一些按功能分类的基本的系统模块 用户只需要知道这些模块的输入输出及模块 的功能 而不必考察模块内部是如何实现的 通过对这些基本模块的调用 再将它们连 接起来就可以构成所需要的系统模型 以.mdl文件进行存取 进而进行仿真与分析 5.1 控制系统模型构造 1 控制系统 Simulink模型 1 启动 Simulink • 在MATLAB命令窗口中直接键入 simulink或 simulink3 • 通过MATLAB主窗口的快捷按钮来打开 Simulink Library Browser窗口 2 Simulink的模块库介绍 • 连续模块 Continuous continuous.mdl Integrator 输入信号积分 Derivative 输入信号微分 State-Space 线性状态空间系统模型 Transfer-Fcn 线性传递函数模型 Zero-Pole 以零极点表示的传递函数模型 Memory 存储上一时刻的状态值 Transport Delay 输入信号延时一个固定时间再输出 Variable Transport Delay 输入信号延时一个可变时间再输出 • 离散模块 Discrete discrete.mdl Discrete-time Integrator 离散时间积分器 Discrete Filter IIR与 FIR滤波器 Discrete State-Space 离散状态空间系统模型 Discrete Transfer-Fcn 离散传递函数模型 Discrete Zero-Pole 以零极点表示的离散传递函数模型 First-Order Hold 一阶采样和保持器 Zero-Order Hold 零阶采样和保持器 Unit Delay 一个采样周期的延时 • 函数和平台模块 Function&Tables function.mdl Fcn 用自定义的函数 表达式 进行运算 MATLAB Fcn 利用 matlab的现有函数进行运算 S-Function 调用自编的 S函数的程序进行运算 Look-Up Table 建立输入信号的查询表 线性峰值匹配 Look-Up Table(2-D) 建立两个输入信号的查询表 线性峰值匹配 • 数学模块 Math math.mdl Sum 加减运算 Product 乘运算 Dot Product 点乘运算 la b3 11 .g fk d. m tn 2 Gain 比例运算 Math Function 包括指数函数 对数函数 求平方 开根号等常用数学函数 Trigonometric Function 三角函数 包括正弦 余弦 正切等 MinMax 最值运算 Abs 取绝对值 Sign 符号函数 Logical Operator 逻辑运算 Relational Operator 关系运算 Complex to Magnitude-Angle 由复数输入转为幅值和相角输出 Magnitude-Angle to Complex 由幅值和相角输入合成复数输出 Complex to Real-Imag 由复数输入转为实部和虚部输出 Real-Imag to Complex 由实部和虚部输入合成复数输出 • 非线性模块 Nonlinear nonlinear.mdl Saturation 饱和输出 让输出超过某一值时能够饱和 Relay 滞环比较器 限制输出值在某一范围内变化 Switch 开关选择 当第二个输入端大于临界值时 输出由第一个输入端而来 否则 输出由第三个输入端而来 Manual Switch 手动选择开关 • 信号和系统模块 Signal&Systems sigsys.mdl In1 输入端 Out1 输出端 Mux 将多个单一输入转化为一个复合输出 Demux 将一个复合输入转化为多个单一输出 Ground 连接到没有连接到的输入端 Terminator 连接到没有连接到的输出端 SubSystem 建立新的封装 Mask 功能模块 • 接收器模块 Sinks sinks.mdl Scope 示波器 XY Graph 显示二维图形 To Workspace 将输出写入MATLAB的工作空间 To File(.mat) 将输出写入数据文件 • 输入源模块 Sources sources.mdl Constant 常数信号 Clock 时钟信号 From Workspace 来自MATLAB的工作空间 From File(.mat) 来自数据文件 Pulse Generator 脉冲发生器 Repeating Sequence 重复信号 Signal Generator 信号发生器 可以产生正弦 方波 锯齿波及随意波 Sine Wave 正弦波信号 Step 阶跃波信号 3 Simulink简单模型的建立及模型特点 1 简单模型的建立 • 建立模型窗口 la b3 11 .g fk d. m tn 3 • 将功能模块由模块库窗口复制到模型窗口 • 对模块进行连接 从而构成需要的系统模型 例 建立模型 mymod4-5-1.mdl 如图 4-5-1所示 图 4-5-1 控制系统 Simulink模型的建立 模型的特点有 • 在 Simulink里提供了许多如 Scope的接收器模块 这使得用 SIMULNK进行仿真具 有像做实验一般的图形化显示效果 • Simulink的模型具有层次性 通过底层子系统可以构建上层母系统 • Simulink提供了对子系统进行封装的功能 用户可以自定义子系统的图标和设置参 数对话框 4 Simulink功能模块的处理 功能模块的基本操作 包括模块的移动 复制 删除 转向 改变大小 模块命 名 颜色设定 参数设定 属性设定 模块输入输出信号等 模块库中的模块可以直接 用鼠标进行拖曳 选中模块 按住鼠标左键不放 而放到模型窗口中进行处理 在模型 窗口中 选中模块 则其 4个角会出现黑色标记 此时可以对模块进行以下的基本操 作 • 移动 选中模块 按住鼠标左键将其拖曳到所需的位置即可 若要脱离线而移动 可按住 shift键 再进行拖曳 • 复制 选中模块 然后按住鼠标右键进行拖曳即可复制同样的一个功能模块 • 删除 选中模块 按 Delete键即可 若要删除多个模块 可以同时按住 Shift键 再用鼠标选中多个模块 按 Delete键即可 也可以用鼠标选取某区域 再按 Delete键就 可以把该区域中的所有模块和线等全部删除 • 转向 为了能够顺序连接功能模块的输入和输出端 功能模块有时需要转向 在菜 单 Format中选择 Flip Block旋转 180度 选择 Rotate Block顺时针旋转 90度 或者直接 按 Ctrl+F键执行 Flip Block 按 Ctrl+R键执行 Rotate Block • 改变大小 选中模块 对模块出现的 4个黑色标记进行拖曳即可 • 模块命名 先用鼠标在需要更改的名称上单击一下 然后直接更改即可 名称在功 能模块上的位置也可以变换 180度 可以用 Format菜单中的 Flip Name来实现 也可以 直接通过鼠标进行拖曳 Hide Name可以隐藏模块名称 la b3 11 .g fk d. m tn 4 • 颜色设定 Format菜单中的 Foreground Color可以改变模块的前景颜色 Background Color可以改变模块的背景颜色 而模型窗口的颜色可以通过 Screen Color来 改变 • 参数设定 用鼠标双击模块 就可以进入模块的参数设定窗口 从而对模块进行参 数设定 参数设定窗口包含了该模块的基本功能帮助 为获得更详尽的帮助 可以点击 其上的 help按钮 通过对模块的参数设定 就可以获得需要的功能模块 • 属性设定 选中模块 打开 Edit菜单的 Block Properties可以对模块进行属性设定 包括 Description属性 Priority优先级属性 Tag属性 Open function属性 Attributes format string属性 其中 Open function属性是一个很有用的属性 通过它指定一个函数 名 则当该模块被双击之后 Simulink就会调用该函数执行 这种函数在MATLAB中称 为回调函数 • 模块的输入输出信号 模块处理的信号包括标量信号和向量信号 标量信号是一种 单一信号 而向量信号为一种复合信号 是多个信号的集合 它对应着系统中几条连线 的合成 缺省情况下 大多数模块的输出都为标量信号 对于输入信号 模块都具有一 种“智能”的识别功能 能自动进行匹配 某些模块通过对参数的设定 可以使模块输出 向量信号 5 Simulink线的处理 Simulink模型的构建是通过用线将各种功能模块进行连接而构成的 用鼠标可以在功 能模块的输入与输出端之间直接连线 所画的线可以改变粗细 设定标签 也可以把线 折弯 分支 • 改变粗细 线所以有粗细是因为线引出的信号可以是标量信号或向量信号 当选中 Format菜单下的Wide Vector Lines时 线的粗细会根据线所引出的信号是标量还是向量 而改变 如果信号为标量则为细线 若为向量则为粗线 选中 Vector Line Widths则可以 显示出向量引出线的宽度 即向量信号由多少个单一信号合成 • 设定标签 只要在线上双击鼠标 即可输入该线的说明标签 也可以通过选中线 然后打开 Edit菜单下的 Signal Properties进行设定 其中 signal name属性的作用是标明信 号的名称 设置这个名称反映在模型上的直接效果就是与该信号有关的端口相连的所有 直线附近都会出现写有信号名称的标签 • 线的折弯 按住 Shift键 再用鼠标在要折弯的线处单击一下 就会出现圆圈 表 示折点 利用折点就可以改变线的形状 • 线的分支 按住鼠标右键 在需要分支的地方拉出即可以 或者按住 Ctrl键 并在 要建立分支的地方用鼠标拉出即可 2 SIMULINK自定义功能模块 自定义功能模块有两种方法 一种方法是采用 Signal&Systems 模块库中的 Subsystem 功能模块 利用其编辑区设计组合新的功能模块 另一种方法是将现有的多个功能模块 组合起来 形成新的功能模块 对于很大的 SIMULINK模型 通过自定义功能模块可以 简化图形 减少功能模块的个数 有利于模型的分层构建 1 创建自定义功能模块方法 • 方法 1 将 Signal&Systems 模块库中的 Subsystem功能模块复制到打开的模型窗口 中 双击 Subsystem功能模块 进入自定义功能模块窗口 从而可以利用已有的基本功 能模块设计出新的功能模块 • 方法 2 • 在模型窗口中建立所定义功能模块的子模块 用鼠标将这些需要组合的 功能模块框住 然后选择 Edit菜单下的 Create Subsystem即可 例 建立模型 mymod4-5-2.mdl 如图 4-5-2所示 la b3 11 .g fk d. m tn 5 图 4-5-2 创建自定义功能模块 2 自定义功能模块的封装 上面提到的两种方法都只是创建一个功能模块而已 如果要命名该自定义功能模 块 对功能模块进行说明 选定模块外观 设定输入数据窗口 则需要对其进行封装处 理 首先选中 Subsystem功能模块 再打开 Edit菜单中的Mask Subsystem进入 mask的编 辑窗口 可以看出有 3个标签页 • Icon 设定功能模块的外观 • Initialization 设定输入数据窗口 Prompt List • Documentation 设计该功能模块的文字说明 例 建立模型 mymod4-5-3.mdl 如图 4-5-3所示 图 4-5-3自定义功能模块的封装 5.2连续系统数字仿真 构建好一个系统的模型之后 接下来的事情就是运行模型 得出仿真结果 运行一 个仿真的完整过程分成三个步骤 设置仿真参数 启动仿真和仿真结果分析 1 设置仿真参数和选择解法器 设置仿真参数和选择解法器 选择 Simulation菜单下的 Parameters命令 就会弹出一 个仿真参数对话框 它主要用三个页面来管理仿真的参数 如图 4-5-4所示 la b3 11 .g fk d. m tn 6 图 4-5-4设置仿真参数和选择解法器 1 Solver 页 它允许用户设置仿真的开始和结束时间 选择解法器 说明解 法器参数及选择一些输出选项 • 仿真时间 注意这里的时间概念与真实的时间并不一样 只是计算机仿真中对时间 的一种表示 比如 10秒的仿真时间 如果采样步长定为 0.1 则需要执行 100步 若把 步长减小 则采样点数增加 那么实际的执行时间就会增加 一般仿真开始时间设为 0 而结束时间视不同的因素而选择 总的说来 执行一次仿真要耗费的时间依赖于很多因 素 包括模型的复杂程度 解法器及其步长的选择 计算机时钟的速度等等 • 仿真步长模式 用户在 Type后面的第一个下拉选项框中指定仿真的步长选取方 式 可供选择的有 Variable-step 变步长 和 Fixed-step 固定步长 方式 变步长模式 可以在仿真的过程中改变步长 提供误差控制和过零检测 固定步长模式在仿真过程中 提供固定的步长 不提供误差控制和过零检测 用户还可以在第二个下拉选项框中选择 对应模式下仿真所采用的算法 变步长模式解法器有 ode45 ode23 ode113 ode15s ode23s ode23t ode23tb和 discrete • ode45 缺省值 四/五阶龙格 库塔法 适用于大多数连续或离散系统 但不适用 于刚性 stiff 系统 它是单步解法器 也就是 在计算 y(tn)时 它仅需要最近处理时刻 的结果 y(tn-1) 一般来说 面对一个仿真问题最好是首先试试 ode45 • ode23 二/三阶龙格 库塔法 它在误差限要求不高和求解的问题不太难的情况 下 可能会比 ode45更有效 也是一个单步解法器 • ode113 是一种阶数可变的解法器 它在误差容许要求严格的情况下通常比 ode45 有效 ode113是一种多步解法器 也就是在计算当前时刻输出时 它需要以前多个时刻 的解 • ode15s 是一种基于数字微分公式的解法器 NDFs 也是一种多步解法器 适用 于刚性系统 当用户估计要解决的问题是比较困难的 或者不能使用 ode45 或者即使使 用效果也不好 就可以用 ode15s • ode23s 它是一种单步解法器 专门应用于刚性系统 在弱误差允许下的效果好于 ode15s 它能解决某些 ode15s所不能有效解决的 stiff问题 • ode23t 是梯形规则的一种自由插值实现 这种解法器适用于求解适度 stiff的问题 而用户又需要一个无数字振荡的解法器的情况 la b3 11 .g fk d. m tn 7 • ode23tb 是 TR-BDF2的一种实现 TR-BDF2 是具有两个阶段的隐式龙格 库塔 公式 discrtet 当 Simulink检查到模型没有连续状态时使用它 固定步长模式解法器有 ode5 ode4 ode3 ode2 ode1和 discrete • ode5 缺省值 是 ode45的固定步长版本 适用于大多数连续或离散系统 不适用 于刚性系统 • ode4 四阶龙格 库塔法 具有一定的计算精度 • ode3 固定步长的二/三阶龙格 库塔法 • ode2 改进的欧拉法 • ode1 欧拉法 • discrete 是一个实现积分的固定步长解法器 它适合于离散无连续状态的系统 步长参数 对于变步长模式 用户可以设置最大的和推荐的初始步长参数 缺省情 况下 步长自动地确定 它由值 auto表示 • Maximum step size 最大步长参数 它决定了解法器能够使用的最大时间步长 它的缺省值为“仿真时间/50” 即整个仿真过程中至少取 50个取样点 但这样的取法对于 仿真时间较长的系统则可能带来取样点过于稀疏 而使仿真结果失真 一般建议对于仿 真时间不超过 15s的采用默认值即可 对于超过 15s的每秒至少保证 5个采样点 对于超 过 100s的 每秒至少保证 3个采样点 • Initial step size 初始步长参数 一般建议使用“auto”默认值即可 • 仿真精度的定义 对于变步长模式 • Relative tolerance 相对误差 它是指误差相对于状态的值 是一个百分比 缺省 值为 1e-3 表示状态的计算值要精确到 0.1% • Absolute tolerance 绝对误差 表示误差值的门限 或者是说在状态值为零的情 况下 可以接受的误差 如果它被设成了 auto 那么 simulink为每一个状态设置初始绝 对误差为 1e-6 Mode 固定步长模式选择 • Multitasking 选择这种模式时 当 simulink检测到模块间非法的采样速率转换 它 会给出错误提示 所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直 接连接 在实时多任务系统中 如果任务之间存在非法采样速率转换 那么就有可能出 现一个模块的输出在另一个模块需要时却无法利用的情况 通过检查这种转换 Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型 使用速率转换模 块可以减少模型中的非法速率转换 Simulink提供了两个这样的模块 unit delay模块和 zero-order hold模块 对于从慢速率到快速率的非法转换 可以在慢输出端口和快输入端 口插入一个单位延时 unit delay模块 而对于快速率到慢速率的转换 则可以插入一个零 阶采样保持器 zero-order hold • Singletasking 这种模式不检查模块间的速率转换 它在建立单任务系统模型时非 常有用 在这种系统就不存在任务同步问题 • Auto 这种模式 simulink会根据模型中模块的采样速率是否一致 自动决定切换 到 multitasking和 singletasking 输出选项 • Refine output 这个选项可以理解成精细输出 其意义是在仿真输出太稀松时 simulink会产生额外的精细输出 这一点就像插值处理一样 用户可以在 refine factor设 置仿真时间步间插入的输出点数 产生更光滑的输出曲线 改变精细因子比减小仿真步 长更有效 精细输出只能在变步长模式中才能使用 并且在 ode45效果最好 la b3 11 .g fk d. m tn 8 • Produce additional output 它允许用户直接指定产生输出的时间点 一旦选择了该 项 则在它的右边出现一个 output times编辑框 在这里用户指定额外的仿真输出点 它 既可以是一个时间向量 也可以是表达式 与精细因子相比 这个选项会改变仿真的步 长 • Produce specified output only 它的意思是让 simulink只在指定的时间点上产生输 出 为此解法器要调整仿真步长以使之和指定的时间点重合 这个选项在比较不同的仿 真时可以确保它们在相同的时间输出 2 Workspace I/O页 作用是管理模型从 MATLAB工作空间的输入和对它的 输出 此页主要用来设置 SIMULINK与MATLAB工作空间交换数值的有关选项 • Load from workspace 选中前面的复选框即可从MATLAB工作空间获取时间和输 入变量 一般时间变量定义为 t 输入变量定义为 u Initial state用来定义从MATLAB工 作空间获得的状态初始值的变量名 • Save to workspace 用来设置存往MATLAB工作空间的变量类型和变量名 选中变 量类型前的复选框使相应的变量有效 一般存往工作空间的变量包括输出时间向量 Time 状态向量 States 和输出变量 Output Final state用来定义将系统稳态值 存往工作空间所使用的变量名 • Save option 用来设置存往工作空间的有关选项 Limit rows to last用来设定 SIMULINK仿真结果最终可存往MATLAB工作空间的变量的规模 对于向量而言即其维 数 对于矩阵而言即其秩 Decimation设定了一个亚采样因子 它的缺省值为 1 也就是 对每一个仿真时间点产生值都保存 而若为 2 则是每隔一个仿真时刻才保存一个值 Format用来说明返回数据的格式 包括矩阵 matrix 结构 struct及带时间的结构 struct with time 3 Diagnostics页 允许用户选择 Simulink在仿真中显示的警告信息的等级 此页分成两个部分 仿真选项和配置选项 配置选项下的列表框主要列举了一些常 见的事件类型 以及当 SIMULINK检查到这些事件时给予的处理 仿真选项 options主要 包括是否进行一致性检验 是否禁用过零检测 是否禁止复用缓存 是否进行不同版本 的 SIMULINK的检验等几项 除了上述 3个主要的页外 仿真参数设置窗口还包括 real-time workshop页 主要用 于与 C语言编辑器的交换 通过它可以直接从 SIMULINK模型生成代码并且自动建立可 以在不同环境下运行的程序 这些环境包括实时系统和单机仿真 2 启动仿真 设置仿真参数和选择解法器之后 就可以启动仿真而运行 选择 Simulink菜单下的 start选项来启动仿真 如果模型中有些参数没有定义 则会 出现错误信息提示框 如果一切设置无误 则开始仿真运行 除了直接在 SIMULINK环境下启动仿真外 还可以在MATLAB命令窗口中通过函 数进行 格式如下 [t,x,y]=sim(‘模型文件名’,[to tf],simset(‘参数 1’,参数值 1,‘参数 2’,参数值 2, …)) 其中 to为仿真起始时间 tf为仿真终止时间 [t,x,y]为返回值 t为返回的时间向量 值 x为返回的状态值 y为返回的输出向量值 simset定义了仿真参数 包括以下一些 主要参数 AbsTol 默认值为 1e-6设定绝对误差范围 Decimation 默认值为 1 决定隔多少个点返回状态和输出值 Solver 解法器的选择 MaxRows 默认值为 0 表示不限制 若为大于零的值 则表示限制输 出和状态的 规模 使其最大行数等于该数值 la b3 11 .g fk d. m tn 9 InitialState 一个向量值 用于设定初始状态 FixedStep 用一个正数表示步阶的大小 仅用于固定步长模式 MaxStep 默认值为 auto 用于变步长模式 表示最大的步阶大小 如果知道模型文件名称 可以用以下命令得到该模型的仿真参数 simget(‘模型文件 名’ 5.3 Simulink的扩展工具—S函数 Simulink为用户提供了许多内置的基本库模块 通过这些模块进行连接而构成系统的 模型 对于那些经常使用的模块进行组合并封装可以构建出重复使用的新模块 但它依 然是基于 Simulink原来提供的内置模块 而 Simulink s-function是一种强大的对模块库进 行扩展的新工具 1 S-function的概念 S-function是一个动态系统的计算机语言描述 在MATLAB里 用户可以选择用 m 文件编写 也可以用 c或 mex文件编写 在这里只介绍如何用 m文件编写 s-function S-function提供了扩展 Simulink模块库的有力工具 它采用一种特定的调用语法 使 函数和 Simulink解法器进行交互 S-function最广泛的用途是定制用户自己的 Simulink模块 它的形式十分通用 能够 支持连续系统 离散系统和混合系统 2 建立 m文件 S-function 1 使用模板文件 sfuntmp1. m • 该模板文件位于MATLAB根目录下 toolbox/simulink/blocks目录下 • 模板文件里 s-function的结构十分简单 它只为不同的 flag的值指定要相应调用的 m文件子函数 比如当 flag=3时 即模块处于计算输出这个仿真阶段时 相应调用的子 函数为 sys=mdloutputs(t,x,u) • 模板文件使用 switch语句来完成这种指定 当然这种结构并不唯一 用户也可以使 用 if语句来完成同样的功能 而且在实际运用时 可以根据实际需要来去掉某些值 因 为并不是每个模块都需要经过所有的子函数调用 • 模板文件只是 Simulink为方便用户而提供的一种参考格式 并不是编写 s-function 的语法要求 用户完全可以改变子函数的名称 或者直接把代码写在主函数里 但使用 模板文件的好处是 比较方便 而且条理清晰 •使用模板编写 s-function 用户只需把 s-函数名换成期望的函数名称 如果需要额外 的输入参量 还需在输入参数列表的后面增加这些参数 因为前面的 4个参数是 simulink 调用 s-function时自动传入的 对于输出参数 最好不做修改 接下去的工作就是根据所 编 s-function要完成的任务 用相应的代码去替代模板里各个子函数的代码即可 • Simulink在每个仿真阶段都会对 s-function进行调用 在调用时 Simulink会根据所 处的仿真阶段为 flag传入不同的值 而且还会为 sys这个返回参数指定不同的角色 也就 是说尽管是相同的 sys变量 但在不同的仿真阶段其意义却不相同 这种变化由 simulink 自动完成 • m文件 s-function可用的子函数说明如下 mdlInitializeSizes 定义 s-function 模块的基本特性 包括采样时间 连续或者离散状 态的初始条件和 sizes数组 mdlDerivatives 计算连续状态变量的微分方程 mdlUpdate 更新离散状态 采样时间和主时间步的要求 mdlOutputs 计算 s-function的输出 la b3 11 .g fk d. m tn 10 mdlGetTimeOfNextVarHit 计算下一个采样点的绝对时间 这个方法仅仅是在用户在 mdlInitializeSizes 里说明了一个可变的离散采样时间 mdlTerminate 实现仿真任务必须的结束 • 概括说来 建立 s-function可以分成两个分离的任务 a) 初始化模块特性包括输入输出信号的宽度 离散连续状态的初始条件和采样时 间 b) 将算法放到合适的 s-function子函数中去 2 定义 s-function的初始信息 • 为了让 Simulink识别出一个 m文件 s-function 用户必须在 s-函数里提供有关 s-函 数的说明信息 包括采样时间 连续或者离散状态个数等初始条件 这一部分主要是在 mdlInitializeSizes子函数里完成 • Sizes数组是 s-function函数信息的载体 它内部的字段意义为 NumContStates 连续状态的个数 状态向量连续部分的宽度 NumDiscStates 离散状态的个数 状态向量离散部分的宽度 NumOutputs 输出变量的个数 输出向量的宽度 NumInputs 输入变量的个数 输入向量的宽度 DirFeedthrough 有无直接馈入 NumSampleTimes 采样时间的个数 • 如果字段代表的向量宽度为动态可变 则可以将它们赋值为 1 • 注意 DirFeedthrough是一个布尔变量 它的取值只有 0和 1两种 0表示没有直接 馈入 此时用户在编写 mdlOutputs子函数时就要确保子函数的代码里不出现输入变量 u 1表示有直接馈入 • NumSampleTimes表示采样时间的个数 也就是 ts变量的行数 与用户对 ts的定义 有关 • 需要指出的是 由于 s-function会忽略端口 所以当有多个输入变量或多个输出变 量时 必须用 mux模块或 demux模块将多个单一输入合成一个复合输入向量或将一个复 合输出向量分解为多个单一输出 3 输入和输出参量说明 • S-function默认的 4个输入参数为 t x u和 flag 它们的次序不能变动 代表的意 义分别为 t 代表当前的仿真时间 这个输入参数通常用于决定下一个采样时刻 或者在多采 样速率系统中 用来区分不同的采样时刻点 并据此进行不同的处理 x 表示状态向量 这个参数是必须的 甚至在系统中不存在状态时也是如此 它具 有很灵活的运用 u 表示输入向量 flag 是一个控制在每一个仿真阶段调用哪一个子函数的参数 由 Simulink 在调用时 自动取值 • S-function默认的 4个返回参数为 sys x0 str和 ts 它们的次序不能变动 代表的 意义分别为 sys 是一个通用的返回参数 它所返回值的意义取决于 flag的值 x0 是初始的状态值 没有状态时是一个空矩阵[] 这个返回参数只在 flag值为 0 时才有效 其他时候都会被忽略 str 这个参数没有什么意义 是 MathWorks 公司为将来的应用保留的 m 文件 s- function必须把它设为空矩阵 ts 是一个 m 2的矩阵 它的两列分别表示采样时间间隔和偏移
本文档为【动态仿真集成环境—Simulink】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_106903
暂无简介~
格式:pdf
大小:185KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2010-08-13
浏览量:21