首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

建模规范:命名规范

  • 23-09-22 01:24
  • 3623
  • 13889
blog.csdn.net

本文研究MAAB建模规范中的命名规范,同时结合工作实际谈谈博主的理解。

文章目录

  • 1 命名规范
  • 2 命名规范内容
    • 2.1 基本规则
    • 2.2 Model Advisor检查项
    • 2.3 Model Advisor检查示例
  • 3 企业命名规范
    • 3.1 企业命名规范详解
    • 3.2 通过脚本检查命名规范
  • 4 总结

1 命名规范

命名规范是第一个在MAAB中定义的规范,其中规定了文件夹,模型,变量,接口等应该如何命名。

2 命名规范内容

2.1 基本规则

1)在命名规范中,可以对模块、信号等命名使用的字符只能是以下几种:

  • 英文字母大小写:a-z, A-Z
  • 阿拉伯数字:0-9
  • 下划线:_

2)除此之外,都不可以用于命名。例如以下几点一定不允许:

  • 不能在路径或模块名等出现中文字符串,有可能解析出错;
  • 不能出现空格、回车符、括号等特殊字符,例如JMAAB(Model).slx;
  • 名称开头必须是字母,不能是数字或者下划线,例如001_JMAABModel.slx;
  • 不能连续写两个下划线,例如 JMAAB__Model.slx;

3)字符串长度不能过长,应该小于63;

2.2 Model Advisor检查项

在Matlab 2018a的Model Advisor中,以下几条检查项可以对文件、接口等进行命名规范检查:

Check IDDescription
ar_0001Check file names
ar_0002Check folder names
jc_0201Check subsystem names
jc_0211Check port block names
jc_0221Check character usage in signal labels
jc_0231Check character usage in block names

这些检查条目位于Model Advisor检查器中:
在这里插入图片描述

2.3 Model Advisor检查示例

1)新建一个模型,其中建模如下:
在这里插入图片描述
上图模型中,有两点命名上的错误:

  • 1号输入端口以下划线开头;
  • 输出信号线以数字开头;

这两点问题都可以用Model Advisor检查出来。

2)运行上文的Model Advisor检查项,得出结果如下:
在这里插入图片描述
左侧的检查项中有两条变成了Warning的感叹号,4条通过。

3)点击其中一条Warning,就可以看到具体是模型的什么位置出现了问题,并且可以通过超链接直接定位过去;
在这里插入图片描述

3 企业命名规范

上面讲的都是MAAB文档中的基本规范条目,十分易于理解。在企业实际工作中,会以此为基础,制定出自己的命名规范。如此可以便于工程师的理解和交流。下面博主会举例说明自己呆过的公司是怎么做的。

3.1 企业命名规范详解

1)善于使用名称的缩写,将模型名缩写成固定长度的几个字符,例如下图;
在这里插入图片描述
图中,车速控制模块VehicleSpeedControlModule取了四个首字母,将模型名命名为VSCM。

2)对于输入输出接口,需要体现出除了变量本身含义以外的信息;例如数据类型是uint8还是uint16,作用域是在哪个模块中;

例如车速是CAN信号接收到的,由CSDM模块滤波后输出的全局变量(用G表示Global),物理单位是kmph(公里每小时),就可以命名为 G_CSDM_kmph_VehSpd,而不是直接命名为VehicleSpeed。这样命名就可以一眼看出来。

变量类型物理单位模块描述名称
全局变量kmphCSDMVehSpdG_CSDM_kmph_VehSpd
标定量enum/GearPositionP_enum_GearPos
宏定义enum/ReverseGearM_enum_ReverseGear
输入接口rpm/EngineSpeedGet_rpm_EngineSpeed
输出接口Nm/EngineTorqueSet_Nm_EngineTorque

在非Autosar架构的应用层模型中,通常把模型和模型之间的接口做成全局变量,底层到应用层的接口为Get_XXX()函数,应用层到底层的接口为Set_XXX()函数,标定量或常量做在Const模块中。基于以上这些原则,可以制定企业的命名规范。更进一步,还可以自己开发ModelAdvisor检查工具,检查模型中的命名规范是不是符合企业规范。

3.2 通过脚本检查命名规范

MAAB规范可以通过Model Advisor检查,自定义的命名规范也可以自己开发脚本,发布到Model Advisor检查项目中。博主通过一个脚本演示如何检查模型中的Constant模块是否符合标定量命名,发布到Advisor的过程可以参考博主别的博客。

1)首先,用find_system函数在模型中搜索出所有Const模块;

% 查找模型中的Constant模块
Const_Cell = find_system(gcs,'BlockType','Constant');
  • 1
  • 2

2)接着,循环所有的数组,通过调用子函数检查Constant模块中的值是否合法;

% 循环检测Constant模块中的值
for i = 1:length(Const_Cell)
    Const_Path = Const_Cell{i};
    Const_Value = get_param(Const_Path,'Value');
    if(CheckName(Const_Value))
        continue;
    else
        InvalidNameList{end+1} = Const_Path;
    end
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3)调用的子函数判断首字母是否为P,以及是否含有两个下划线;

function IsValidName = CheckName(Value)
if(Value(1) ~= 'P') %是否以P开头
    IsValidName = false;
elseif(length(strfind(Value,'_')) ~= 2) %是否包含两个下划线
    IsValidName = false;
else
    IsValidName = true;
end
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

最终,整个脚本如下:

function InvalidNameList = CheckCaliName()
InvalidNameList = {};
% 查找模型中的Constant模块
Const_Cell = find_system(gcs,'BlockType','Constant');
% 循环检测Constant模块中的值
for i = 1:length(Const_Cell)
    Const_Path = Const_Cell{i};
    Const_Value = get_param(Const_Path,'Value');
    if(CheckName(Const_Value))
        continue;
    else
        InvalidNameList{end+1} = Const_Path;
    end
end
end
function IsValidName = CheckName(Value)
if(Value(1) ~= 'P') %是否以P开头
    IsValidName = false;
elseif(length(strfind(Value,'_')) ~= 2) %是否包含两个下划线
    IsValidName = false;
else
    IsValidName = true;
end
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

4 总结

本文研究MAAB建模规范中的命名规范,在工作中应该遵守MAAB以及企业规范,正确地命名变量或信号名。

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/122151670"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top