手把手教你学simulink实例--基于Simulink的轨道交通车辆悬挂系统仿真
目录
基于Simulink的轨道交通车辆悬挂系统仿真
1. 背景介绍
1.1 项目背景
2. 系统建模与仿真
2.1 悬挂系统组成
2.2 悬挂系统动力学建模
2.2.1 动力学方程
2.3 控制策略模块
2.3.1 主动悬挂控制
2.3.2 半主动悬挂控制
2.4 性能评估模块
3. Simulink仿真模型
3.1 创建Simulink模型
3.2 添加模块
3.2.1 悬挂系统动力学模块
3.2.2 控制策略模块
3.2.3 性能评估模块
3.3 连接模块
3.4 设置仿真参数
4. 示例代码片段
5. 结束语
基于Simulink的轨道交通车辆悬挂系统仿真
1. 背景介绍
1.1 项目背景
轨道交通车辆悬挂系统构成列车运行平稳性、舒适性和安全性的关键要素。合理的悬挂系统设计能够有效减少列车在运行过程中的轨道不平顺和振动影响。借助MATLAB/Simulink平台搭建的仿真模型能够全面评估并优化悬挂系统的动力学行为、控制策略以及性能指标。通过仿真分析验证了悬架系统的性能特征,并进一步优化了关键参数设置。
本项目的目的是搭建一个完整的轨道交通车辆悬挂系统仿真模型,并包含动力学建模、控制策略模块以及性能评估模块;通过仿真验证了系统的稳定性与舒适性。
2. 系统建模与仿真
2.1 悬挂系统组成
轨道交通车辆悬挂系统通常分为两级:
- 第一系悬挂 位于转向架与轨道之间,在支撑车身的同时可有效减隔高频率震动。
- 第二系悬挂 位于车身与转向架之间,在提升行驶平顺度的同时能显著增强乘坐舒适度。
悬挂系统的关键部件包括弹簧、减振器和橡胶元件。
2.2 悬挂系统动力学建模
2.2.1 动力学方程
悬挂系统的运动可以用多自由度线性振动方程表示:
Mx¨+Cx˙+Kx=FextMx¨+Cx˙+Kx=Fext
其中:
- MM:质量矩阵。
- CC:阻尼矩阵。
- KK:刚度矩阵。
- xx:位移向量。
- FextFext:外部激励力(如轨道不平顺导致的激励)。
以两级悬架系统为例,在其中车身总质量设为mb(kg),转向架的质量设为ms(kg),第一级悬架的弹性系数设为k₁(N/m),第二级悬架的弹性系数设为k₂(N/m)的情况下,则其运动学方程可表示为:
该系统模型通过以下矩阵形式表示:[m b 0 0 m s][x ¨b x ¨s] 加上 ... 等
其中:
- xbxb:车体位移。
- xsxs:转向架构位移。
- FtrackFtrack:轨道激励力。
2.3 控制策略模块
2.3.1 主动悬挂控制
主动悬挂系统可通过改变悬挂参数(如阻尼系数和弹性系数)以灵活应对不同的运行条件。通常采用的方法有:
- Proportional-Integral-Differential (PID) control : Based on proportional, integral, and differential terms to adjust suspension parameters.
- Fuzzy control : Applying fuzzy logic to solve nonlinear problems.
- Linear Quadratic Regulator (LQR) control : Utilizing optimal control theory to achieve performance optimization of the suspension system.
目标函数示例(LQR控制):
J=∫0∞(xTQx+uTRu)dtJ=∫0∞(xTQx+uTRu)dt
其中:
- QQ:状态权重矩阵。
- RR:控制输入权重矩阵。
2.3.2 半主动悬挂控制
半主动悬挂系统采用调节阻尼器阻尼系数的方式提升悬挂性能。常用的手段包括但不限于优化控制算法和参数调谐技术。
- Skyhook控制 :实现了"天钩"效果,并降低了车体振动的幅度。 * Groundhook控制 :提升了轮轨接触稳定性的能力。
2.4 性能评估模块
性能评估模块用于分析悬挂系统的性能指标,主要包括以下内容:
- 加速度特性:车体和转向架的加速度大小。
- 振动特性和固有频率相关联。
- 舒适度评分基于 ISO 2631 标准进行计算。
- 安全性指标涉及脱轨系数、轮重减载率等参数。
3. Simulink仿真模型
3.1 创建Simulink模型
- 启动MATLAB应用程序,并创建一个新的空白Simulink模型文件。
- 将模型命名为
RailVehicle_Suspension.
matlab
深色版本
modelName = 'RailVehicle_Suspension';
new_system(modelName);
open_system(modelName);
3.2 添加模块
3.2.1 悬挂系统动力学模块
定义悬挂系统动力学模型,模拟车体和转向架的运动。
matlab
深色版本
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Suspension_Dynamics']);
set_param([modelName '/Suspension_Dynamics'], 'Mask', 'on');
set_param([modelName '/Suspension_Dynamics'], 'MaskDisplay', 'Suspension Dynamics');
% 在Matlab Function中定义悬挂系统动力学模型
function [acceleration] = fcn(force_net, mass)
acceleration = force_net / mass;
end
3.2.2 控制策略模块
定义控制策略模型,实现悬挂参数的动态调节。
matlab
深色版本
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Control_Strategy']);
set_param([modelName '/Control_Strategy'], 'Mask', 'on');
set_param([modelName '/Control_Strategy'], 'MaskDisplay', 'Control Strategy');
% 在Matlab Function中定义控制策略模型
function [control_input] = fcn(error, kp, ki, kd)
control_input = kp * error + ki * integral(error) + kd * derivative(error);
end
3.2.3 性能评估模块
定义性能评估模型,计算悬挂系统的性能指标。
matlab
深色版本
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Performance_Evaluation']);
set_param([modelName '/Performance_Evaluation'], 'Mask', 'on');
set_param([modelName '/Performance_Evaluation'], 'MaskDisplay', 'Performance Evaluation');
% 在Matlab Function中定义性能评估模型
function [performance_metrics] = fcn(acceleration, vibration_frequency, comfort_index)
performance_metrics = [acceleration, vibration_frequency, comfort_index];
end
3.3 连接模块
将各个模块按照系统框图连接起来。
matlab
深色版本
% 连接悬挂系统动力学模块到控制策略模块
add_line(modelName, '/Suspension_Dynamics/1', '/Control_Strategy/1', 'autorouting', 'on');
% 连接控制策略模块到性能评估模块
add_line(modelName, '/Control_Strategy/1', '/Performance_Evaluation/1', 'autorouting', 'on');
3.4 设置仿真参数
设置仿真时间为60秒。
matlab
深色版本
set_param(modelName, 'StopTime', '60'); % 设置仿真时间为60秒
save_system(modelName); % 保存模型
4. 示例代码片段
以下是一个完整的基于Simulink的轨道交通车辆悬挂系统仿真过程。
matlab
深色版本
% Step 1: Define model name and create a new system
modelName = 'RailVehicle_Suspension';
new_system(modelName);
open_system(modelName);
% Step 2: Add Suspension Dynamics Module
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Suspension_Dynamics']);
set_param([modelName '/Suspension_Dynamics'], 'Mask', 'on');
set_param([modelName '/Suspension_Dynamics'], 'MaskDisplay', 'Suspension Dynamics');
% 在Matlab Function中定义悬挂系统动力学模型
function [acceleration] = fcn(force_net, mass)
acceleration = force_net / mass;
end
% Step 3: Add Control Strategy Module
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Control_Strategy']);
set_param([modelName '/Control_Strategy'], 'Mask', 'on');
set_param([modelName '/Control_Strategy'], 'MaskDisplay', 'Control Strategy');
% 在Matlab Function中定义控制策略模型
function [control_input] = fcn(error, kp, ki, kd)
control_input = kp * error + ki * integral(error) + kd * derivative(error);
end
% Step 4: Add Performance Evaluation Module
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Performance_Evaluation']);
set_param([modelName '/Performance_Evaluation'], 'Mask', 'on');
set_param([modelName '/Performance_Evaluation'], 'MaskDisplay', 'Performance Evaluation');
% 在Matlab Function中定义性能评估模型
function [performance_metrics] = fcn(acceleration, vibration_frequency, comfort_index)
performance_metrics = [acceleration, vibration_frequency, comfort_index];
end
% Step 5: Connect Blocks
add_line(modelName, '/Suspension_Dynamics/1', '/Control_Strategy/1', 'autorouting', 'on');
add_line(modelName, '/Control_Strategy/1', '/Performance_Evaluation/1', 'autorouting', 'on');
% Step 6: Set Simulation Parameters
set_param(modelName, 'StopTime', '60');
save_system(modelName);
5. 结束语
基于这个项目文档, 我们全面阐述了基于Simulink平台搭建轨道交通车辆悬挂系统仿真模型的过程, 并实现了相关的功能模块. 该示例旨在帮助读者更好地理解和应用相关技术, 同时作为重要的参考依据为实际工程问题的解决提供了有益思路. 如果根据具体的应用需求进行相应的优化和调整, 可以为项目的完善做出贡献.
