萧山城市建设网站,厦门高端网站建设公司,海南哪家公司做网站做的好,移动端网站欣赏1 数据对象的创建
CtrlH打开Model Explorer#xff0c;在Base workspace中点击工具栏add#xff0c;出现如下界面#xff0c; 可以看到Simulink提供了多种数据类型
Matlab Variable#xff1a;Simulink.Parameter#xff1a;使用该数据对象表示工程应用中的标定量Simuli…1 数据对象的创建
CtrlH打开Model Explorer在Base workspace中点击工具栏add出现如下界面 可以看到Simulink提供了多种数据类型
Matlab VariableSimulink.Parameter使用该数据对象表示工程应用中的标定量Simulink.Signal用于生成观测量Simulink.NumericType指定浮点数、整数通常用于数据定点化处理Simulink.AliasType为数据类型创建别名 常用的也就是这些具体还有其他的可以参考help。 添加两个parameter如下图所示 将参数的名字改为标定量的名字如下图通常标定量命名规则按三段来分block_function_uint_C 然后就是根据需求对数据类型的处理在右边可以进行选择如下图 试想如果全用这种方式来进行数据的管理有多累可以采用excel的方式他们用python可以实现当然可否用matlab来读取excel写相应脚本已完成matlab来处理 然后建立相应的观测量如下图 使用constant和out建立如下模型将constant参数名改为标定量的名称 右键输出信号的信号线选择properties命名为观测量按照依相的方式也将观测量做出一个类似于constant的模块需要好好研究一下 PS需要注意的是两个标定量均为uint8类型而观测量为uint16这样simulink会出现编译错误因此可以在加法模块上选择output data type为下图所示这样就强制与后面的类型相匹配。 因此要想做出自己的模型开发库要做出标定量模块的封装、常用算数符号封装与后面数据类型匹配、观测量封装后续继续添加。
2 Code的配置 至此便完成了一个简单的模型ctrlE打开configuration parameter solve界面下选择定点步长因为是在单片机上运行。
选择optimizationSignals and Parameters选取Inline Parameter为什么
选择Code Generation选择ert.tlc打钩generate code only
ReportCreate code generation report
Interfacedata exchange选择asap2生成相应a2l不包含头部分
最后进行编译ctrlB完毕后生成相应的报告 在与基础软件集成时要将Model files和Utility files的文件全部放到基础软件中。还可以优化数据类型的定义 3 自动在生成的代码中添加#pragma语句
3.1 为什么添加#pragma语句 通常情况下编译器会给变量自动分配内存地址但是标定来说标定量和观测量必须放到指定位置才能实现标定和观测的功能 #pragma语句就可以实现上述功能。 不同编译器对于地址的分配的语句不同例如hightec从该工程的ld文件中可以看到区域名。 那么在拿到应用层代码之后首先就是要对变量进行地址分配编译完成后。 但是实际上在工程应用中标定量的定义常用到ConstVolatile、观测量常用到Volatile
3.2 const, volatile释义 const含义是“请做为常量使用”而并非“放心吧那肯定是个常量”。 volatile的含义是“请不要做自以为是的优化这个值可能变掉的”而并非“你可以修改这个值”。
1const, volatile的作用以及起作用的阶段
const只在编译期有用 在运行期无用。const在编译期保证在C的“源代码”里面没有对其修饰的变量进行修改的地方如有则报错编译不通过而运行期该变量的值是否被改变则不受const的限制。
volatile在编译期和运行期都有用 在编译期告诉编译器请不要做自以为是的优化这个变量的值可能会变掉 在运行期每次用到该变量的值都从内存中取该变量的值。
2const, volatile同时修饰一个变量
合法性 “volatile”的含义并非是“non-const”volatile 和 const 不构成反义词所以可以放一起修饰一个变量。 同时修饰一个变量的含义 表示一个变量在程序编译期不能被修改且不能被优化在程序运行期变量值可修改但每次用到该变量的值都要从内存中读取以防止意外错误。
3.3 模型生成代码自动添加#pragma语句 如果数据很少的、或者应用层软件标定量和观测量全部集成在一个头文件和c文件中使用手动的方式进行添加也可以但是一旦数据量剧增或者变量在不同文件下这样在做处理时就会比较麻烦因此考虑在代码生成时将变量集中到一个.h .c文件并且自动添加相应的#pragma语句。
Simulink数据类型里提供了这样一种方式 首先创建一个数据类型例如 Demo_Mea_mp Simulink.Signal, 在Storage class下选择Volatile类型。会弹出Custom attribute对话框输入想生成的文件名.h和.c。生成的代码如下 可以看到能够将变量统一放到同一文件但是还是需要手动添加#pragma语句。 如何自动添加该语句呢我们可以来分析一下Simulin.Parameter这个数据类型的特点。 使用cscdesigner打开自定义类编辑器 在memory section中可以看到 在这里添加#pragma语句即可但是simulink自带的类又全是只读的所以需要自己建立一个类参考matlab官网helpDefine Data Classes。 首先找到路径%matlabpath%\toolbox\simulink\simulink\dataclasses 在此目录下建立一个文件夹以UserName命名 在App中添加Parameter和Signal两个文件夹可以将mpt中的parameter.m、signal.m复制过来进行修改。 需要修改的几个地方 将custom和global注释掉不然会报错why
输入指令cscdesigner(‘App’) 然后选择编辑数据类型的特性每一项都需要。这里我们把ConstVolatile进行处理在Memory section中输入相应的#pragma语句即可。 最后编译生成的文件有 代码如下 4. 自定义生成完整A2L文件 to be continue... 汽车标定合集
汽车标定技术(一)XCP概述-CSDN博客
汽车标定技术(二)--基于XCP的标定测量实战-CSDN博客
汽车标定技术(三)--XCP协议如何支持测量功能-CSDN博客
汽车标定技术(四)--问题分析:多周期测量时上位机显示异常-CSDN博客
汽车标定的ASAM MCD-1 POD-CSDN博客