ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Simulink新手入门:搞懂运行逻辑,从零搭建第一个模型

Simulink新手入门:搞懂运行逻辑,从零搭建第一个模型 打开MATLAB在命令行敲个simulink黑框框里弹出一个库浏览器里面几百个模块每个都画着奇奇怪怪的方块和三角形。旁边一个空白的模型窗口等你在里面“画电路图”。不少纯新手当场就懵了这东西到底怎么用我该先拖哪个方块我做Simulink也有好些年头带过不少从零起步的同事。发现大多数人卡住不是卡在操作上而是卡在“没想明白这东西的运行逻辑”。所以这篇就专门写给纯新手不讲高深理论先用最直白的方式把Simulink的运行逻辑盘清楚再带你把第一个模型跑起来最后把新手最容易翻车的几个地方一个个点破。整篇读下来大概十五分钟但能帮你省下自己瞎折腾的几周时间。1. 动手之前先把Simulink的“运行逻辑”盘明白1.1 模型不是电路图是“水流线”很多新手第一次打开Simulink会下意识觉得这是一个画电路图或者画信号流图的工具。实际上它的本质更接近一条“水流线”模块是工作站每个模块接收输入信号做一次处理产生输出信号信号连线是水管数据从源模块出发沿着连线流向目标模块整个模型是一个数据流的流水线信号从左往右“流”过去。举个最直白的例子一个正弦波形模块Sine Wave接到一个放大模块Gain再接一个示波器Scope。运行起来之后正弦波模块每秒吐出一个随时间变化的数据增益模块把这个数据乘以2示波器把这个数据画成曲线。这就是一整条“水流线”。理解了这个类比你就能理解最关键的一点连线是有方向的信号只能从输出端口流到输入端口反着接就会报错。在Simulink的模块上你注意看端口图标——输出端口通常是一个三角形箭头输入端口通常是一个小圆点o。连线的时候一定要从箭头拖到圆点方向反了、或者把输出接到输出软件会直接画出红色虚线并拒绝运行。1.2 界面第一眼模型编辑器、库浏览器、诊断区Simulink的界面新手只需要分清楚三个区域就够了。模型编辑器你说画的“图纸”所有模块放在这个白色区域。工程里经常叫它“画布”。连线、拖模块、双击打开参数都在这里进行。库浏览器Library Browser左边一列是模块库分类比如Sources信号源、Sinks信号仪表/输出、Math Operations数学运算、Continuous连续系统、Discrete离散系统等等。你要用的所有模块都在这个浏览器里找。诊断区/诊断面板运行出错时这里是红色错误信息的集中地。新手报错时第一反应应该是看这里Simulink会把出错的模块路径、错误原因和警告都列出来。很多新手看到报错慌了神把模型翻了个底朝天也不知道问题在哪其实错误面板早就把问题“点名”了。我建议你这样安排模型窗口的布局模型编辑器放在最大区域库浏览器悬停成侧边栏诊断面板保持常驻。千万别用浏览器搜索时盖住了画布来回拖窗口很影响效率。另一个纯新手必记的基础操作Ctrl D 是“更新模型”Ctrl R 是“运行模型”。这个以后会经常用。更新模型会在不运行的前提下帮你在后台做一次类型检查、尺寸检查和连线检查——这是你调试的第一道防线。1.3 求解器是什么为什么我看到的曲线是光滑的新手拖出几个模块点运行示波器里冒出一条平滑曲线的时候很少有人会去想Simulink是怎么把“离散的仿真步”变成“连续的曲线”的这里需要讲一下“求解器”Solver的概念但我不打算往深里砸数学。你可以把Simulink计算模型的过程理解成每隔一小步计算一次数据然后把计算出的点连成线。这个“一小步”有多小由求解器决定。Simulink默认用的是变步长求解器ode45意思是它能自适应地调整步长当数据变化快时就加密计算点变化慢时就放大步长省时间。所以你看到的曲线往往是光滑的因为计算点数以千计连起来当然平滑。那新手需要掌握什么程度两点模型窗口顶部的“仿真时间”不是“现实世界的时间”而是模型里的逻辑时间。默认是10秒意思是模拟从0秒算到10秒。如果你的效果在10秒之后才体现出来曲线当然一片空白或看不出变化。大部分新手用系统的默认求解器就行不需要碰配置。等你自己建的模型里出现“仿真慢得不可接受”或“结果不收敛”时再回头研究ode15s、ode23t这些刚性求解器也不迟。一句话总结Simulink运行逻辑的核心是“数据流”所有复杂仿真说到底都是数据从源模块一路流动、变换、再到输出的过程。搞懂这一层你已经超过一半的纯新手了。2. 第一口试吃从零搭一个会动的模型2.1 搭一个“正弦波→增益→示波器”的Hello World直接上实操。照着下面逐步做十几分钟就能跑通第一个模型。第一步建空白模型。在MATLAB窗口点击“Simulink”图标或者在命令行输入simulink然后在弹出的页面里选“Blank Model”空白模型。你会看到一个白色画布。第二步找水源信号源。打开库浏览器快捷键CtrlShiftL在左侧搜索框里输入Sine Wave找到之后直接拖到画布上。这是我们的“水源”不断吐出一个正弦信号。第三步接一个“放大器”。继续搜索Gain增益模块拖到画布放在Sine Wave右边。再搜索Scope示波器放到Gain右边。第四步连线。把鼠标移到Sine Wave右侧的输出端口三角形光标会变成十字按住左键往右拖连到Gain左侧的输入端口圆圈。松开鼠标一条线就出来了。同样操作再把Gain右侧连到Scope左侧。第五步设置参数别用默认值糊弄。新手最常犯的一个毛病是模块拖出来了连好线了参数完全没动然后运行看完效果就以为结束了。Simulink里几乎每个模块都有参数双击模块就能打开参数对话框而这个参数的默认值通常不是你想要的值。双击Gain模块把增益Gain从默认的1改成2。双击Sine Wave模块看一眼参数——默认幅值是1默认频率是1注意单位是弧度/秒不是Hz。这些默认值在我们的Demo里正好合适但我建议你点开看一遍知道参数在哪以后用起来才有掌控感。第六步运行。点工具栏绿色“Run”或按CtrlR。等仿真结束后双击Scope里面会显示一条正弦曲线。如果曲线没出来或看不清点示波器工具栏上的“Auto Scale”自动缩放图标一个带四个方向箭头的方框曲线就会自动适配到可视范围。到这里你的第一个Simulink模型就跑通了。这正是热词里很多人搜的“simulink使用教程”第一步源、处理、输出三者连成一线。2.2 点一下CtrlD很多问题能提前暴露纯新手在连完线之后常常因为“输入数据类型不对”“矩阵维度不一致”这类问题被报错卡住。其实在点Run之前先按CtrlD做一次模型更新是能救命的。CtrlD会触发一次完整的“模型结构检查”检查每一个模块的输入输出是否匹配、信号维度是否一致、采样时间是否冲突、有没有断线或悬空端口。如果有问题它会直接报出错误和警告还会在画布上把出错模块周围用红色虚线标出来。我见过不少新手把所有模块拖进画布连好线立刻按Run崩溃在报错弹窗里。而老手的工作习惯是连一段更新一段CtrlD是随手就按的把问题联调前就消灭掉。举个例子你把一个Matrix Multiply矩阵乘法模块接到一个Constant常数模块上Constant默认输出的是标量1×1而矩阵乘法默认期望两个二维矩阵输入。如果直接RunSimulink会报“Dimensions mismatch”错误。但如果你先按一次CtrlD它会明确告诉你维度不匹配并且给出去哪个模块调整参数。你双击Constant把Constant value改成[1 2; 3 4]这种矩阵形式问题立刻解决。所以请把这个快捷键练成本能反应。这是新手提高调试效率最重要的一小步。2.3 用“积分器链”搭一个二阶系统这可是看家本领正弦波→增益→示波器太简单了真正让Simulink封神的能力是把微分方程变成框图。这是Simulink从航空航天到汽车电子都在用的核心套路也是最值得新手花时间吃透的东西。我们来看一个物理系统的例子弹簧-质量-阻尼系统运动方程为mx bx kx u其中x是位移u是外部力m是质量b是阻尼系数k是弹簧刚度。如果你让一个新手直接搭这个模型他通常一脸茫然但如果你教他用“积分器链”的思路一切就好办了。核心思想是最高阶导数一路积分下去每积一次阶数降一阶直到得到我们要的位移x。具体操作如下第一步两个Integrator积分器模块串联。在库浏览器里搜索Integrator拖两个放在画布上一个接一个。第一个积分器的输入是x输出是x第二个积分器的输入是x输出是x。第二步搭反馈。运动方程改写为 x u - bx - kx。这意味着第一个积分器的输入应当由三路信号相加得到u外部力、−bx阻尼反馈、−kx弹簧反馈。你需要一个Sum模块求和模块默认有两个加号双击可以修改加减号个数把这三路信号相加。第三步系数增益。从x那里引一条线出来先乘以b再取负号接到Sum的负输入端。从x那里引一条线乘以k取负号接Sum的负输入端。u用Step阶跃信号模块提供。第四步配置参数。假设m1b2k5把对应Gain模块的增益分别设为2和5。阶跃信号模块Step默认从1秒时从0跳到1——这正好可以当作一个突然施加的力。Scope接在x上观察位移。运行1秒或几秒后Scope里会出现一条从0上升、然后有小幅振荡最终稳定的曲线——这就是弹簧-质量-阻尼系统在阶跃力作用下的响应。这整套方法在工程界有个很流行的名字——“积分器链”法。它的逻辑非常优雅不管多复杂的微分方程只要用积分器把导数关系表达出来再配合增益和求和就能在Simulink里搭出系统模型。四旋翼的滑模控制、电机的传递函数仿真、车辆的动力学模型底层框架全是这个套路。你现在把积分器链吃透了将来看到控制系统框图才不会慌。3. 常用模块的“信号思维”别背名目想变化3.1 五大类模块一张表帮你梳理Simulink库里模块有成百上千个但新手完全不需要全部知道。你只需要记住“信号从源到汇中间经历哪些变化”这条主线。我把新手最常用、最值得先记住的模块按功能分成五大类列成一张速查表类别代表模块作用新手使用要点信号源 SourcesSine Wave、Constant、Step、Signal Generator产生原始信号注意频率单位通常是rad/s常数模块常用来当增益或偏移信号汇 SinksScope、Display、To Workspace、Out1观察或导出信号To Workspace可以把数据存到MATLAB工作区方便后续分析数学运算 Math OperationsGain、Sum、Product、Abs、Relational Operator对信号做加减乘除、比较、取绝对值双击修改加减号数量比较运算输出的是0/1布尔值连续/离散系统 Continuous / DiscreteIntegrator、Transfer Fcn、Unit Delay、Discrete-Time Integrator建模动态系统Transfer Fcn填分子分母系数Unit Delay是离散系统的“延迟一拍”信号路由 Signal RoutingMux、Bus Creator、Selector、Goto/From把多条信号组合、拆分、跳转Mux适合显示多条曲线Bus适合传递结构化数据这个表不是让你背的是让你建立一个“想找模块时的导航”你问自己“我现在想让信号发生什么变化”然后到对应类别里搜关键词。比如你想让信号超过某个阈值时输出1、否则输出0那你要找的是Relational Operator它就在Math Operations里。这种“按需求找模块”的思维比死记硬背模块名高效得多。3.2 让数据“活”起来的组合技巧很多新手把模块拖出来、连上线、跑完总感觉不够“实”。问题是他们只做了信号流的线性变换正弦→放大→显示没体会到Simulink真正强大的地方在于条件判断、事件触发、数据流动的多样性。举一个我常用的小例子做一个“超阈值报警”逻辑。用Sine Wave产生信号接到一个Relational Operator模块比较“信号是否大于0.5”。比较结果是一个布尔值0或1。布尔值再乘以一个常数比如报警输出5V接到Stop Simulation模块——一旦条件满足仿真直接停止。这个逻辑在电池管理系统BMS里很常见比如安时积分法估算SOC时超过设定阈值就触发保护停止充电。这就是热词里“基于simulink的bms”方向的雏形。我的建议是新手在掌握最基本模块之后一定要尝试把“连续信号”和“离散事件”结合到一起去体验一下数据不只是“流过”还能“改变状态、触发动作”。这是从“会搭模型”向“会用模型解决实际问题”跃迁的关键一步。3.3 “信号路由”为什么影响模型可维护性随着模型变大连线会越来越乱。这时候新手就该了解信号路由了。Mux模块把多条信号合并成一条“复合信号”主要用于在示波器里方便地同时显示多条曲线。它不改变信号内容只是“捆成一捆”。Bus Creator / Bus Selector把信号组合成结构体式的总线。这种结构的最大价值是信号有了名字模型里看到的是一个有组织的整体而不是一堆散线。它的高级用法可以配合MATLAB的Bus对象把结构体定义好之后直接作为外部接口。热词里“simulink bus selector 没有可选信号”——这个问题我们放到后面“翻车现场”章节细说。Goto / From模块一对信号“无线跳转”工具。一个Goto模块给信号起个名字模型里任意位置的From模块输入同名就能“无线上接”。它最大的好处是避免长线交叉但缺点也同样明显——不好追踪。新手别滥用除非你真的知道信号从哪里来否则后期排查起来相当痛苦。我的经验是模型规模在十几个模块以内直接连线最直观出了子系统或者要多处复用信号再考虑Goto/From和Bus。这个小习惯能大幅降低你后期维护模型的心智负担。4. 新手请把这几条“翻车现场”当路标4.1 双击示波器一片空白先别怀疑模型坏了现实中我最常听到新手的抱怨是“我明明搭好了运行也没报错Scope里就是没有波形。”这事百分之八十的原因出在这几处Stop time设置太短。比如信号频率特别低0.1Hz一个周期要等10秒而你的仿真只跑了短短几秒看到的自然是一条近似直线甚至空白。双击模型画布空白处打开“Configuration Parameters”检查Stop time是多少改成足够覆盖你关心的现象的时间。增益参数是0。这是新手最容易忽视的Gain模块默认值虽然是1但如果你改参数时手滑改成了0整个信号就被“清零”了Scope里当然只有一条水平直线。检查每个Gain的数值。没点自动缩放。Scope默认有个“自动缩放”按钮工具箱里的四箭头图标波形可能画出了但在可视范围之外点一下自动缩放就出来了。采样间距太稀疏。Scope的采样默认是1000个点如果你的仿真时间很长信号又高频这1000个点可能根本是两个相邻波峰之间的点看起来波形是乱的。解决办法是双击Scope在参数设置里减小“Sample Time”比如-1表示继承改成0.001或者右键波形→Configuration Properties里把“Decimation”设为1、提升采样点上限。记住Simulink的Scope空白九成不是模型“没信号”而是“显示设置没对上”。先把上面四项过一遍比删了重搭有效得多。4.2 端口尺寸对不上矩阵乘出幺蛾子第二个高频翻车点报错信息里写着一堆“Dimension mismatch”“Simulink cannot propagate size”之类的术语。新手一看术语就头疼其实这些错误翻译过来就是你给它喂的信号的“形状”和模块期待的“形状”对不上。举个例子你拖了一个Product模块默认参数是Element-wise元素级乘法输入是两个标量或者两个同维度数组。结果你把一个标量信号和一个10×1向量接进去它直接报错。或者你把一个2×2矩阵信号接给一个本来期待标量的Gain模块它也会报错。遇到这种情况我的建议是看诊断面板里的红字里面有具体模块路径比如untitled/Product它已经告诉你问题在哪。双击报错的模块看看模块参数里有没有“Number of inputs”“Multiplication”这类设置把模式改成符合你意图的。在连线上鼠标右键→Selection→Display→信号维度或者直接按Alt键在连线上悬停能看到这条线上信号的实际维数。确认数据流的形状是调试的硬功夫。新手必须建立的一个意识Simulink里的信号不只是“数值”还带着数据类型double、int8、boolean和维度标量、向量、矩阵这两个“属性”。报错多半是属性不匹配而不是数学算错了。想清楚这两点看报错信息再也不是天书。4.3 代数环警告Simulink在跟你讨一个延迟当你搭了一些反馈控制的模型后可能会在仿真开始时看到一条警告“This block is in the algebraic loop”。新手通常是一愣——代数环是什么要不要管我用大白话解释一下。Simulink计算每个模块的输出需要它的输入但如果某个信号的输入又依赖于它自己的输出而且这种依赖在同一个瞬间就完成了那就形成了数学上的“先有鸡还是先有蛋”的死循环计算器该怎么算举个例子一个Sum模块它的输出直接接回自己的一个输入中间没有任何延迟这就形成了代数环。Simulink虽然会自动求解代数环但这个过程费时费力有时还会导致仿真卡顿或结果不对。解决办法通常有三种在反馈路径上加一个Unit Delay单位延迟或者Memory模块——给信号“缓一拍”打破瞬时依赖。这在离散系统里非常常用。把模型结构改写让反馈路径上天然存在状态量比如积分器积分器的输出是上一时刻的积分结果不依赖于当前输入就不会构成代数环。这也是为什么控制系统的标准结构里一定要有积分器或延迟。手动给代数环求解器指定初值但工程里用得很少纯新手先不学也行。我的经验是看到代数环警告优先检查是不是某个反馈路径上丢了延迟或积分器。控制系统里几乎所有合法反馈都包含“状态”状态天然带有历史记忆才会让系统“能算”。4.4 仿真慢得像蜗牛从求解器开始查模型一复杂仿真会突然变得极慢慢到你怀疑电脑坏了。这个问题的典型原因就是求解器设置和模型性质不匹配。Simulink默认用ode45它在大多数连续系统上表现很好。但如果你是纯离散系统比如控制器都是采样控制的用了很多Unit Delay、Discrete-Time Integrator用连续求解器反而浪费大量时间在“微小的时间步长”上。这时你可以双击画布空白处打开配置参数把Solver一栏改成discrete离散求解器或者fixed-step配合适当的固定步长速度会快得让你怀疑之前为什么没这么设。另一个常见拖慢原因是Scope记录大量历史数据和解算刚性系统。如果仿真中使用了ode45一直卡在一个地方可以考虑换ode15s这类刚性求解器——尤其是你模型里出现了一些刚度差异巨大的环节比如电力电子仿真几十kHz的开关信号叠加在几十Hz的工频信号上。热词里“同步buck simulink仿真”“单相pwm整流器双闭环simulink”这类电力电子模型用的几乎都是固定步长离散求解器或ode23t原因就在这。新手一旦发现自己模型“跑不动”别急着怀疑硬件先看求解器类型选对了没有。我额外提一句新手别一上来就在模型里到处接Display模块。Display模块只显示最终仿真时刻的值而且它在大型模型里会额外增加计算开销。不如用To Workspace或To File把关键信号存下来仿真结束后用plot在MATLAB里统一画图又快又方便。5. 从“会跑”到“能打”下一步你可以往这些方向钻5.1 状态机与Chart让模型会“决策”如果你已经把连续系统的积分器搭建玩明白了下一步很值得学的是Stateflow或Simulink里的Chart模块旧版叫Stateflow。它专门用来搭建状态机让模型在不同条件下在不同状态之间跳转。举个贴近热词的例子四旋翼的控制系统经常要处理“起飞—悬停—降落”这样多模式控制切换。这种逻辑如果用离散模块硬搭连线会复杂得难以维护。但用Chart画状态机你只需要画三个状态方块每个方块定义进入/保持/退出的条件和执行的动作非常直观。新手入门Chart可以先做一个三状态的小模型状态A持续2秒后跳转到状态BB满足某条件跳转到CC收到复位信号回A。这个练习能让你很快理解状态机和Simulink数据流的结合方式。后续你再去碰电池管理系统的充放电状态切换、车辆的电控模式逻辑都会顺很多。5.2 联合仿真让工具箱里的专家模块帮你干活很多新手的最终目标并不仅仅是搭一个“数学玩具”而是要仿真真实的系统。热词里反复出现的“carsim和simulink联合仿真”就是车辆动力学和控制系统结合的代表场景。这类工作的基本思路是专业软件把复杂的物理模型算好Simulink负责做控制逻辑。以Carsim为例Carsim给出车辆的速度、位置、横摆角速度等状态量Simulink运行你搭好的控制器比如四轮转向控制、滑模控制把方向盘转角、扭矩等控制量回传给Carsim两个软件在仿真时钟推进中不断交互。新手第一次跑联合仿真时最容易卡的地方是接口变量的名称和单位的匹配——两边变量名对不上或者单位不一致仿真结果会非常离谱。这类联合仿真需要你先扎实掌握Simulink的基本信号流和子系统封装能力把控制逻辑封装成一个有明确输入输出接口的子系统。从技术栈的角度看联合仿真就是你Simulink技能从“会画模型”到“对接外界系统”的过渡强烈建议在这一步先学好“子系统Subsystem”和“端口的命名与管理”。5.3 代码生成与外部模式Simulink在生产里的“高光时刻”很多新手不知道Simulink画出的模型可以直接生成C代码烧进单片机、PLC或者工业控制器里跑。热词里“simulink模型c代码生成”指的就是这个能力。这个过程大体上是用Simulink把控制算法搭好符号化仿真验证通过然后借助Simulink Coder / Embedded Coder工具链一键生成C代码再部署到硬件里。和手写代码相比它的核心价值是代码和控制算法的一致性——你在仿真里验证过的东西生成出来的代码基本不跑偏。这正是汽车电子、航空航天大量使用Simulink的原因。另一个和代码生成关系紧密的方向是热词里的“simulink 外部模式”External Mode。它指的是运行在目标硬件上的代码通过通信接口和电脑上的Simulink模型保持实时连接你在Simulink里改动参数硬件上的运行实时响应示波器实时显示数据。做电机驱动或者快速原型验证的时候这个模式简直不要太香。新手暂时不用急着去折腾底层配置但应该知道这个能力的存在。等你终于有一天拿着Simulink生成好的C代码烧进板子你会觉得前面这些时间全都值了。5.4 电力电子和汽车电子的方向上怎么挑“营养”热词里电力电子方向的内容非常多逆变器、PWM整流器、光伏、风电场建模基本都是基于Simulink做的。如果这个方向是你的兴趣区我的建议是先把Simulink基础模块吃透尤其是数学运算、积分器、延时、逻辑比较。然后去研究Simscape Electrical工具箱。你会发现用元件级模型搭一个三相逆变器、电机模型比手动推公式写微分方程快得多。控制侧要从“双闭环”入手。热词里“单相pwm整流器双闭环simulink”“电机驱动逆变器仿真”核心都是电流内环和电压/速度外环。控制环路上的PI参数整定和调试是电力电子仿真里最占时间也最体现功力的地方。别忘了离散化。电力电子仿真天然是离散开关事件固定步长和合理的开关频率设定是结果可信的前提。BMS方向的话“simulink bms”“simulink安时积分法计算”这类搜索词背后是电池管理中最核心的SOC估算问题。安时积分法本质就是个积分器——你在第2章练过的积分器链在这里直接复用。所以我说入门期别贪多把基础模块吃透后面所有方向都只是不同应用场景的重复组合。5.5 S-Function Builder能碰但别有太高指望热词里有“S-Function Builder每次编译之后会影响其他S-Function Builder的结果”——这个坑我可以展开讲一下因为不少新手在混合C/C代码进Simulink时确实被它折磨过。S-Function Builder允许你把自写的C函数封装成Simulink模块用起来像普通模块一样。它解决的问题是当Simulink自带模块无法表达你的算法特别是逻辑复杂、效率要求高的算法时你可以用C实现再封装进来。但它的使用有一个隐蔽的雷点多个S-Function Builder模块在同一个模型里编译时可能会互相干扰。因为每次“Build”操作会生成一组共享的中间文件和C源文件后编译的模块可能会把先前模块生成的构建产物覆盖掉导致前面的S-Function模块无法正常更新或版本混乱。实际表现就是“上次还好好的这次一编译另一个S-Function模块也报错了”。我的建议是新手刚入门时尽量少碰S-Function Builder。先用Simulink基础模块组合出算法等确实有性能瓶颈或算法移植需求时再来啃S-Function的文档。如果一定要用一个模型里尽量只放一个S-Function Builder把所有C代码集中在里面或者改用MATLAB Function模块封装代码它的维护成本和编译干扰问题少很多。在Simulink里写代码时文件名、函数名、生成的目录都别用中文或带空格的名字否则各种诡异问题接踵而来。这是很多人踩过坑之后的血泪经验。说这些不是让你现在就冲去学S-Function而是让你明白Simulink的生态非常深但新手阶段你的核心任务不是啃各种奇技淫巧而是把“信号流”和“模块组合”这一层地基打好。地基好了以后遇到任何专业方向你都能快速找到对应模块看懂别人的模型甚至自己动手搭建专业系统。最后再分享一个我个人带新人时反复强调的小技巧永远把“最小可行模型”跑通了再往上加功能。想搭一个带超阈值报警、含滤波算法、还要和Carsim联动的模型请你先确保“正弦波→增益→示波器”能跑再逐步加滤波、加比较逻辑、加外部接口。每一小步都跑通一次你就会发现再复杂的模型也不过是很多个“小Hello World”的拼接。Simulink的魅力就在于此你不用记住所有模块和参数只要掌握数据流的思维方式和调试排查的习惯任何新问题你都有路径找到答案。
返回列表