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对3.0版的批注本规范的现行版本3.0版支持MATLAB算法,包括其R2007b至R2011b版。3.0版参考了《美国国家航空航天局猎户座指南》中的部分规则。参考的规则均在“参见”部分中标明了该规则在《美国国家航空航天局猎户座指南》中的编号。2.3规范模板规范描述采用下列模板出具。建议想要附加其他规范的公司也采用下列模板进行添加。ID:标题XX_nnnn:规范的标题(须唯一且简短)优先级强制要求/强烈建议/建议之一适用范围MAAB,NA-MAAB,J-MAAB,特定公司(本地公司可选使用)MATLAB版本全部RX,RY,RZRX及其之前的版本RX及其之后的版本RX至RY的版本前提到规范的链接,这是本规范的前提(ID+标题)描述对规范的描述(文本,图像)理由制定规范的动机最终更改最终更改版本编号注:本模板的各项元素是为使规范得到合理的理解与交流所必须提供的最小项。允许对本模板的项目或卖主部分进行补充,只要补充的部分不与原有部分在意义上重合即可。事实上,如果上述补充能有助于整合其他规范模板并促使核心模板本身达到更广泛的接收度,这样的补充是受到鼓励的。2.3.1规范ID规范的ID由两个小写字母(表示规则的出处)和四位数字组成,中间用一段下划线隔开。一旦一份新规范有了ID,该ID将不再改变。ID用来指代相应的规范。以“na”、“jp”、“jc”、“eu”开头的ID预留给未来的MAAB规范使用。保留以“db”、“jm”、“hd”、“ar”开头的ID。新规则的ID不得以上述字母开头。2.3.2规范标题规范的标题应对该规范的应用领域进行简短且唯一的描述(例如,名字的长度)。规范的标题适用于前提条件部分及定制检测工具。规范的标题应与到该规范的超链接同时写出。注:标题不应为对规范内容的多余的简要描述。对规范内容的描述未来可能发生改变,但规范的标题始终不得更改。2.3.3优先级每条规范都须根据下列优先顺序进行评级:强制要求强烈建议建议优先级描述该规范的重要程度并决定违反该规范的后果严重程度:强制要求强烈建议建议定义所有公司一致认定为绝对必不可少的规范所有公司都100%遵守的规范被一致认定为良好做法,但遗留模型阻碍了公司对该规范100%的遵守模型须以可能的最大程度遵守该规范,但并未要求对其100%的遵守为改进模型图的外观建议遵守的规范,但该规范对于模型的运行并非起决定作用如果遵守会更好,但并非必要的规范后果如果违反了该规范必要的项目出现缺失模型无法正常工作质量和外观劣化可能对可维修性、可携带型及可重用性产生不利影响外观可能与其他项目不一致豁免政策如果有意地忽略该规范原因须备有文件证明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紧密合作的美国及欧洲的汽车制造商及供应商。该规则是美国及欧洲当地的规则。覆盖范围为美国和欧洲。2.3.5MATLAB版本本规范适用于MATLAB及Simulink所有版本的产品。如果一条规则仅适用于MATLAB的某一个或某几个版本,则适用版本的信息应在MATLAB版本部分进行说明,说明格式为下列格式中的一种:全部:MATLAB的所有版本RX,RY,RZ:MATLAB的某一特定版本RX及其之前的版本:RX发布之前的MATLAB版本RX及其之后的版本:RX发布之后直至现行版本发布期间的MATLAB版本RX至RY的版本:RX至RY之间的MATLAB版本2.3.6前提该部分是到其他规范的链接,链接的规范均为本规范的前提(逻辑关联)。每个链接须注明相应规范的ID(为了一致性)和标题(为了可读性)。“前提”部分不应包括任何其他文本。2.3.7描述该部分包括对规范的详细描述。如有需要,可添加图像和表格。注:如果正式表达(数学符号、正规表达式、语法图及精确数值/范围)可用,应使用正式表达对规范进行清楚明白的描述并指定一项自动检测。此外,为了日常参考,还须提供一份人性化的、可理解的、非正式的描述。2.3.8理由规范的建议可出于以下一种或多种原因:可读性:易于理解的算法可读的模型统一的模型外观、编码及文件编制清洁的界面专业的文件编制工作流:高效的发展进程及工作流易于维护迅速的改型设计可重复使用的部件无问题的模型交换模型可携带型模拟:高效的模拟与分析模拟速率模拟内存模型检测验证&确认:有能力对模型及生成的代码就下列因素进行验证和确认:需求的可追溯性测试无问题的系统集成清洁的界面代码生成:生成对内嵌系统有效的代码快速的软件变更生成的代码的稳健性2.3.9最终更改“最终更改部分”包括文件版本编号。2.4文件使用以下段落提供的信息是关于使用本文件作为参考以及参照本文件编写具体项目的规范文件的。附件A中可以找到关于对本规范进行自动校核的信息。2.4.1规范交互作用语义本文件的起始段“命名规范与模型架构”提供了适用于各种模型的基本规范。其后的“Simulink与Stateflow”部分提供上述环境中的具体规则。某些规范是依赖于其他规范的,模板中自始至终都对其作了明确说明。2.4.2隐匿的子系统及可读性规则如果用户没有查看模型内部隐匿子系统的内容,则关于可读性的规范不再适3软件环境3.1总则3.1.1na_0026:一致的软件环境ID:标题na_0026:一致的软件环境优先级建议适用范围北美MAABMATLAB版本见“描述”前提描述在软件开发过程中,建议在整个项目中始终使用一致的软件开发环境。此处所说的软件包括但不仅限于:MATLABSimulinkCCompiler(供模拟)CCompiler(供目标硬件)理由可读性□工作流□模拟□验证&确认代码生成参见jh_0042:必需的软件最终更改3.00版3.1.2na_0027:仅有标准库模块的使用ID:标题na_0027:仅有标准库模块的使用优先级建议适用范围北美MAABMATLAB版本全部前提描述公司在开发模型时应指定Simulink的一个子集以供使用。模块列表可包括由公司或第三方开发的自定义模块库。模型应仅由这些模块构成。开发过程中可使用非兼容性模块。如果使用了非兼容性模块,须用一种颜色/图标和/或注释进行标记。这些非兼容性模块在用于生成生产代码之前必须移除。理由可读性□工作流模拟验证&确认代码生成参见hyl_0201:只使用标准库模块最终更改3.00版4命名规范4.1总则4.1.1ar_0001:文件名ID:标题ar_0001:文件名优先级强制要求适用范围MAABMATLAB版本全部前提描述文件名应符合以下约束条件:形式文件名=文件名称.扩展名称:无前导位数,无空格符号扩展:无空格符号唯一性□上级项目目录内的所有文件名□不得与C/C++或MATLAB关键词冲突允许的字符名称:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_扩展:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789下划线名称:可使用下划线分离各个部分不得连续使用一个以上的下划线不得以下划线开头不得以下划线结尾扩展:不得使用下划线理由可读性工作流模拟□验证&确认代码生成最终更改3.00版4.1.2ar_0002:目录名ID:标题ar_0002:目录名优先级强制要求适用范围MAABMATLAB版本全部前提描述目录名应符合以下约束条件:形式目录名=名称名称:无前导位数,无空格符号唯一性上级项目目录内的所有文件名允许的字符名称:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_下划线名称:可使用下划线分离各个部分不得连续使用一个以上的下划线不得以下划线开头不得以下划线结尾理由可读性工作流模拟□验证&确认代码生成最终更改1.00版4.1.3na_0035:命名规范的采用ID:标题na_0035:命名规范的采用优先级建议适用范围北美MAABMATLAB版本全部前提描述建议采用命名规范。命名规范为模块、信号、参数和数据类型的命名提供了规范。命名规范经常涉及下列问题:符合程序设计语言及下游工具〇长度〇符号的使用可读性〇使用下划线〇使用大写字母编码信息〇使用“有意义”的名称〇标准的缩写和简称〇数据类型〇工程单位〇数据谱系关系〇存储器类型理由可读性工作流模拟□验证&确认代码生成最终更改3.00版4.2模型内容规范4.2.1jc_0201:子系统名称可用字符ID:标题jc_0201:子系统名称可用字符优先级强烈建议适用范围MAABMATLAB版本全部前提描述所有子系统模块的名称均应符合以下约束条件:形式名称:不得以数字开头不得出现空白间隔不得出现回车符允许的字符名称:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_下划线名称:可使用下划线分离各个部分不得连续使用一个以上的下划线不得以下划线开头不得以下划线结尾理由可读性□工作流□模拟□验证&确认□代码生成最终更改2.20版4.2.2jc_0211:输入模块与输出模块名称可用字符ID:标题jc_0211:输入模块与输出模块名称可用字符优先级强烈建议适用范围MAABMATLAB版本全部前提描述所有输入模块与输出模块的名称均应符合以下约束条件:形式名称:不得以数字开头不得出现空白间隔不得出现回车符允许的字符名称:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_下划线名称:可使用下划线分离各个部分不得连续使用一个以上的下划线不得以下划线开头不得以下划线结尾理由可读性□工作流□模拟□验证&确认□代码生成最终更改2.20版4.2.3jc_0221:信号线名称可用字符ID:标题jc_0221:信号线名称可用字符优先级强烈建议适用范围MAABMATLAB版本全部前提描述所有信号线名称均应符合以下约束条件:形式名称:不得以数字开头不得出现空白间隔不得出现回车符允许的字符名称:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_下划线名称:可使用下划线分离各个部分不得连续使用一个以上的下划线不得以下划线开头不得以下划线结尾理由可读性□工作流□模拟□验证&确认□代码生成最终更改2.20版4.2.4na_0030:Simulink公交车名称可用字符ID:标题na_003