MBD建模规范

1. 范围

本部分规定了基于模型开发的MCU应用层建模,从Simulink、Stateflow两方面进行约束,分别从信号、模型结构、端口等方面展开。

本部分适用于基于模型开发的MCU应用层建模要求

2. Simulink规范

2.1 模型外观

2.1.1 外观的统一设置

View 菜单

设置

Model Browser Options>Model Browser

checked

Status Bar

checked

Toolbar

checked

Zoom factor

Normal (100%)

Format 菜单

设置

Screen color

white

Background Color

white

Foreground Color

black

Block Display Options>Execution Context Indicator

unchecked

Library Link Display

none

Model Block I/O Mismatch

unchecked

Model Block Version

unchecked

Sample Time Display

none

Sorted Order

unchecked

Format >Port/Signal Displays 菜单

设置

Port Data Types

unchecked

Signal Dimensions

unchecked

Storage Class

unchecked

Test point/Logging Indicators

checked

Viewer Indicators

checked

Wide Non-scalar Lines

checked

以上设置没有执行的顺序要求。另外,所有文字部分(包括各种名称和注释)都需要有相同的字体和字号,即Simulink/Stateflow默认的字体和字号(Arial 10pt)。

2.1.2 端口放置

  1. 输入端口应该放置在图面的左侧,如果为了避免信号线的交叉,可以将输入端口向里面移动。
  2. 输出端口应该放置在图面的右侧,如果为了避免信号线的交叉,可以将输出端口向里面移动。

例子:

正确:

错误:

:在错误例子中,

        1. 输入端口2应该往图面中间移动,以避免信号线的交叉。
        2. 输出端口1应该往图面右侧移动,并与其它输出端口对齐。

2.1.3 端口图标的设置

在端口的Block Parameters对话框中的Icon display选项中,应选择Port number选项。

例子:

正确:

错误:

2.1.4 模块大小的调整

模型中的所有模块都应该调整好大小,使得模块的图标、文字和参数显示完整。

例子:

正确:

错误:

2.1.5 模块名称的位置

模型中所有模块的名称都要放置在模块的正下方。

例子:

正确:

错误:

2.1.6 模块名称的显示

如果模型的外观能够表达出模块的功能,那么模块的名称应该被隐藏。

例子:

如果模型的外观不能够表达出模块的功能,或需要对模块做一些描述,那么模块的名称应该被显示。

例子:

2.1.7 触发、条件和使能子系统

能够将一个子系统定义为条件、触发、使能等子系统的模块,应该被放置在子系统的顶端中间位置。

这样的模块有:

  • Enable
  • For Iterator
  • While Iterator
  • Action Port
  • Switch Case Action
  • Trigger

例子:

正确:

错误:

2.1.8 信号线的绘制

绘制信号线时应遵循以下几条原则:

  • 信号线尽量不交叉;
  • 信号线应该拐直角;
  • 信号线不能重叠;
  • 信号线不能穿过任何模块;
  • 在一个分支点上不能引出两条以上的信号线。

例子:

正确:

错误:

2.1.9 信号流方向

  • 除了反馈信号,信号流方向应该从左至右;
  • 需要顺序执行的模块应该从左至右放置;
  • 需要并行执行的模块应该从上至下放置。

例子:

2.1.10 应用Goto和From模块时的信号线绘制

应用Goto和From模块时,信号线的绘制应遵循如下几条原则:

  • 在有信号交互的两个子系统间,至少要有一条信号线连接两个子系统;
  • 如果子系统同时有前馈信号和反馈信号,那么在不同方向的回馈信号中至少各有一个信号要用信号线连接。
  • 如果应用上两条规则是涉及到信号线交叉,则可以允许交叉。

例子:

正确:

错误:

2.1.11 传递触发或使能信号的端口的命名

传递触发或使能信号的端口,其命名应与其传递的触发或使能信号相符。

例子:

2.1.12 子系统的放置方向

子系统的放置方向不能够翻转。

例子:

正确:

错误:

2.2 信号

给信号合适地命名会使模型易于理解,也会在仿真和代码生成时更容易控制变量名。信号仅在其建立时命名一次。当这个信号在模型中传递时,在它所出现的位置直接继承原来的名字即可。

2.2.1 信号名的显示

信号从某些模块引出时,信号名必须显示。这些模块是:

  • 输入端口;
  • From模块;
  • 子系统和StateFlow;
  • Bus Selector模块;
  • Demux模块;
  • Selector模块;
  • Data Store Read模块;
  • Constant模块。

信号引向某些模块时,信号名必须显示。这些模块是:

  • 输出端口;
  • Goto模块;
  • Data Store Write模块;
  • Bus Creator模块;
  • Mux模块;
  • 子系统和StateFlow。

:如果在○标出的模块的图标中已经显示了信号名,那么信号从这些模块引出时就不必再显示信号名了,除非信号被引向需要显示信号名的那些模块去。

例子:

正确:

错误:

2.2.2 信号名的继承和创建

在能够继承信号名时必须继承。在没有信号名可继承或继承信号名后不能表达信号的正确含义时,要重新创建信号名。

必须重新创建信号名的情况:

  • 在模型的最顶层,由输入端口引入的信号;
  • 信号穿过某一模块后改变了其意义或形态时(如Gain,Bus Selector,Switch等);
  • 在引用Library时,从Library中的输入端口引出的信号需要重新创建信号名,以符合Library的重用要求;
  • 信号从引用的Library引出时。

必须继承信号名的情况:

  • 在子系统(非Library)中由输入端口引入的信号;
  • 信号穿过某一模块后没改变其意义或形态时;
  • 信号从某一子系统或StateFlow(非Library)中引出时。

例子:

2.2.3 信号名的位置

  • 信号名的位置应该在信号线下面,靠近信号线的引出模块。
  • 信号名必须清晰地显示出来,不能与任何模块、信号名或信号线重叠。

2.2.4 未连接的信号线

模型中不能出现未连接或错误的信号线,有如下几种情况:

  • 不能出现未链接的子系统或模块的输入;
  • 不能出现未链接的子系统或模块的输出;
  • 不能出现未连接的信号线。

2.3 基础模块应用

2.3.1 模块应用中的逻辑运算和算数运算

在模块应用中要注意其需要的数据类型。要做到:

  • 不能给需要逻辑类型数据的模块输入算数类型数据;
  • 不能给需要算数类型数据的模块输入逻辑类型数据。

错误例子:

2.3.2 禁止应用的Simulink标准模块

  • 控制策略的模型中必须用离散运算的模块。
  • 只能用在Simulink Library > Model-Wide Utilities > Block Support Table中规定的可以用于代码生成的模块,不要用其中规定的不建议用于代码生成的模块。
  • 除了以上所述的模块,还有以下的模块也不能用:

不能用的信号源模块:

Sine Wave

Pulse Generator

Random Number

Uniform Random Number

Band-Limited White Noise

以下模块也不要用:

Slider Gain

Manual Switch

Complex to Magnitude-Angle

Magnitude-Angle to Complex

Complex to Real-Imag

Real-Imag to Complex

Polynomial

MATLAB Fcn(1)

Goto Tag Visibility

Probe

To File

To Workspace

​​​​​​​

Stop Simulation

​​​​​​​

2.3.3 Goto和From模块的作用范围

对于数据信号,Goto和From模块的作用范围只能是Local。

对于控制信号,Goto和From模块的作用范围可以是Global。控制信号只能出自:

  • Function-call generators;
  • If and Case blocks;
  • Function call outputs from MATLAB and Stateflow blocks。

例子:

2.3.4 Switch模块的应用

Switch模块的Input2 必须是布尔信号。

Switch模块的参数“Criteria for passing first input”必须选择“u2~=0”。

例子:

正确:

错误:

2.3.5 比较运算模块的运用

在用比较运算模块比较一个信号与一个定值时,定值要放在比较运算模块的第二个输入端口。

例子:

正确:

​​​​​​​

错误:

​​​​​​​

2.3.6 加法运算模块的运用

加法运算模块尽量用方形外观,且所有输入信号都应清晰,不要有相互重叠。

例子:

正确:

错误:

     

加法运算模块仅在用作反馈时可以用圆形外观,并且输入信号不能多于3个,输出信号必须在圆形的3点钟位置,输入信号必须在圆形的0点、9点和6点位置。

例子:

正确:

错误:

​​​​​​​

2.3.7 逻辑运算模块的运用

在做混合的逻辑运算时,为不致给设计者和阅读者造成逻辑混乱,应尽量按照如下的方式处理:

​​​​​​​      

2.3.8 Lookup Table的应用

在使用Lookup Table时应注意,其Lookup Method选项必须选择“Interpolation-Use End Values”。

例子:

2.4 模块参数

2.4.1 向量索引

在所有需要用到向量索引的模块中,均应选择“Zero-Baesd”选项。

例子:

2.4.2 用Constant模块实现变化的参数

用Constant模块实现变化的参数或做标定量时,为正确实现参数的变化,参数在Constant模块中的表达必须做到:无运算、无数据类型转换和无行列选择。

例子:

正确:

​​​​​​​

错误:

​​​​​​​

2.4.3 带参数的模块

当用到需要参数(标定量)的模块时,尽可能用能够将参数(标定量)直接展示出来的相应模块,并将参数(标定量)直接展示出来。

例子:

正确:

错误:

3. Stateflow规范

3.1 Chart外观

3.1.1 Stateflow端口命名

Stateflow输入和输出端口的名字必须与相关信号的名字保持一致。除非Stateflow是以Library等复用的形式出现。

3.1.2 Stateflow中状态迁移线的绘制

在Stateflow中绘制状态迁移线时要做到:

  • 尽可能不要有交叉;
  • 不要有重叠;
  • 不要穿过任何状态框、连接点和文字(除非状态迁移至一个内状态);
  • 状态迁移条件须紧邻状态迁移线。

需要完整文档点击如下链接下载:

百度MBD开发建模规范资源-CSDN文库​​​​​​​

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MATLAB MBD 模型规范是一套用于描述和建立机械系统行为模型的规则和标准。MBD代表机械系统建模和仿真。以下是MATLAB MBD 模型规范的一些重要方面: 1. 建模语言:MATLAB MBD 模型规范建议使用Simulink来描述机械系统模型。Simulink提供了一个直观的图形界面,使用户能够轻松地设计和修改模型。 2. 模型结构:在进行机械系统建模时,应将其分解为不同的模块和子系统。这样做可以简化模型的分析和调试。 3. 参数设置:模型中使用的参数应进行正确的设置。这些参数可以包括物理性质、尺寸、材料属性等。通过正确设置参数,可以确保模型的准确性和可靠性。 4. 边界条件:模型的边界条件应进行正确的设置。这包括初始条件和边界条件。设置正确的边界条件可以使模型的仿真结果更加接近实际情况。 5. 仿真设置:在进行系统仿真时,应设置适当的仿真时间和步长。这些设置应该能够保证仿真结果的准确性和稳定性。 6. 模型分析:在建立模型后,应进行模型分析和验证。这包括对模型进行线性和非线性分析,以及与实际系统进行比较和验证。 7. 结果可视化:MATLAB MBD 模型规范还强调了结果可视化的重要性。通过合适的绘图和图表,可以更好地理解模型的行为和性能。 总之,MATLAB MBD 模型规范提供了一套标准和规则,用于建立机械系统行为模型。遵守这些规范可以确保模型的准确性、可靠性和可重复性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电气_空空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值