Advertisement

手把手教你学simulink实例--电动汽车场景实例(102.20):基于Simulink的电动汽车驱动电机性能评估与仿真

阅读量:

目录

基于Simulink的电动汽车驱动电机性能评估与仿真

1. 背景介绍

1.1 项目背景

2. 系统建模与仿真

2.1 电动汽车驱动电机系统组成

2.2 电机模块建模

2.2.1 永磁同步电机(PMSM)建模

2.2.2 感应电机(IM)建模

2.3 控制器模块设计

2.4 逆变器模块建模

2.5 负载分析模块

2.6 性能评估模块

3. Simulink仿真模型

3.1 创建Simulink模型

3.2 添加模块

3.2.1 电机模块

3.2.2 控制器模块

3.2.3 逆变器模块

3.2.4 负载分析模块

3.2.5 性能评估模块

3.3 连接模块

3.4 设置仿真参数

4. 示例代码片段

5. 结束语


基于Simulink的电动汽车驱动电机性能评估与仿真


1. 背景介绍
1.1 项目背景

电动汽车驱动电机作为新能源汽车的关键组件之一,在动力性、经济性和可靠性等方面发挥着决定性作用。为了研究和优化电机控制系统,在Matlab/Simulink平台上开展相关性能评估与仿真是一个重要的方法论选择。通过构建模型并进行仿真分析, 可以深入理解电机在各种工作状态下的运行特性, 并验证相应的控制策略的有效性

本项目的目的是建立一套完整的电动汽车驱动电机性能评估和仿真系统。该系统涵盖了电机建模、控制器设计、负载分析以及性能评估模块,并通过仿真模拟了系统的动态响应特性及其关键性能指标。


2. 系统建模与仿真
2.1 电动汽车驱动电机系统组成

电动汽车驱动电机系统通常由以下几个部分组成:

电动机系统组成:主要包含永磁式同步型电机(PMSM)与感应型电机(IM)两大类。
控制系统架构:负责实现系统运行的各种核心控制功能。
电源变换单元:通过逆变技术将直流电能转化为可驱动电动机的交流电能。
动态负荷仿真系统:用于分析车辆行驶过程中的阻力以及其他类型负载的影响。
效能评测系统:根据仿真数据对系统的各项性能指标进行量化评估。


2.2 电机模块建模
2.2.1 永磁同步电机(PMSM)建模

永磁同步电机的动力学方程可以用以下公式表示:

  • 定子电压方程:

vd=Rsid+dψddt−ωeψqvd​=Rs​id​+dtdψd​​−ωe​ψq​

vq=Rsiq+dψqdt+ωeψdvq​=Rs​iq​+dtdψq​​+ωe​ψd​

  • 磁链方程:

ψd=Ldid+ψfψd​=Ld​id​+ψf​

ψq=Lqiqψq​=Lq​iq​

  • 转矩方程:

Te=32P(ψfiq+(Ld−Lq)idiq)Te​=23​P(ψf​iq​+(Ld​−Lq​)id​iq​)

其中:

  • vd,vqvd​,vq​:定子电压的d轴和q轴分量。
  • id,iqid​,iq​:定子电流的d轴和q轴分量。
  • RsRs​:定子电阻。
  • Ld,LqLd​,Lq​:d轴和q轴电感。
  • ψfψf​:永磁体磁链。
  • ωeωe​:电角速度。
  • PP:极对数。

2.2.2 感应电机(IM)建模

感应电机的动力学方程可以用以下公式表示:

  • 定子电压方程:

vs=Rsis+dλsdt+ωe(λsqid−λsdiq)vs​=Rs​is​+dtdλs​​+ωe​(λsq​id​−λsd​iq​)

  • 转子电压方程:

vr=Rrir+dλrdt+σωe(λrqid−λrdiq)vr​=Rr​ir​+dtdλr​​+σωe​(λrq​id​−λrd​iq​)

  • 转矩方程:

Te=32P(λsqird−λsdirq)Te​=23​P(λsq​ird​−λsd​irq​)

其中:

v_s,v_{rvs},v_r:定子端电压与转子电压;
i_s,i_{ir},i_r:定子电流与转子电流;
\lambda_s,\lambda_{r}\lambda_s,\lambda_r:定子磁链与转子磁链;
R_r:转轴侧电阻;
\sigma:漏感系数。


2.3 控制器模块设计

控制器模块用于实现电机的速度控制和转矩控制,常用方法包括:

  • **向量控制法(Field-Oriented Control, FOC)**通过将电机的电磁行为分别在d轴和q轴进行分步处理来实现。
  • 主要关注的是通过DTC实现电机的精确转矩调节与磁链稳定。

目标函数示例(FOC控制器):

id∗=0,iq∗=Te∗Ktid∗​=0,iq∗​=Kt​Te∗​​

其中:

  • id∗,iq∗id∗​,iq∗​:d轴和q轴电流参考值。
  • Te∗Te∗​:目标电磁转矩。
  • KtKt​:转矩常数。

2.4 逆变器模块建模

逆变器模块用于将直流电转换为三相交流电,其输出电压可以表示为:

va=Vdc⋅ma,vb=Vdc⋅mb,vc=Vdc⋅mcva​=Vdc​⋅ma​,vb​=Vdc​⋅mb​,vc​=Vdc​⋅mc​

其中:

  • VdcVdc​:直流母线电压。
  • ma,mb,mcma​,mb​,mc​:调制波。

2.5 负载分析模块

载荷分析模块用于模拟或计算车辆在行驶过程中的总阻力;其中包含了滚动摩擦力、空气动力学阻力以及爬坡摩擦力等各项因素:

Ftotal=Frolling+Fair+FslopeFtotal​=Frolling​+Fair​+Fslope​

其中:

  • Frr=Crrm g:滚动摩擦力。
  • F_a = ½ ρ C_d A v²:空气动力学阻力。
  • F_s = m g sin θ:沿斜面下滑力。

2.6 性能评估模块

性能评估模块用于分析电机的关键性能指标,包括:

  • 效率 :机械功率与输入电功率之比。

η=PmechPelecη=Pelec​Pmech​​

  • 转矩变化幅度 :描述系统输出转矩的一致性。
  • 动态特性 :分别分析电机对速度变化及转矩变化的时间反应。

3. Simulink仿真模型
3.1 创建Simulink模型

启动MATLAB并进行操作流程中的"新建"操作以创建一个新的Simulink仿真模型文件。
按照规定,在"新建"操作完成后,在主界面中输入具体的名称作为该仿真模型的命名标识。

复制代码

matlab

深色版本

复制代码
 modelName = 'EV_Drive_Motor';

    
 new_system(modelName);
    
 open_system(modelName);
3.2 添加模块
3.2.1 电机模块

定义电机模型,模拟永磁同步电机或感应电机的动态行为。

复制代码

matlab

深色版本

复制代码
 add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Motor']);

    
 set_param([modelName '/Motor'], 'Mask', 'on');
    
 set_param([modelName '/Motor'], 'MaskDisplay', 'Motor');
    
  
    
 % 在Matlab Function中定义电机模型
    
 function [torque] = fcn(current_d, current_q, params)
    
     % 示例:简单计算电磁转矩
    
     torque = params.Kt * current_q;
    
 end
3.2.2 控制器模块

定义控制器模型,实现速度控制和转矩控制。

复制代码

matlab

深色版本

复制代码
 add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Controller']);

    
 set_param([modelName '/Controller'], 'Mask', 'on');
    
 set_param([modelName '/Controller'], 'MaskDisplay', 'Controller');
    
  
    
 % 在Matlab Function中定义控制器模型
    
 function [current_ref_d, current_ref_q] = fcn(speed_ref, speed_actual, torque_ref)
    
     % 示例:简单PI控制器
    
     error = speed_ref - speed_actual;
    
     current_ref_q = torque_ref / params.Kt;
    
     current_ref_d = 0;
    
 end
3.2.3 逆变器模块

定义逆变器模型,将直流电转换为三相交流电。

复制代码

matlab

深色版本

复制代码
 add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Inverter']);

    
 set_param([modelName '/Inverter'], 'Mask', 'on');
    
 set_param([modelName '/Inverter'], 'MaskDisplay', 'Inverter');
    
  
    
 % 在Matlab Function中定义逆变器模型
    
 function [voltage_a, voltage_b, voltage_c] = fcn(modulation_wave, V_dc)
    
     voltage_a = V_dc * modulation_wave(1);
    
     voltage_b = V_dc * modulation_wave(2);
    
     voltage_c = V_dc * modulation_wave(3);
    
 end
3.2.4 负载分析模块

定义负载分析模型,模拟车辆行驶时的阻力。

复制代码

matlab

深色版本

复制代码
 add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Load_Analysis']);

    
 set_param([modelName '/Load_Analysis'], 'Mask', 'on');
    
 set_param([modelName '/Load_Analysis'], 'MaskDisplay', 'Load Analysis');
    
  
    
 % 在Matlab Function中定义负载分析模型
    
 function [resistance] = fcn(speed, mass, Cd, A, rho)
    
     rolling_resistance = params.Cr * mass * params.g;
    
     air_resistance = 0.5 * rho * Cd * A * speed^2;
    
     resistance = rolling_resistance + air_resistance;
    
 end
3.2.5 性能评估模块

定义性能评估模型,计算关键性能指标。

复制代码

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 [efficiency] = fcn(power_mech, power_elec)
    
     efficiency = power_mech / power_elec;
    
 end
3.3 连接模块

将各个模块按照系统框图连接起来。

复制代码

matlab

深色版本

复制代码
 % 连接控制器到逆变器

    
 add_line(modelName, '/Controller/1', '/Inverter/1', 'autorouting', 'on');
    
  
    
 % 连接逆变器到电机
    
 add_line(modelName, '/Inverter/1', '/Motor/1', 'autorouting', 'on');
    
  
    
 % 连接电机到负载分析
    
 add_line(modelName, '/Motor/1', '/Load_Analysis/1', 'autorouting', 'on');
    
  
    
 % 连接电机到性能评估
    
 add_line(modelName, '/Motor/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 = 'EV_Drive_Motor';
    
 new_system(modelName);
    
 open_system(modelName);
    
  
    
 % Step 2: Add Motor Module
    
 add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Motor']);
    
 set_param([modelName '/Motor'], 'Mask', 'on');
    
 set_param([modelName '/Motor'], 'MaskDisplay', 'Motor');
    
  
    
 % 在Matlab Function中定义电机模型
    
 function [torque] = fcn(current_d, current_q, params)
    
     torque = params.Kt * current_q; % 示例:简单计算电磁转矩
    
 end
    
  
    
 % Step 3: Add Controller Module
    
 add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Controller']);
    
 set_param([modelName '/Controller'], 'Mask', 'on');
    
 set_param([modelName '/Controller'], 'MaskDisplay', 'Controller');
    
  
    
 % 在Matlab Function中定义控制器模型
    
 function [current_ref_d, current_ref_q] = fcn(speed_ref, speed_actual, torque_ref)
    
     error = speed_ref - speed_actual;
    
     current_ref_q = torque_ref / params.Kt; % 示例:简单PI控制器
    
     current_ref_d = 0;
    
 end
    
  
    
 % Step 4: Add Inverter Module
    
 add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Inverter']);
    
 set_param([modelName '/Inverter'], 'Mask', 'on');
    
 set_param([modelName '/Inverter'], 'MaskDisplay', 'Inverter');
    
  
    
 % 在Matlab Function中定义逆变器模型
    
 function [voltage_a, voltage_b, voltage_c] = fcn(modulation_wave, V_dc)
    
     voltage_a = V_dc * modulation_wave(1);
    
     voltage_b = V_dc * modulation_wave(2);
    
     voltage_c = V_dc * modulation_wave(3);
    
 end
    
  
    
 % Step 5: Add Load Analysis Module
    
 add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Load_Analysis']);
    
 set_param([modelName '/Load_Analysis'], 'Mask', 'on');
    
 set_param([modelName '/Load_Analysis'], 'MaskDisplay', 'Load Analysis');
    
  
    
 % 在Matlab Function中定义负载分析模型
    
 function [resistance] = fcn(speed, mass, Cd, A, rho)
    
     rolling_resistance = params.Cr * mass * params.g;
    
     air_resistance = 0.5 * rho * Cd * A * speed^2;
    
     resistance = rolling_resistance + air_resistance;
    
 end
    
  
    
 % Step 6: 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 [efficiency] = fcn(power_mech, power_elec)
    
     efficiency = power_mech / power_elec;
    
 end
    
  
    
 % Step 7: Connect Blocks
    
 add_line(modelName, '/Controller/1', '/Inverter/1', 'autorouting', 'on');
    
 add_line(modelName, '/Inverter/1', '/Motor/1', 'autorouting', 'on');
    
 add_line(modelName, '/Motor/1', '/Load_Analysis/1', 'autorouting', 'on');
    
 add_line(modelName, '/Motor/1', '/Performance_Evaluation/1', 'autorouting', 'on');
    
  
    
 % Step 8: Set Simulation Parameters
    
 set_param(modelName, 'StopTime', '60');
    
 save_system(modelName);

5. 结束语

本项目文档全面阐述了基于Simulink平台构建电动汽车驱动电机性能评估与仿真模型的过程,并开发相应的功能模块。旨在帮助读者更好地理解并有效运用相关技术,并为实际工程问题提供有价值的参考方案。对于需要进一步优化或拓展的具体场景,请根据具体应用场景进行相应优化调整。

全部评论 (0)

还没有任何评论哟~