使用TSMaster从零打造车辆控制器HIL实时仿真系列2-ECU嵌入式代码生成与TSMaster小程序集成

本文主要是介绍使用TSMaster从零打造车辆控制器HIL实时仿真系列2-ECU嵌入式代码生成与TSMaster小程序集成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天我们继续分享使用TSMaster从零打造车辆控制器HIL实时仿真系列第二章节。接下来我们亲手设计实时仿真也就是HIL的环节,为了让示例通俗易懂,我们选取了CARSIM自带的ABS控制器作为仿真的对象。

 

一、Simulink模型

我们打开CARSIM,然后选择Simulink模型,对开路面Multi-port SLX,这个示例使用的是一辆不带ABS系统的小轿车,它是前驱的配置。

 

我们来看procedure,也就是驾驶员控制的部分,初始的速度是65公里每小时,自动压力是15兆帕,在0.3秒内完成也就是我们常说的150bar,档位控制是在合理的范围内自动切换,而转向部分则交给驾驶员模型进行闭环控制。

 

路面部分为对开路面,从3米开始,一侧的系数是0.2,另外一侧是0.5,回到主页,点击Send to Simulink,等待Simulink启动完毕,Simulink模型则是今天的重点。

 

二、ABS控制算法

我们可以将这个控制算法生成嵌入式代码,下载到带ABS功能的ECU中运行,可以看到这个算法模型包含了一个CARSIM的S function作为车辆模型的接口,还有一个简化版本的基于漂移率的轮缸压力控制策略以及后轴低选策略,还有制动性模型中的制动力分配等等。

 

我们运行下这个模型,可以看到,这个轮速与车速的图形窗口中绘制了在对开路面上的ABS自动循环,而这个轮缸压力窗口中,则是四个车轮的轮缸压力控制曲线,这是一个简易版本的控制算法。制动力分配,也就是前轴压力比上后轴压力是1比0.4,很容易判断出,制动结束后,压力上升到15兆帕的两个车轮为前轮压力,而压力上升到6兆帕的是后轮压力。

 

二、RT的低成本替代方案——软件HIL

大家可能注意到在Simulink环境中,运行的时间是10秒,然而点击运行后实际上只用了很短的时间就跑完了整个仿真,说明此仿真的过程并不是实时的。Simulink所起的作用仅仅是按照每个step来执行算法,收集每个step产出的数据并将其绘制在图形窗口里而已。如果我们想在ABS制动过程中像整车总线上面实时发送ABS激活的flag或者是轮缸压力值,这些都是无法做到的。而在拥有的CarSim RT版本的环境中,该模型可以被编译为dll,下载到实时系统中运行,从而实现模型算法与真实世界的交互,这个解决方案是目前被广泛采纳的仿真模式。各大主机厂和零部件厂所依赖的HIL仿真也是基于此方案展开。然而此方案存在两个问题:一是成本高,不但需要车辆动力学软件本身的license,还需要RT的license;二是部署的过程很浪费时间,在CarSim中修改参数之后需要重新部署,自动和程度不高。而在本例中,我们通过TSMaster来模拟ABS算法,让ABS算法在TSMaster的实时环境中运行,运行过程中可以通过CAN接口或者是连接在个人电脑上的IO接口等等,与外部的世界进行交互,再通过自研的实时引擎接管CarSim的仿真过程实现车辆模型在电脑上的实时运行,如此我们便得到了RT的低成本替代方案——软件HIL。

 

三、实现ECU嵌入式代码生成与TSMaster小程序集成

下面我们从零一步步基于TSMaster来搭建ABS算法的实时仿真环境。第一步是要通过Simulink将ABS的算法自动生成嵌入式代码,将它作为一个小程序运行在TSMaster的实时环境中。

我们首先将这个模型另存,然后需要修改路径,让代码的生成放置在这个新的路径中。

 

随后我们需要在模型上做一些修改让其可以生成嵌入式代码。首先就需要删除示波器等等一系列无用的控件,再删除CarSim的s function,将s function的接口转化为in 和 out。

 

为了正确的生成嵌入式代码,还需要在代码生成上做一番修改,打开配置,首先是stop time,设置为inf,然后是salvar,再次使用的是定步长,step我们使用了业界通用的5毫秒。

 

接下来来到代码生成的环节,Target file自然是ert,我们还需要转到interface,在这里将continuous time勾上,因为轮缸压力模型中间用到的是传递函数,是连续状态,随后按Ctrl+B生成代码,很快代码就生成完毕了。

 

那么在这份代码中,我们需要将ABS.c.h以及一些列的其他的头文件复制粘贴到TSMaster的小程序的文件夹中间参与编译过程。

这篇关于使用TSMaster从零打造车辆控制器HIL实时仿真系列2-ECU嵌入式代码生成与TSMaster小程序集成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/409569

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount