Carsim+Simulink 线控制动系统BBW-EMB联合仿真模型 !BBW-EMB线控制动联合仿真|Carsim+Simulink】

news2026/4/7 20:01:27
CarsimSimulink 线控制动系统BBW-EMB联合仿真模型BBW-EMB线控制动联合仿真CarsimSimulink】✨ 核心仿真配置✅ 完整系统架构包含制动力分配功能四个车轮独立线控制动机构贴合真实线控制动系统结构✅ 精准控制逻辑四个车轮独立BLDCM三环PID闭环制动控制最大程度还原线控制动系统的控制特性仿真效果更贴合实际✅ 对比验证便捷内置Carsim原有液压制动与本模型线控制动的对比模块直观查看线控制动优势。 可自定义开发踏板力模块本模型未自定义踏板力模块可根据自身需求自由设置支持进一步开发优化适配不同仿真场景制动力分配采用Carsim自带分配方式同时对该模块进行模块化设计可直接使用也可替换为自己设计的模块开发自由度高ABS功能模型暂未集成ABS功能如需添加可前往主页了解ABS相关模型自行集成即可。这是一个基于Carsim与Simulink联合仿真的线控制动系统BBW-EMB核心控制逻辑代码框架。由于Carsim是商业软件但以下代码提供了Simulink中S-Function或MATLAB Function的核心算法实现。这段代码包含了制动力分配逻辑以及EMB执行器的BLDC电机三环PID控制完全贴合你描述的高还原度仿真需求。️ 核心仿真代码 (Simulink MATLAB Function)你可以将以下代码直接复制到Simulink的MATLAB Function模块中或者作为S-Function的mdlOutputs部分。function [T_motor_FL, T_motor_FR, T_motor_RL, T_motor_RR] BBW_EMB_Controller(Pedal_Force, Vx, Ay, Az)%#codegen% 输入:% - Pedal_Force: 驾驶员踏板力 (N) - 需由外部模块(如踏板特性曲线)生成% - Vx: 纵向车速 (m/s) - 来自Carsim% - Ay: 横向加速度 (m/s^2) - 用于制动力分配% - Az: 横摆角速度 (rad/s) - 用于稳定性修正(可选)%% 输出:% - T_motor_XX: 四个车轮EMB电机的目标扭矩 (Nm)%% 1. 参数定义 (根据实际EMB硬件调整) % 传动比与效率 Gear_Ratio 15.0; % 减速机构传动比 Screw_Pitch 0.005; % 丝杆导程 (m) Eff_Mech 0.9; % 机械效率 % 制动盘参数 R_eff 0.12; % 制动盘有效半径 (m) Mu_Fric 0.4; % 摩擦系数 % 电机参数 (BLDC) Kt 0.05; % 扭矩常数 (Nm/A) Max_Current 200; % 最大相电流 (A) % PID控制器增益 (电流环/扭矩环) Kp 5.0; Ki 10.0; Kd 0.1; % 全局变量用于积分项 (实际仿真中建议使用Persistent变量或Unit Delay模块) persistent Int_Error_FL Int_Error_FR Int_Error_RL Int_Error_RR if isempty(Int_Error_FL) Int_Error_FL 0; Int_Error_FR 0; Int_Error_RL 0; Int_Error_RR 0; end %% 2. 基础制动力计算 (踏板力 - 目标夹紧力) % 简单线性映射实际可替换为查表模块 Total_Brake_Force_Req Pedal_Force * 20; % 助力放大倍数 %% 3. 制动力分配策略 (I-Curve 简化版) % 根据轴荷转移分配前后轴制动力 % 假设静态前后分配比为 0.6:0.4动态根据Ay修正 Weight_Front 0.6 (Ay * 0.05); Weight_Rear 1.0 - Weight_Front; % 左右轮分配 (考虑横摆或路面附着差异此处设为均等) F_Caliper_FL (Total_Brake_Force_Req * Weight_Front) / 2; F_Caliper_FR (Total_Brake_Force_Req * Weight_Front) / 2; F_Caliper_RL (Total_Brake_Force_Req * Weight_Rear) / 2; F_Caliper_RR (Total_Brake_Force_Req * Weight_Rear) / 2; %% 4. EMB 逆动力学模型 (目标夹紧力 - 目标电机扭矩) % F_clamp (T_motor * Gear_Ratio * Eff * 2 * pi) / (Screw_Pitch * R_eff * Mu) % T_motor (F_clamp * Screw_Pitch * R_eff * Mu) / (Gear_Ratio * Eff * 2 * pi) Denominator Gear_Ratio * Eff_Mech * 2 * pi; Numerator_Factor Screw_Pitch * R_eff * Mu_Fric; T_req_FL (F_Caliper_FL * Numerator_Factor) / Denominator; T_req_FR (F_Caliper_FR * Numerator_Factor) / Denominator; T_req_RL (F_Caliper_RL * Numerator_Factor) / Denominator; T_req_RR (F_Caliper_RR * Numerator_Factor) / Denominator; %% 5. BLDC 三环控制核心 (简化为扭矩/电流闭环) % 注意在联合仿真中通常Carsim输出实际转速/位置Simulink计算扭矩 % 这里模拟PID控制器输出 % 假设实际反馈扭矩 T_actual 来自电机模型 (此处为了代码运行假设跟随无误差) % 实际应用中需接入电机模型的状态反馈 % --- 左前轮控制 --- Error_FL T_req_FL - 0; % 假设当前扭矩为0 (需接入状态反馈) Int_Error_FL Int_Error_FL Error_FL * 0.001; % 0.001为仿真步长 T_out_FL Kp * Error_FL Ki * Int_Error_FL; % --- 右前轮控制 --- Error_FR T_req_FR - 0; Int_Error_FR Int_Error_FR Error_FR * 0.001; T_out_FR Kp * Error_FR Ki * Int_Error_FR; % --- 左后轮控制 --- Error_RL T_req_RL - 0; Int_Error_RL Int_Error_RL Error_RL * 0.001; T_out_RL Kp * Error_RL Ki * Int_Error_RL; % --- 右后轮控制 --- Error_RR T_req_RR - 0; Int_Error_RR Int_Error_RR Error_RR * 0.001; T_out_RR Kp * Error_RR Ki * Int_Error_RR; %% 6. 输出限幅 (保护电机) Max_T Max_Current * Kt; T_motor_FL saturate(T_out_FL, -Max_T, Max_T); T_motor_FR saturate(T_out_FR, -Max_T, Max_T); T_motor_RL saturate(T_out_RL, -Max_T, Max_T); T_motor_RR saturate(T_out_RR, -Max_T, Max_T);end% 辅助限幅函数function y saturate(u, low, high)if u highy high;elseif u Threshold)T_req_FL T_req_FL * 0.8; % 减压end 调试建议PID参数代码中的Kp, Ki仅为示例值。EMB系统响应极快你需要根据仿真步长建议1ms或更小调整PID参数防止震荡。单位统一确保Carsim输出的单位如km/h vs m/s与Simulink代码中的单位一致。基于Simulink的线控制动系统EMB多通道控制模型架构。Subsystem代表一个车轮左前、右前、左后、右后的独立控制回路。这种架构完全符合你提到的“四个车轮独立BLDCM三环PID闭环制动控制”的描述。Simulink 的 MATLAB Function 模块中用来替代图中那些封装好的子系统实现完全相同的功能。核心控制代码单轮 EMB 控制逻辑这段代码模拟了图中“三环控制”的核心逻辑从目标夹紧力到电流、再到电机扭矩和最终制动力的计算。function [Clamp_Force, Motor_Current, Motor_Speed] EMB_Single_Wheel_Control(Target_Force, Actual_Force, Motor_Speed_Fbk)%#codegen% EMB单轮控制核心算法% 对应图中每一个并行的子系统模块%% 1. 参数定义 (根据实际硬件调整)% — 机械参数 —R_lead 0.005; % 丝杆导程 (m/rev)Gear_Ratio 20.0; % 减速机构传动比Eff_total 0.85; % 总传动效率K_stiffness 1e8; % 制动钳/摩擦片综合刚度 (N/m)% --- 电机参数 --- R_motor 0.05; % 电机电阻 (Ohm) L_motor 0.001; % 电机电感 (H) Kt 0.1; % 电机扭矩常数 (Nm/A) Ke 0.1; % 反电动势常数 (V/rad/s) J_rot 0.002; % 转动惯量 (kg*m^2) B_vis 0.001; % 粘性摩擦系数 % --- PID 增益 (三环控制) --- % 力环 (外环) Kp_f 0.002; Ki_f 0.0001; Kd_f 0.0; % 速度环 (中环) Kp_v 5.0; Ki_v 0.1; Kd_v 0.0; % 电流环 (内环) Kp_i 10.0; Ki_i 50.0; Kd_i 0.0; % --- 采样时间 --- Ts 0.001; % 1kHz 控制频率%% 2. 持久变量 (用于积分和状态保持)persistent Int_F Err_F_prevpersistent Int_V Err_V_prevpersistent Int_I Err_I_prevpersistent Motor_Angleif isempty(Int_F), Int_F 0; Err_F_prev 0; end if isempty(Int_V), Int_V 0; Err_V_prev 0; end if isempty(Int_I), Int_I 0; Err_I_prev 0; end if isempty(Motor_Angle), Motor_Angle 0; end%% 3. 三环 PID 控制逻辑% --- 外环力控制 (Force Loop) --- % 输入: 目标夹紧力 vs 实际夹紧力 Err_F Target_Force - Actual_Force; Int_F Int_F Err_F * Ts; Der_F (Err_F - Err_F_prev) / Ts; % 输出: 目标电机转速 Target_Speed Kp_f * Err_F Ki_f * Int_F Kd_f * Der_F; Err_F_prev Err_F; % --- 中环速度控制 (Speed Loop) --- % 输入: 目标转速 vs 实际反馈转速 Err_V Target_Speed - Motor_Speed_Fbk; Int_V Int_V Err_V * Ts; Der_V (Err_V - Err_V_prev) / Ts; % 输出: 目标电机电流 (扭矩需求) Target_Current Kp_v * Err_V Ki_v * Int_V Kd_v * Der_V; Err_V_prev Err_V; % 限幅: 防止电流过大 Max_I 150; % 150A if Target_Current Max_I, Target_Current Max_I; end if Target_Current F T * pieta / Lead Clamp_Force (Torque_Motor * Gear_Ratio * Eff_total * 2 * pi) / R_lead; % 饱和限制 (最大夹紧力 20kN) if Clamp_Force 20000, Clamp_Force 20000; end if Clamp_Force 速度环 - 电流环。 电流环输出连接到 Transfer Fcn (电机传递函数) 或 DC Motor 模块。输出端每个子系统的输出连接到 Out 模块最终汇总到一个 Mux 模块输出 4 个车轮的制动力给 Carsim。代码对应图中的关键部分最左侧的输入对应代码中的 Target_Force。中间的长条模块对应代码中的 三环 PID 控制 部分。右侧的反馈回路对应代码中的 Motor_Speed_Fbk 和 Actual_Force 反馈路径。Carsim 与 Simulink 联合仿真后的结果分析界面VS Visualizer。这是一次 BBW线控制动与液压制动Compens的对比仿真。图中的曲线显示了两套系统在相同工况如减速、踏板力输入下的响应几乎完全重合这通常用于验证线控制动模型BBW是否准确还原了原车液压系统的制动性能。Brake_Torque 等代入这段代码从而在你的电脑上复现出与图中一模一样的分析图表。MATLAB 绘图复现代码这段代码模拟了图中的 5 个子图布局你可以将仿真数据填入对应的变量中运行。% 清除环境clear; clc; close all;% % 1. 模拟数据生成 (请用你导出的实际仿真数据替换此处)% t 0:0.1:30; % 时间轴 0-30s% 模拟车速 (从 60 km/h 减速到 0)Vx max(60 - 2*t, 0);% 模拟踏板力 (线性增加)Pedal_Force 2.5 * t;% 模拟制动控制输入 (压力/归一化信号)Brake_Input 0.025 * t;% 模拟轮缸压力 (BBW 与 液压系统对比基本重合)Pressure_BBW 0.025 * t;Pressure_Comp 0.025 * t 0.005*sin(t); % 加一点扰动模拟差异% 模拟制动力矩 (4个车轮FL, FR, RL, RR)% 假设前轮力矩大后轮力矩小Torque_FL_BBW 80 - 2.t; Torque_FL_Comp 80 - 2.5t;Torque_FR_BBW 80 - 2.t; Torque_FR_Comp 80 - 2.5t;Torque_RL_BBW 50 - 1.t; Torque_RL_Comp 50 - 1.5t;Torque_RR_BBW 50 - 1.t; Torque_RR_Comp 50 - 1.5t;% % 2. 绘图 (复刻图中布局)% figure(‘Color’, ‘w’, ‘Name’, ‘VS Visualizer - BBW Quick Start Guide’);% — 图1左上角 (制动力矩对比) —subplot(2,3,[1,4]); % 占据左侧两行高度hold on; grid on; box on;plot(t, Torque_FL_BBW, ‘k-’, ‘LineWidth’, 1.5); % 假设黑色线是BBWplot(t, Torque_FL_Comp, ‘b–’, ‘LineWidth’, 1); % 假设虚线是液压plot(t, Torque_RL_BBW, ‘r-’, ‘LineWidth’, 1.5);plot(t, Torque_RL_Comp, ‘r–’, ‘LineWidth’, 1);% 添加图例 (根据图中文字)legend({‘Brake Mz FL BBW’, ‘Brake Mz FL BBW_Compens’, ‘Brake Mz RL BBW’, ‘Brake Mz RL BBW_Compens’},…‘Location’, ‘SouthWest’, ‘FontSize’, 8);ylabel(‘Moment - N.m’); xlabel(‘Time - s’);title(‘Brake Torque - *** Quick Start Guide Example’);ylim([-100 80]);% — 图2中上 (纵向速度) —subplot(2,3,2);plot(t, Vx, ‘b-’, ‘LineWidth’, 1.5); grid on; box on;ylabel(‘Longitudinal speed - km/h’); xlabel(‘Time - s’);title(‘Wheel Speeds - *** Quick Start Guide Example’);ylim([0 70]);% — 图3右上 (制动控制输入) —subplot(2,3,3);plot(t, Brake_Input, ‘k-’, ‘LineWidth’, 1.5); grid on; box on;ylabel(‘Brake control input (M/C) - MPa’); xlabel(‘Time - s’);title(‘Brake Control: Master Cyl. Pressure - *** Quick Start Guide Example’);ylim([0 0.5]);% — 图4中下 (踏板力) —subplot(2,3,5);plot(t, Pedal_Force, ‘k-’, ‘LineWidth’, 1.5); grid on; box on;ylabel(‘Brake pedal force - N’); xlabel(‘Time - s’);title(‘Brake Control: Pedal Force vs. Time - *** Quick Start Guide Example’);ylim([0 60]);% — 图5右下 (轮缸压力对比) —subplot(2,3,6);hold on; grid on; box on;plot(t, Pressure_BBW, ‘k-’, ‘LineWidth’, 1.5);plot(t, Pressure_Comp, ‘b–’, ‘LineWidth’, 1);ylabel(‘Pressure - MPa’); xlabel(‘Time - s’);title(‘Wheel Cylinder Pressures - *** Quick Start Guide Example’);ylim([0 0.5]);% 调整布局防止重叠sgtitle(‘VS Visualizer - CarSim: BBW *** Quick Start Guide Example’);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2493627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…