Simulink 快速入门(七)--在 Simulink 中设计系统

目录

打开系统模型

确定设计的组件和设计目的

通过仿真来分析系统行为

设计组件并验证设计

添加设计的组件

验证设计


        基于模型的设计范式以物理组件和系统的模型为中心,模型是设计、测试和实现活动的基础。本教程将在一个现有的系统模型中添加一个设计组件。

打开系统模型

        此模型是一个平板机器人,它可以借助两个轮子进行移动或旋转,类似于家用扫地机器人。通过在 MATLAB 命令行中输入以下命令打开模型:

open_system('xxx.slx')

        如图所示:

        本教程将分析此系统并为其添加功能。

确定设计的组件和设计目的

        设定目标的说明是完成设计任务的关键第一步。即使是一个简单的系统,也可能存在多个甚至是相互矛盾的设计目的。对于示例模型,请考虑以下目标:

  • 设计一个控制器,它可以改变作用力输入,使轮子按所需的速度转动。

  • 设计输入,使设备沿预定的路径移动。

  • 设计一个传感器和一个控制器,使设备沿直线移动。

  • 设计一种规划算法,使设备沿可能的最短路径到达某个点并避开障碍物。

  • 设计一个传感器和一种算法,使设备在某个区域内移动并避开障碍物。

        该教程将设计一个警报系统。需要确定用于测量障碍物距离的传感器的参数。完美的传感器精确地测量它与障碍物的距离。警报系统按固定时间间隔对这些测量值进行采样,使输出与测量值相差始终不超过 0.05 米。系统会及时生成警报,让机器人在碰到障碍物前停下来。

通过仿真来分析系统行为

        设计新组件需要分析机器人的线性运动以确定:

  • 如果切断轮子的电源,机器人能够以最高速度行驶多远

  • 机器人的最高速度

        使用能够使机器人开始运动的作用力输入来运行模型,等到机器人达到稳定速度后,将输入作用力设置为零:

(1)在模型中,双击 Inputs 子系统。

(2)删除现有步长输入,并添加一个 Pulse Generator 模块。

(3)设置 Pulse Generator 模块的参数:

        采用以上参数值是为了确保达到最高速度。可以更改参数以查看其效果。

  • 幅值:1

  • Period:20

  • Pulse Width:15

(4)运行模型 20 秒。

        如图所示:                   

如图所示:                      

        第一个示波器显示,在时间值为 3 时切断电源,此时速度迅速开始下降。然后速度逐渐接近零,但不会完全达到零。这是建模的局限性;无外力作用下的低速动态特性需要更复杂的表示。但针对本示例的目的,可以取近似值。放大位置信号。                    

        在时间值大约为3时,机器人的位置大约在0.55米处。当仿真结束时,位置值小于0.71米。可以肯定地说,机器人在切断电源后行驶距离不到0.16米。

        要求出最高速度,请执行以下操作:

(1)放大速度输出在时间上的稳定区域,即从1秒到3秒。

(2)再次点击缩放按钮,退出缩放模式。点击 Cursor Measurements 按钮 

(3)将第二个游标设置在速度曲线平坦的区域。

        如图所示:                      

        Cursor Measurements 面板中的 Value 列表明机器人的最高速度为 0.183 米/秒。要计算机器人行驶 0.05 米所需的时间,用 0.05 米除以 0.183 米/秒。可得到 0.27 秒。

设计组件并验证设计

        传感器设计包括以下组件:

  • 机器人与障碍物之间的距离测量值 - 此示例假定测量值非常精确。

  • 警报系统测量距离的时间间隔 - 要使测量误差低于 0.05 米,采样间隔必须小于 0.27 秒。Use0.25 sec.

  • 传感器发出警报时的距离 - 分析显示必须从距离障碍物 0.16 米处开始减速。但实际警报距离还必须将离散测量误差 0.05 米考虑在内。

添加设计的组件

(1)构建传感器:

        如图所示:                                    

(2)构建距离测量值子系统。在 Sensor 模块中,按如下所示使用 Subtract、具有 Function magnitude^2 函数的 Math Function、Sum 和 Sqrt 模块。请注意输入端口的重新排序。

        如图所示:            

(3)对采样进行建模。从Discrete库中将一个 Zero-Order Hold 模块添加到子系统中,并将其Sample time参数设置为0.25。

(4)对警报逻辑进行建模。从Logic and Bit Operations 库中添加Compare to Constant模块,并设置参数:

  • Operator:<=

  • Constant Value:0.21

  • Output data type:boolean

        此逻辑模块在输入小于或等于0.21时输出 1。

        如图所示:

验证设计

        使用 Constant 模块作为 Sensor model 子系统的输入,以X = 0.65, Y = 0的障碍物位置来测试设计。此测试验证 X 方向的设计功能。可以针对不同路径创建类似的测试。此模型仅生成警报,不控制机器人。

(1)设置障碍物位置。从 Sources 库中添加两个 Constant 模块,并将常量值设置为 0.65和0。将机器人的位置输出连接到传感器的输入端口。

(2)为 Alert 输出添加一个示波器。

        如图所示:

(3)运行模型。

        如图所示:                      

如图所示:                       

        注意观察,一旦机器人位置与障碍物位置之间的距离在 0.21 米范围内并且满足此组件的设计要求,警报状态就变为 1。对于具有复杂组件和严格要求的真实系统,Simulink® 产品系列提供了一些附加工具,可以优化和自动完成设计过程。

        SimulinkRequirements™ 可以对要求进行形式化定义,并将它们与模型组件联系起来。如果要为此机器人构建一个控制器,Simulink Control Design™ 可以帮助完成设计。Simulink Verification and Validation™ 产品则建立了一套严格的框架,可用于测试组件和系统。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值