- 博客(120)
- 资源 (3)
- 收藏
- 关注
原创 chhttty个人博客总目录
博主会定期更新博客,记录自己工作、学习过程中的一些思考。对于理论性的内容,博主会根据自己的理解表述出来,如果理解有误,欢迎指出。对于应用性的内容(比如模型仿真、生成代码、脚本编程),博主会尽量把流程写清楚,并展示脚本运行结果或生成代码结果,达到一个可验证和可复现的效果。
2020-04-19 16:43:14 40769 39
原创 Simulink代码生成:数学运算
本文研究了Math Function模块、Trigonometric Function模块和Abs模块的用法,在实践中使用的频率是比较高的。>>返回个人博客总目录。
2024-08-03 11:24:08 908
原创 Simulink代码生成:基本算数运算
本文研究了在Simulink中进行基本的算术运算的模块及其代码,这些在建模中是最常见的。>>返回个人博客总目录。
2024-07-31 21:58:40 889
原创 Simulink代码生成: 基本模块的使用
本文讲了一些基本模块的使用,其实之前已经写了大量的Simulink内容,但是忽略了最基本的东西,所以回来补充一下。>>返回个人博客总目录。
2024-07-27 11:03:50 1542
原创 Simulink代码生成: 基本数据类型
本文研究了Simulink中的浮点型(double、single)、整型(int8、uint8等)和布尔型数据类型。建模时需注意浮点数比较的精度、整数溢出问题以及布尔类型的位域优化,以提升模型效率和可靠性。返回个人博客总目录。
2024-06-19 20:35:39 2500 1
原创 Simulink配置:模型诊断配置
本文介绍了模型诊断配置,通过配置一部分诊断项为error后,有助于工程师减少开发中的问题,并且规范开发流程。>>返回个人博客总目录。
2024-06-15 15:40:32 1744
原创 Matlab编程技巧:导入MDF文件
本文研究了如何用脚本解析MDF文件,将其中的信号回灌到Simulink模型中进行仿真。>>返回个人博客总目录。
2023-12-25 20:59:30 1741 2
原创 C语言编程:最小二乘法拟合直线
本文本文研究通过C语言实现最小二乘法拟合直线。在工程应用中,一次和二次多项式的拟合用的比较多。二次多项式拟合可以参考一次的推导过程和编程过程,需要求解三阶行列式求解三个系数。>>返回个人博客总目录。
2023-08-15 20:45:38 1950
原创 C语言基础:预处理指令的使用
通过#define可以定义一个宏,预处理阶段的时候,如果在代码中遇到一个宏,就会将其替换成宏所对应的内容。函数输入半径,返回圆的面积。其中用到了圆周率,直接将数值3.14写道代码中。这样的数字被称为“魔法数字”。正确的做法是将其定义为一个宏,然后在函数中使用这个宏。3.14这样做有两个好处,首先,其他人阅读代码的时候,对于数字很难理解其中的含义,但是宏定义是可以从字面上知道意义的,可以增加代码的可读性。
2023-07-23 09:34:40 521 1
原创 仿真与测试:通过Signal Builder模块生成输入信号
本文研究通过Signal Builder模块生成输入信号的方法,这种方式比较适合简单的子系统测试,或者一些实际情况下不容易达到的边界条件输入的测试。目录。
2023-02-12 21:06:51 6044
原创 建模规范:命名规范
本文研究MAAB建模规范中的命名规范,同时结合工作实际谈谈博主的理解。本文参考的MAAB规范版本是Version 5.0。文章目录1 命名规范2 命名规范内容2.1 基本规则2.2 企业命名规范1 命名规范命名规范是第一个在MAAB中定义的规范,其中规定了文件夹,模型,变量,接口等应该如何命名。2 命名规范内容2.1 基本规则1)在命名规范中,可以对模块、信号等命名使用的字符只能是以下几种:英文字母大小写:a-z, A-Z阿拉伯数字:0-9下划线:_2)除此之外,都不可以用于命名。例
2022-07-04 19:55:40 4363
原创 Simulink代码生成: 简单状态机及其代码
文章目录1 Simulink中的Chart模块2 状态机建模3 模型仿真4 代码生成5 总结本文研究简单的状态机建模及其生成的代码。1 Simulink中的Chart模块Chart模块用于描述状态之间的跳转关系,在汽车软件开发过程中经常用到。在状态机中需要定义状态、状态间跳转条件、输入输出及本地变量等。本文会用一个简单的例子来研究状态机建模,并通过生成的代码了解其中的原理。2 状态机建模假如现在有一个需求,车速高于某个值的时候,输出变量为运动状态,低于该值的时候为静止状态。针对该问题第一反应是用
2022-05-28 13:19:28 14715 5
原创 Simulink代码生成: 查表模块及其代码
本文描述查表模块的建模并研究生成的代码。文章目录1 Simulink中的查表模块2 查表模块示例模型2.1 设置Table and Breakpoints2.2 设置Algorithm2.3 设置DataType2.4 简单仿真3 代码生成4 总结1 Simulink中的查表模块查表模块中定义了断点和查表值(都是数组)的对应关系,然后通过输入数值在断点中的位置,“查出”对应在查表值中的数值,然后输出。查表模块是汽车软件开发中的一种常用的模块,因为在实际工作中,很多物理量之间的对应关系是难以用数学公式
2022-05-25 15:32:02 13328 3
原创 Simulink代码生成:生成C++类
博主最近在工作中用Simulink生成C++类的代码,因此将一些感悟记录下来。本文通过一个简单的例子研究Simulink生成C++类的代码以及一些相关配置。文章目录1 创建模型2 C++类生成配置及代码生成3 配置类名、函数名、IO传参4 总结1 创建模型首先打开Simulink,随意创建一个简单的模型,如下图。这里建立的控制逻辑比较简单,只是把输入信号放大两倍再输出,在C代码中对应的就是简单的乘以2。2 C++类生成配置及代码生成关于Embedded Coder相关配置本文不再赘述,可以参考
2022-04-08 20:57:14 6843 3
原创 Simulink代码生成:通过Matlab Function集成C函数
本文研究如何在Matlab Function模块中调用外部的C函数,以及一些注意点。文章目录1 问题引入2 简单例程2.1 创建C文件和头文件2.2 在Matlab Function中调用C函数2.3 仿真及代码生成3 其他技巧和注意点1 问题引入博主以前写过一篇博客《Simulink代码生成:通过Legacy Code Tool集成C函数》,可以在Simulink模型中调用外部的C代码。在Matlab Funciton中,用m语言写着代码,突然想要调用一个现成的C文件中的函数是不是也可以呢。答案是肯
2022-03-26 16:37:50 7057
原创 Matlab编程技巧:A*算法仿真
本文通过Matlab编程实现A* 算法,并通过几个简单的例子,单步调试输出A*搜索的过程。文章目录1 A* 算法简介2 Matlab编程实现2.1 输入参数2.2 初始化变量2.3 循环过程2.4 循环后处理1 A* 算法简介A* 算法是一种全局路径规划算法,通过A*算法可以在一个有障碍物的地图中找到从起点到终点的路径。网上关于A* 算法的详细介绍有很多,博主也就不再赘述。推荐想学习的博友看一下这篇博文入门:《A*算法(超级详细讲解,附有举例的详细手写步骤)》,博主看完后有种醍醐灌顶的感觉,就想通过
2022-01-22 12:01:21 15332 12
原创 Matlab编程技巧:通过脚本创建Simulink模块、信号线
本文研究通过Matlab脚本创建模型的方法。文章目录1 相关函数1.1 add_block1.2 add_line1 相关函数根据博主工作经验,一个Simulink控制模型应该是由两大元素构成:模块和信号线。因此,通过Matlab脚本创建模型也有两个函数分别用于创建模块和信号线,本章节会介绍这两个函数。1.1 add_block1.2 add_line...
2022-01-10 20:54:54 12074 2
原创 仿真与测试:通过From Workspace模块导入外部数据
本文研究通过From Workspace模块导入外部数据并进行仿真测试的方法。文章目录1 仿真外部数据2 仿真过程2.1 准备数据1 仿真外部数据在汽车的电控软件开发中,经常会进行实车道路试验或者在公司园区内进行实验。在实验的过程中会通过工具软件采集一些数据(如CANape或INCA)并保存到本地。这些数据可以拿回到办公室,在电脑上用Simulink模型仿真,从而分析其中的问题。这时,就会用到From Workspace模块,把测试的数据导入到Matlab中。后面博主会用简单的例子说明这个模块的用
2021-12-26 09:22:23 18393 4
原创 Simulink建模:PID控制模型
本文研究了PID控制的建模和代码生成。在实际工作中,PID控制可以配合其他策略一起使用,包括对输入输出的滤波,或者结合前馈控制提高响应等等。>>返回个人博客总目录。
2021-12-25 10:19:58 57460 10
原创 Simulink代码生成:通过Chart模块进行多个周期调度
本文研究如何通过Chart模块进行多个周期调度。文章目录1 问题引入2 Simulink建模2.1 Chart模型2.2 触发子系统3 代码生成与分析4 总结1 问题引入在很多以前的博客中,博主用Simulink生成的代码中,包含一个Step函数。在代码编译的过程中会把这个Step函数放入OS调度的函数中,譬如Task_5ms()函数内,这个函数就会每隔5ms被操作系统执行一次。但是博主最近在工作中遇到一个需求是,一个Simulink模型中的不同子系统以不同的周期被调度,但是生成的代码还得是一个st
2021-10-13 21:33:34 14321 8
原创 BLDC控制实验:方波、霍尔、开环、调速、正反转
本文记录博主学习BLDC控制软件的过程。文章目录1 概述2 底层代码生成3 接口及配置代码4 应用层模型及代码生成4.1 换向请求模块4.2 换向等待状态机4.3 六步换相模块4.4 代码生成及调用5 总结1 概述本文是博主学习BLDC控制的第三次实验。在上一篇博客《BLDC控制实验:方波、霍尔、开环、调速、正转》的基础上,实现按键控制电机正反转的功能,更改的地方主要在于应用层模型中:在电机状态机中加入反转等待的状态;在六步换相模块中根据正反转判断导通的开关;在之前博客中已经实现的功能,本文
2021-08-10 20:11:45 3927 2
Autosar支持包.rar
2020-04-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人