软件开发指导-第2章基于模型的设计

第2章基于模型的设计

    • 2. simulink 建模
      • 2.1 建模GUI便捷操作
        • 2.1.1 模块外观
        • 2.1.2 信号线的快速连接
      • 2.2 建模的脚本操作
        • 2.2.1 常用函数
        • 2.2.2 常用的系统常量
        • 2.2.3 matlab 注册方式
        • 2.2.4 常用属性
      • 2.3 存储的设计 cscdesigner
      • 2.4 模块的封装与库的建立
          • 2.4.1.1 快捷方式
          • 2.4.1.2 外形设置
          • 2.4.1.3 界面和参数设置
          • 2.4.1.4 帮助说明 document
        • 2.4.2 库的建立
      • 2.5 模型的自动化仿真
      • 2.6 代码生成技术
        • 2.6.1 代码生成基本原理
        • 2.6.2 tlc 控制
        • 2.6.3 rtw 文件记录
        • 2.6.4 code generate
        • 2.6.5 s-function
          • 2.6.5.1 快速利用已有的代码
        • 2.6.5.2 s-function
      • 2.7 targrlink
        • 2.7.1 基本的API
        • 2.7.2 模块的输入输出
      • 2.8 常用算法
        • 2.8.1 一阶滤波
        • 2.8.2 回迟滞debounce
        • 2.8.3 平滑切换
        • 2.8.4 二阶滤波
      • 2.9 建模规范
        • 2.9.1 命名规则
        • 2.9.2模型architecture
        • 2.9.3 注释
        • 2.9.4 测试

持续完善中。。。。。

参考

  • simulink 帮助
  • 嵌入式开发书籍
    Simulink仿真及代码生成技术入门到精通
    基于模型的设计及其嵌入式实现
  • MAAB建模规范

2. simulink 建模

2.1 建模GUI便捷操作

2.1.1 模块外观

  • 颜色
  • 封装外形

2.1.2 信号线的快速连接

2.2 建模的脚本操作

2.2.1 常用函数

  • find_system
  • set_param
    • 设置block的通用属性
  • rtwbuild 代码生成
  • get_param 设置参数
  • load_system
  • open_system
  • disableimplicitsignalresolution:设置信号线为解析

2.2.2 常用的系统常量

varible meanings varible meanings
matlabroot 安装目录 gcs 当前模型系统
bdroot 当前模型 top path gcb 当前选中的模块
gcbh 当前选中模块handle

2.2.3 matlab 注册方式

  • simulink labrary :slblock.m

  • simulink memu: sl_customiztion.m

  • matlab 启动:matlabrc.m ,run control

  • custom storage class:csc_registration.m

2.2.4 常用属性

帮助了查询Common Block Properties关键词

属性 含义 范围
filepath bdroot
Name
showname
handle
AttributesFormatString 自定义显示的内容
BlockType block
Type line block
Position [50 250 125 275] 四个点坐标
PortConnectivity 与之连接的模块handle
LinkStatus block

2.3 存储的设计 cscdesigner

​ cscdesigner:custom storage class

structure

graph RL
csc(custom storrage class)
C(package)
C-->csc
C-->Sec(section)
subgraph custom storrage class
	csc-->D(data)
	csc-->Ini(初始化)
	Ini-->Macro
	Ini-->I(初始值)
	Ini-->Dyn(动态)
end
subgraph section
D-->Sec
Sec-->Post(Post-memory-section pragma)
Sec-->Pre(Pre-memory-section pragma)
Sec-->Com(注释:/* */)
Sec-->Q(修饰词:const volite static)
end

2.4 模块的封装与库的建立

2.4.1.1 快捷方式

ctrl + M :快速封装

ctrl + U:快速打开

2.4.1.2 外形设置
  • port :

    port_label('output', 1, 'xy')
    port_label('input',1,'num1')
    
  • 文字显示:disp

  • 多功能文本:

 text(5,10, 'Reena')
  • 多边形:

    patch([0 10 20 30 30 0], [10 30 20 25 10 10],[1 0 0])
    
  • 线段:

    plot([10 20 30 40], [10 20 10 15])
    
  • 字体颜色:

    color('red')
    
  • 传递函数:droots([-1], [-2 -3], 4)

2.4.1.3 界面和参数设置

parameter

  • edit 可输入参数
  • label 表示

initialize

  • 调用parameter 定义的参数
  • evalin 执行字符串中的代码
  • set_param 和 get_param 进行属性设置
2.4.1.4 帮助说明 document
  • 名字
  • 解释

2.4.2 库的建立

  • 建立library 的模型

    • 模块封装

    • 实现本地改动,link设置为none

      %copyFcn
      
      
  • slblock.m

    内容如下

    function blkStruct = slblocks
    		% This function specifies that the library should appear
    		% in the Library Browser
    		% and be cached in the browser repository
    
    		Browser.Library = 'mytest';
    		% 'mylib' is the name of the library
    		Browser.Name = 'pyb';
    		% 'My Library' is the library name that appears in the Library Browser
    
    		blkStruct.Browser = Browser;
    

2.5 模型的自动化仿真

2.6 代码生成技术

2.6.1 代码生成基本原理

​ s函数的使用,动态库,tlc文件支持代码生成

2.6.2 tlc 控制

​ 常用的语法,流控制,记录添加,函数的定义

2.6.3 rtw 文件记录

​ 类似Json数据格式的一致结构化存储方式

2.6.4 code generate

  • rtwbuild 函数

    ​ 模型生成:

    rtwbuild(model)
    

    ​ 子系统的代码生成:

rtwbuild(‘ObsrVehMtn_M/ObsrVehMtn’,‘Mode’,‘ExportFunctionCalls’)
```

GUI

C/C++ Code
Build This Subsystem

2.6.5 s-function

user-defined module is system function for

2.6.5.1 快速利用已有的代码

主要的方法

legacy_code('help')
specs = legacy_code('initialize')
legacy_code('sfcn_cmex_generate', specs)
legacy_code('compile', specs, compilerOptions)
legacy_code('generate_for_sim', specs, modelname)
legacy_code('slblock_generate', specs, modelname)
legacy_code('sfcn_tlc_generate', specs)
legacy_code('rtwmakecfg_generate', specs)
legacy_code('backward_compatibility')
  • 将原有的c代码函数,转化为s-function 模块,用于simulink模型的构建
%  legacy_code('initialize') 返回值的结构
SFunctionName: ''
InitializeConditionsFcnSpec: ''
              OutputFcnSpec: ''
               StartFcnSpec: ''
           TerminateFcnSpec: ''
                HeaderFiles: {}
                SourceFiles: {}
               HostLibFiles: {}
             TargetLibFiles: {}
                   IncPaths: {}
                   SrcPaths: {}
                   LibPaths: {}
                 SampleTime: 'inherited'
                    Options: [1x1 struct]
  • 生成s-function
    前提:mytest.hmytest.c 在matlab的setpath 目录下,包含mytest(uint8 u1, uint8 u2)
   def = legacy_code('initialize');
   def.SFunctionName = 'test_SF';
   def.OutputFcnSpec = 'uint8 y1 = mytest(uint8 u1, uint8 u2)';
   def.HeaderFiles = {'mytest.h'};
   def.SourceFiles = {'mytest.c'};
   legacy_code('sfcn_cmex_generate', def);% 生成c 代码的s-function
   legacy_code('compile', def); % 编译c 代码为 Mex(matlab execu)
  • 生成block 并插入到模型中
legacy_code('slblock_generate', def);
  • 生成tlc文件用于代码生成

    2.6.5.2 s-function

    • 模板
      • sfuntmpl_doc
      • sfuntmpl_doc

2.7 targrlink

基本的控制文件

  • 数据词典
  • A2l 样式表

2.7.1 基本的API

a2l的原理和API

dsdd_export_a2l_file('Application', [CodegenFunction '_Tmp'],... % 模型名字
        'StyleSheet',   A2lStylesheetName,... % A2L的格式
        'TargetConfig', TargetConfig,...
        'File','sample.a2l'],... % 文件的名字
        'ProjectFrame', 'on',... % a2l的 project 项目
        'OverwriteCalProperties', 'on',...
        'MergeA2lModules', 'on',...
        'UseLookupStructures', 'off');

2.7.2 模块的输入输出

2.8 常用算法

2.8.1 一阶滤波

2.8.2 回迟滞debounce

2.8.3 平滑切换

2.8.4 二阶滤波

2.9 建模规范

2.9.1 命名规则

  • SW-C的命名规则

  • 变量名的命名规则

    • 缩写库:首字母,辅音缩写

    • 场景或模块,部件,数据类型,物理含义,具体描述

      一般而言,SW-C的名字代表使用场景或功能;数据类型可以直接跟物理含义挂钩,每一种物理量固定一种数据类型。

      VmcBMS_UAtcHi

2.9.2模型architecture

  1. Top layer / root level

    SW-C

  2. Trigger layer

    simulink的 triger,enable等

  3. Structure layer

    功能进行分割:如滤波

  4. Data flow layer

2.9.3 注释

block注释

​ 模块的参数需要显示出来

模块 标注内容
saturation up down的限值

SW-C的功能注释

  • 常用标定量
  • 主要的功能
  • change point

2.9.4 测试


你可能感兴趣的:(汽车软件开发)