使用TSMaster从零打造车辆控制器HIL实时仿真系列4

本文详细介绍了如何利用TSMaster结合CarSim SDK来控制动力学模型,实现车辆的加速与紧急制动仿真。通过设置初始化、运行和结束运行的SDK函数,以及自定义的acc和brake API,演示了在车速超过80kph时进行紧急制动的过程。此外,还展示了如何通过监控变量观察轮速、压力等关键数据,并在图形界面中展示仿真结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天我们接着上一章节的内容继续介绍如何基于TSMaster打通ECU算法与整车模型之间的桥梁。

 一、SDK融入TSMaster运行环境

由于此视频采用了CarSim controller自带的CarSim engine客户端,需要对代码库做一些配置,也就是需要引用CarSim controller开发包的相关sdk文件。我们打开ABS算法小程序的代码库向上进入common文件夹,这个文件夹可存放多个小程序公共的头文件和代码文件,我们将SDK文件拖入此文件夹中。

接着转到全局定义中,第一行代码,引用一个C++头文件 #include "CarSimAPIUtilities.hpp"

 随后点击编译,可以看到,SDK也融入了TSMaster的运行环境中。

二、SDK控制动力学模型

接下来我们就可以通过调用SDK来轻松控制动力学模型了。

我们可以使用CarSim engine自带的这 47 个API函数来操作CarSim,当然也可以选用基于CarSim engine开发的SDK来实现,相比起来SDK的函数更加简洁,它将整个 CarSim的控制分为三个阶段:初始化、运行、和结束运行。

初始化函数名为 callback_setup,放在程序启动事件中;

 运行函数名为 callback_start_carsim,放在step函数中,并且让它只执行一次;这需要再申请一个全局变量 vToStart,来实现单次操作。

 

结束运行函数名为 callback_teardown,放在程序停止事件中;

写完后我们编译程序,运行程序。

三、加速车辆仿真试验

接下来我们尝试加速车辆,并在车速高于80kph时,紧急制 动,要完成这个操作,只需要在我们的ABS小程序中,再自 定义两个API函数即可,我们将这两个函数分别命名为acc和brake

在acc中,我们操纵油门,此时需要到CarSim controller

中拷贝输入变量名,throttle,cs-

>IMP_THROTTLE_ENGINE = 0.6;

 在brake中,我们模拟驾驶员以150 bar的压力踩下制动踏板进行紧急制动,这就需要设置主缸压力为15MPa,我们设置一个全局变量 vPMC 来接收这个主缸压力,同时,还需要到全局定义中声明这个 vPMC。

 为了对比有无ABS的制动效果,我们首先尝试没有ABS算法的情况,那么这个压力将直接作用在四个轮缸上,这里还需声明一个变量 vHasABS,默认为假。

 接着来到step函数中,通过 vHasABS 来区分算法的执行与否,若没有执行算法,则直接赋值轮缸压力。

完成逻辑之后,我们需要观测轮速和压力,这些变量都来自于整车模型,如何观测呢?我们可以使用小程序的变量将其表达出来。

 转到变量组上,点击右键添加变量表,依次输入车速,行驶距离,油门,各个轮速和各个压力值。点击确定后,一系列变量变申明好了,与全局定义不同的是,这些变量是系统变量,可以被其他小程序,或是被graphics或者面板等等窗口获取并自动绘制曲线。

我们回到step函数,需要依次对这些系统变量进行赋值,赋值使用set操作

v.set(cs->VX); station.set(cs->STATION);

throttle.set(cs->IMP_THROTTLE_ENGINE); vFL.set(cs->VX_L1);

vFR.set(cs->VX_R1); vRL.set(cs->VX_L2); vRR.set(cs->VX_R2);

pFL.set(cs->IMP_PBK_L1); pFR.set(cs->IMP_PBK_R1);

pRL.set(cs->IMP_PBK_L2); pRR.set(cs->IMP_PBK_R2);

随后运行程序,打开系统变量表,就可以看到我们为这个小程序添加的一系列监控变量。

 我们打开graphics,将图形分为三栏,上栏显示速度,中栏显示压力,下栏显示油门和行驶距离等信息,随后添加各个系统变量进行观测。

 再转到自动化模块中,将我们现有的逻辑做一些修改,也就是启动后等待车辆加速到80公里每小时,再进行制动,只有制动到车速为0时,才停止仿真。

### HIL仿真软件列表 HIL(Hardware-in-the-Loop)仿真是一种用于验证嵌入式控制系统性能的技术,广泛应用于汽车、航空航天和其他工业领域。以下是常见的HIL仿真相关软件及其功能概述: #### 1. **CANoe** CANoe 是一种强大的实验管理和总线仿真工具,支持多种协议(如 CAN、LIN 和 Ethernet),并能够模拟复杂的通信环境。它可以与其他仿真工具集成,完成整车通信网络的仿真测试[^2]。 #### 2. **dSPACE Simulation Software (ASM)** dSPACE 提供了一套完整的 HIL 测试解决方案,其核心组件 ASM(Automotive Simulation Models)可以用来创建高精度的动力学模型和场景仿真。这些模型可以直接运行在 dSPACE 的 HIL 平台上,适用于自动驾驶和 ADAS 功能的测试[^3]。 #### 3. **Prescan** Prescan 是一款专注于自动驾驶和 ADAS 开发的场景仿真软件。通过 Prescan,用户可以定义复杂的真实世界驾驶场景,并将其与 HIL 系统连接起来,从而实现闭环测试。Prescan 常常与 CarSim 或其他动力学仿真工具联合使用[^1]。 #### 4. **CarSim/VehicleSim** CarSim 主要用于车辆动力学建模,提供精确的车辆行为预测能力。它可以通过接口与 HIL 设备相连,在硬件环境中重现虚拟道路条件下的动态响应[^3]。 #### 5. **MATLAB/Simulink** 作为行业标准的建模仿真平台之一,MATLAB/Simulink 支持从 MIL 到 SIL 再到 HIL 的全流程开发。特别是在 HIL 阶段,Simulink Real-Time 能够生成实时执行代码并与物理硬件交互[^4]。 #### 6. **TSMaster** TSMaster 是由国内厂商开发的一款综合性 ECU 开发调试工具,具备强大的信号监控分析能力和快速原型设计功能。当涉及到具体的 ECU HIL 实施时,TSMaster 可以帮助构建详细的信号数据库并通过 RBS 自动生成所需数据流[^4]。 #### 7. **DYNA4** DYNA4 是专门针对底盘控制系统的动力学仿真器,特别适合于制动系统、转向系统等功能模块的 HIL 测试需求。它的优势在于高度逼真的机械结构再现效果[^1]。 --- ### 示例代码:配置 TSMaster 进行简单 HIL 设置 以下是一个利用 Python API 对接 TSMaster 工具的基础脚本示例: ```python from ts import TsCanLib, TsBusTool def setup_hil_environment(): can_lib = TsCanLib() bus_tool = TsBusTool() # 初始化 CAN 总线通道 channel_index = 0 bitrate_kbps = 500 can_lib.can_channel_open(channel_index) can_lib.can_set_baudrate(bitrate_kbps) # 加载 DBC 文件 dbc_path = r"C:\path\to\dbc_file.dbc" bus_tool.load_dbc(dbc_path) setup_hil_environment() ``` 此代码片段展示了如何初始化 CAN 总线以及加载必要的DBC文件来准备一个基本的 HIL 测试环境。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TOSUN同星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值