1、Matlab/Simulink/Stateflow 控制算法建模规范3.0 版Mathworks 汽车咨询委员会(MAAB)1 修订历史日期 修订2001.02.04 初始版本 1.0 版发布2007.04.27 更新版本 2.0 版发布2011.07.30 更新版本 3.0 版发布2012.08.31 更新版本 4.0 版发布2 介绍2.1 动机MAAB 建模规范无论是在组织内部还是在与合作伙伴和分包商合作时都是项目成功与团队协作的重要基础。 遵守建模规范是实现以下目标的重要前提: 无问题的系统集成 明确定义的界面 统一的模型外观、编码及文件编制 可重用模型 可读的模型 无问题的模型交换 简
2、单高效的过程 专业的文件编制 清晰易懂的展示 快速的软件变更 与分包商的合作 将研究或重建项目移交给产品开发2.2 对 3.0 版的批注本规范的现行版本 3.0 版支持 MATLAB 算法,包括其 R2007b 至R2011b 版。3.0 版参考了美国国家航空航天局猎户座指南中的部分规则。参考的规则均在“参见”部分中标明了该规则在美国国家航空航天局猎户座指南中的编号。2.3 规范模板规范描述采用下列模板出具。建议想要附加其他规范的公司也采用下列模板进行添加。ID:标题 XX_nnnn: 规范的标题(须唯一且简短)优先级 强制要求/强烈建议/建议之一适用范围 MAAB, NA-MAAB, J-M
3、AAB,特定公司 (本地公司可选使用)MATLAB 版本 全部 RX, RY, RZ RX 及其之前的版本 RX 及其之后的版本 RX 至 RY 的版本前提 到规范的链接,这是本规范的前提(ID+标题)描述 对规范的描述(文本,图像)理由 制定规范的动机最终更改 最终更改版本编号注:本模板的各项元素是为使规范得到合理的理解与交流所必须提供的最小项。允许对本模板的项目或卖主部分进行补充,只要补充的部分不与原有部分在意义上重合即可。事实上,如果上述补充能有助于整合其他规范模板并促使核心模板本身达到更广泛的接收度,这样的补充是受到鼓励的。2.3.1规范 ID 规范的 ID 由两个小写字母(表示规则的
4、出处)和四位数字组成,中间用一段下划线隔开。 一旦一份新规范有了 ID,该 ID 将不再改变。 ID 用来指代相应的规范。 以“na” 、 “jp”、 “jc”、 “eu”开头的 ID 预留给未来的 MAAB规范使用。 保留以“db” 、 “jm”、 “hd”、 “ar”开头的 ID。 新规则的 ID 不得以上述字母开头。2.3.2规范标题 规范的标题应对该规范的应用领域进行简短且唯一的描述(例如,名字的长度) 。 规范的标题适用于前提条件部分及定制检测工具。 规范的标题应与到该规范的超链接同时写出。注:标题不应为对规范内容的多余的简要描述。对规范内容的描述未来可能发生改变,但规范的标题始终不
5、得更改。2.3.3优先级每条规范都须根据下列优先顺序进行评级: 强制要求 强烈建议 建议优先级描述该规范的重要程度并决定违反该规范的后果严重程度:强制要求 强烈建议 建议定义 所有公司一致认定为绝对必不可少的规范 所有公司都100%遵守的规范 被一致认定为良好做法,但遗留模型阻碍了公司对该规范 100%的遵守 模型须以可能的最大程度遵守该规范,但并未要求对其100%的遵守 为改进模型图的外观建议遵守的规范,但该规范对于模型的运行并非起决定作用 如果遵守会更好,但并非必要的规范后果如果违反了该规范 必要的项目出现缺失 模型无法正常工作 质量和外观劣化 可能对可维修性、可携带型及可重用性产生不利影
6、响 外观可能与其他项目不一致豁免政策如果有意地忽略该规范 原因须备有文件证明2.3.4适用范围适用范围可以是以下三者之一:MAAB (MathWorks 汽车咨询委员会)J-MAAB (日本 MAAB) NA-MAAB (北美 MAAB)“MAAB”是一个 与 MathsWorks 紧密合作的汽车制造商及供应商的团队。MAAB 包括两个子团队,即日本 MAAB 及北美 MAAB。“J-MAAB”是 MAAB 的子团队,包括与 MathsWorks 紧密合作的日本汽车制造商及供应商。J-MAAB 规则的适用范围为日本当地。“NA-MAAB” 是 MAAB 的子团队,包括与 MathsWorks
7、紧密合作的美国及欧洲的汽车制造商及供应商。该规则是美国及欧洲当地的规则。覆盖范围为美国和欧洲。2.3.5MATLAB 版本本规范适用于 MATLAB 及 Simulink 所有版本的产品。如果一条规则仅适用于 MATLAB 的某一个或某几个版本,则适用版本的信息应在 MATLAB 版本部分进行说明,说明格式为下列格式中的一种: 全部:MATLAB 的所有版本RX, RY, RZ:MATLAB 的某一特定版本RX 及其之前的版本:RX 发布之前的 MATLAB 版本RX 及其之后的版本:RX 发布之后直至现行版本发布期间的MATLAB 版本RX 至 RY 的版本: RX 至 RY 之间的 MAT
8、LAB 版本2.3.6前提 该部分是到其他规范的链接,链接的规范均为本规范的前提(逻辑关联) 。 每个链接须注明相应规范的 ID(为了一致性)和标题(为了可读性) 。 “前提”部分不应包括任何其他文本。2.3.7描述 该部分包括对规范的详细描述。 如有需要,可添加图像和表格。注:如果正式表达(数学符号、正规表达式、语法图及精确数值/范围)可用,应使用正式表达对规范进行清楚明白的描述并指定一项自动检测。此外,为了日常参考,还须提供一份人性化的、可理解的、非正式的描述。2.3.8理由规范的建议可出于以下一种或多种原因: 可读性:易于理解的算法 可读的模型 统一的模型外观、编码及文件编制 清洁的界面
9、 专业的文件编制 工作流:高效的发展进程及工作流 易于维护 迅速的改型设计 可重复使用的部件 无问题的模型交换 模型可携带型 模拟:高效的模拟与分析 模拟速率 模拟内存 模型检测 验证&确认:有能力对模型及生成的代码就下列因素进行验证和确认: 需求的可追溯性 测试 无问题的系统集成 清洁的界面 代码生成:生成对内嵌系统有效的代码 快速的软件变更 生成的代码的稳健性2.3.9最终更改“最终更改部分”包括文件版本编号。2.4 文件使用以下段落提供的信息是关于使用本文件作为参考以及参照本文件编写具体项目的规范文件的。附件 A 中可以找到关于对本规范进行自动校核的信息。2.4.1 规范交互作用语义本文
10、件的起始段“命名规范与模型架构”提供了适用于各种模型的基本规范。其后的 “Simulink 与 Stateflow”部分提供上述环境中的具体规则。某些规范是依赖于其他规范的,模板中自始至终都对其作了明确说明。2.4.2 隐匿的子系统及可读性规则如果用户没有查看模型内部隐匿子系统的内容,则关于可读性的规范不再适3 软件环境3.1 总则3.1.1na_0026:一致的软件环境ID:标题 na_0026:一致的软件环境优先级 建议适用范围 北美 MAABMATLAB 版本 见“描述”前提描述 在软件开发过程中,建议在整个项目中始终使用一致的软件开发环境。此处所说的软件包括但不仅限于: MATLAB
11、Simulink C Compiler (供模拟) C Compiler (供目标硬件)理由 可读性工作流模拟验证&确认代码生成参见 jh_0042:必需的软件最终更改 3.00 版3.1.2na_0027: 仅有标准库模块的使用ID:标题 na_0027: 仅有标准库模块的使用优先级 建议适用范围 北美 MAABMATLAB 版本 全部前提描述 公司在开发模型时应指定 Simulink 的一个子集以供使用。模块列表可包括由公司或第三方开发的自定义模块库。模型应仅由这些模块构成。开发过程中可使用非兼容性模块。如果使用了非兼容性模块,须用一种颜色/图标和/或注释进行标记。这些非兼容性模块在用于生
12、成生产代码之前必须移除。理由 可读性工作流模拟验证 &确认代码生成参见 hyl_0201: 只使用标准库模块最终更改 3.00 版4 命名规范4.1 总则4.1.1ar_0001:文件名ID:标题 ar_0001:文件名优先级 强制要求适用范围 MAABMATLAB 版本 全部前提描述 文件名应符合以下约束条件:形式 文件名=文件名称.扩展名称:无前导位数,无空格符号扩展:无空格符号唯一性 上级项目目录内的所有文件名不得与 C/C+或 MATLAB 关键词冲突允许的字符 名称:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D
13、 E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _扩展:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9下划线 名称: 可使用下划线分离各个部分 不得连续使用一个以上的下划线 不得以下划线开头 不得以下划线结尾扩展:不得使用下划线理由 可读性工作流模拟验证&确认代码生成最终更改 3.00 版4.1.2ar_0002:目
14、录名ID:标题 ar_0002:目录名优先级 强制要求适用范围 MAABMATLAB 版本 全部前提描述 目录名应符合以下约束条件:形式 目录名=名称名称:无前导位数,无空格符号唯一性 上级项目目录内的所有文件名允许的字符 名称:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _下划线 名称: 可使用下划线分离各个部分 不得连续使用一个以上的下划线 不得以下划线开头 不得以下划线结尾理由 可读性工
15、作流模拟验证&确认代码生成最终更改 1.00 版4.1.3na_0035:命名规范的采用ID:标题 na_0035:命名规范的采用优先级 建议适用范围 北美 MAABMATLAB 版本 全部前提描述 建议采用命名规范。命名规范为模块、信号、参数和数据类型的命名提供了规范。命名规范经常涉及下列问题: 符合程序设计语言及下游工具长度符号的使用 可读性使用下划线使用大写字母 编码信息使用“有意义”的名称标准的缩写和简称数据类型工程单位数据谱系关系存储器类型理由 可读性工作流模拟验证&确认代码生成最终更改 3.00 版4.2 模型内容规范4.2.1jc_0201:子系统名称可用字符ID:标题 jc_0
16、201:子系统名称可用字符优先级 强烈建议适用范围 MAABMATLAB 版本 全部前提描述 所有子系统模块的名称均应符合以下约束条件:形式 名称: 不得以数字开头 不得出现空白间隔 不得出现回车符允许的字符 名称:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _下划线 名称: 可使用下划线分离各个部分 不得连续使用一个以上的下划线 不得以下划线开头 不得以下划线结尾理由 可读性工作流模拟验证&
17、确认代码生成最终更改 2.20 版4.2.2 jc_0211:输入模块与输出模块名称可用字符ID:标题 jc_0211:输入模块与输出模块名称可用字符优先级 强烈建议适用范围 MAABMATLAB 版本 全部前提描述 所有输入模块与输出模块的名称均应符合以下约束条件:形式 名称: 不得以数字开头 不得出现空白间隔 不得出现回车符允许的字符 名称:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _下
18、划线 名称: 可使用下划线分离各个部分 不得连续使用一个以上的下划线 不得以下划线开头 不得以下划线结尾理由 可读性工作流模拟验证&确认代码生成最终更改 2.20 版4.2.3jc_0221:信号线名称可用字符ID:标题 jc_0221:信号线名称可用字符优先级 强烈建议适用范围 MAABMATLAB 版本 全部前提描述 所有信号线名称均应符合以下约束条件:形式 名称: 不得以数字开头 不得出现空白间隔 不得出现回车符允许的字符 名称:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N
19、O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _下划线 名称: 可使用下划线分离各个部分 不得连续使用一个以上的下划线 不得以下划线开头 不得以下划线结尾理由 可读性工作流模拟验证&确认代码生成最终更改 2.20 版4.2.4 na_0030:Simulink 公交车名称可用字符ID:标题 na_0030:Simulink 公交车名称可用字符优先级 强烈建议适用范围 北美 MAABMATLAB 版本 全部前提描述 所有 Simulink 公交车名称均应符合以下约束条件:形式 名称: 不得以数字开头 不得出现空白间隔 不得出现回车符允许的字符 名称:a
20、b c d e f g h I j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _下划线 名称: 可使用下划线分离各个部分 不得连续使用一个以上的下划线 不得以下划线开头 不得以下划线结尾理由 可读性工作流模拟验证&确认代码生成参见 jh_0040:Simulink 公交车名称可用字符最终更改 3.00 版4.2.5 jc_0231:模块名称可用字符ID:标题 jc_0231:模块名称可用字符优先级 强烈建议适用范围 MAABMAT
21、LAB 版本 全部前提 jc_0201:子系统名称可用字符描述 所有模块名称均应符合以下约束条件:形式 名称: 不得以数字开头 不得出现空白间隔 不得出现回车符允许的字符 名称:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _注:本规则不适用于子系统模块。理由 可读性工作流模拟验证&确认代码生成最终更改 2.00 版4.2.6 na_0014:使用 Simulink 及 Stateflow 的本
22、地语言ID:标题 na_0014:使用 Simulink 及 Stateflow 的本地语言优先级 强烈建议适用范围 日本 MAABMATLAB 版本 全部前提描述 本地语言只能在描述字段使用。描述字段是不影响代码生成及模拟的文本切入点。描述字段示例包括Simulink 示例: 模块属性的描述字段 直接进入模型的文本注释Stateflow 示例 图表或状态参数的描述字段 使用“添加注释”添加的注释注:如果一个模型包含关于不同字符编码系统的本地语言,可能会出现 Simulink 无法打开该模型的状况;因此,当跨越国界进行模型交换时应留意本地字符的使用,这是非常重要的。 理由 可读性工作流模拟验证
23、&确认代码生成最终更改 2.00 版5 模型架构基本模块本文件使用“基本模块”指代基础 Simulink 库中的模块。基本模块举例:5.1 Simulink与 Stateflow分区5.1.1na_0006: Simulink 与 Stateflow 混合使用规范ID:标题 na_0006: Simulink 与 Stateflow 混合使用规范优先级 强烈建议适用范围 MAABMATLAB 版本 全部前提描述 选择使用 Simulink 或者 Stateflow 来为控制算法函数的给定部分建模,应根据建模反应的性质来决定。 如果函数主要包含复杂的逻辑运算,使用 Stateflow 图表。 如
24、果当前时间执行的控制函数取决于过去和现在逻辑关系的结合,则应使用 Stateflow 来实现模态逻辑。 如果函数主要包含数值运算,使用 Simulink 特征。详情: 如果函数的主要性质是逻辑性的,但要进行一些简单的数值计算来支持这一逻辑,则使用 Stateflow 动作语言执行简单的数值函数。 如果函数的主要性质是数值性的,但要进行一些简单的逻辑运算来支持这一数值,则使用 Simulink 模块执行简单的逻辑运算。 如果函数的主要性质是逻辑性的,但必须进行一些复杂的数值计算来支持这一逻辑,则使用 Simulink 子系统来进行数值计算。Stateflow 软件应调用函数来执行该子系统。如果当前时间执行的控制函数取决于过去和现在逻辑关系的结合,则应使用 Stateflow 产品来实现模态逻辑。 (如果有必要储存逻辑条件测试的结果,比如储存一个标志,这是存在模态逻辑的一个指标,应采用 Stateflow 软件建模。 )错误正确 应使用 Simulink 来执行包含多次赋值状态的数值表达式,例如,差分方程,积分,导数和过滤。错误正确理由 可读性工作流模拟验证 &确认代码生成最终更改 2.00 版