Advertisement

手把手教你学simulink实例--基于Simulink的船舶动力装置性能评估与仿真

阅读量:

目录

基于Simulink的船舶动力装置性能评估与仿真

1. 背景介绍

1.1 项目背景

2. 系统建模与仿真

2.1 船舶动力装置组成

2.2 主机建模

2.2.1 柴油机建模

2.2.2 发动机动态特性

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 船舶动力装置组成

船舶动力装置通常由以下几个部分组成:

动力装置(内燃发动机或涡轮发动机):通过水下/空中环境中的流体力学特性实现船舶推进所需的机械功输出。
动力传递机构:基于动力系统的能量转换规律,在船舶航行过程中完成动力从主机到螺旋桨的整体传递。
推进装置:结合水下/空中环境参数实时采集技术,在给定工作参数下完成推力计算并实现精确控制。
航行阻力及附加载荷仿真模块:通过数值模拟技术综合判断船舶动力装置在不同工况下的运行效率与可靠性。
动态性能评价模块:根据仿真结果评估动力装置的运行效率与可靠性指标,并据此优化设计参数。


2.2 主机建模

2.2.1 柴油机建模

柴油机的动力输出可以用以下公式表示:

Pout=ηm⋅PinPout​=ηm​⋅Pin​

其中:

  • PoutPout​:输出功率。
  • PinPin​:输入功率(燃油燃烧释放的能量)。
  • ηmηm​:机械效率。

柴油机的转速与扭矩关系可以表示为:

T=9550⋅PnT=n9550⋅P​

其中:

  • TT:扭矩(Nm)。
  • PP:功率(kW)。
  • nn:转速(rpm)。

2.2.2 发动机动态特性

发动机的动态特性可以用一阶惯性环节近似表示:

ω˙=Tengine−TloadJω˙=JTengine​−Tload​​

其中:

  • ωω代表发动机的转速。
    • Tenginet代表发动机输出的扭矩。
    • Tloade代表负载所施加的扭矩。
    • J代表机械系统的转动惯量。

2.3 传动系统建模

传动系统负责将发动机的输出功率输送给螺旋桨,并由以下公式表征其效能:

Ppropeller=ηt⋅PenginePpropeller​=ηt​⋅Pengine​

其中:

  • P_{\text{propeller}}:通过螺旋桨传递的功率。
  • P_{\text{engine}}:发动机产生的功率。
  • \eta_t:传动系统的效率。

2.4 螺旋桨建模

螺旋桨的推力和扭矩可以用以下公式表示:

F=KT⋅n2F=KT​⋅n2

Q=KQ⋅n2Q=KQ​⋅n2

其中:

  • FF:推力。
  • QQ:扭矩。
  • nn:螺旋桨转速。
  • KT,KQKT​,KQ​:推力系数和扭矩系数。

2.5 负载分析

该模块旨在模拟船舶航行过程中所遇到的各种阻力因素。总阻抗主要由摩擦阻抗和波浪阻抗两个方面构成:

Rtotal=Rfriction+RwaveRtotal​=Rfriction​+Rwave​

其中:

R_{\text{friction}} = \frac{1}{2} \rho C_f S V^2 表示摩擦阻力, *R_{\text{wave}} 表示波浪阻力, *\rho 代表水密度, *C_f* 是摩擦阻力系数, *S* 是湿表面积, *V*$ 表示船速。


2.6 性能评估

性能评估模块用于分析动力装置的关键性能指标,包括:

  • 燃油消耗效率:单位功率下的燃油消耗量。
    • 污染物排放特征:CO₂、NOₓ等主要污染物的排放量。
    • 能效水平:包括机械能效与热能效。

目标函数示例(燃油消耗率):

BSFC=m˙fuelPoutBSFC=Pout​m˙fuel​​

其中:

  • BSFC: 燃油效率(g/kWh)。
    • m_{\dot{f}}: 燃油质量流量(kg/s)。
    • P_{\text{出}}: 输出功率(kW)。

3. Simulink仿真模型

3.1 创建Simulink模型

  1. 启动MATLAB软件,并在此环境中创建一个新的Simulink模型文件。
  2. 将此Simulink模型命名为Ship_Power_Plant
复制代码

matlab

深色版本

复制代码
 modelName = 'Ship_Power_Plant';

    
 new_system(modelName);
    
 open_system(modelName);

3.2 添加模块

3.2.1 主机模块

定义主机模型,模拟柴油机的动力输出。

复制代码

matlab

深色版本

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

    
 set_param([modelName '/Engine'], 'Mask', 'on');
    
 set_param([modelName '/Engine'], 'MaskDisplay', 'Engine');
    
  
    
 % 在Matlab Function中定义主机模型
    
 function [power_out] = fcn(fuel_flow, efficiency)
    
     power_out = efficiency * fuel_flow; % 示例:简单线性关系
    
 end

3.2.2 传动系统模块

定义传动系统模型,模拟功率传递。

复制代码

matlab

深色版本

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

    
 set_param([modelName '/Transmission'], 'Mask', 'on');
    
 set_param([modelName '/Transmission'], 'MaskDisplay', 'Transmission');
    
  
    
 % 在Matlab Function中定义传动系统模型
    
 function [power_propeller] = fcn(power_engine, efficiency_transmission)
    
     power_propeller = efficiency_transmission * power_engine; % 示例:简单乘法
    
 end

3.2.3 螺旋桨模块

定义螺旋桨模型,计算推力和扭矩。

复制代码

matlab

深色版本

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

    
 set_param([modelName '/Propeller'], 'Mask', 'on');
    
 set_param([modelName '/Propeller'], 'MaskDisplay', 'Propeller');
    
  
    
 % 在Matlab Function中定义螺旋桨模型
    
 function [thrust, torque] = fcn(speed, KT, KQ)
    
     thrust = KT * speed^2;
    
     torque = KQ * speed^2;
    
 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, Cf, area, density)
    
     resistance = 0.5 * density * Cf * area * speed^2; % 示例:摩擦阻力
    
 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 [bsfc] = fcn(fuel_flow, power_out)
    
     bsfc = fuel_flow / power_out; % 示例:燃油消耗率
    
 end

3.3 连接模块

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

复制代码

matlab

深色版本

复制代码
 % 连接主机到传动系统

    
 add_line(modelName, '/Engine/1', '/Transmission/1', 'autorouting', 'on');
    
  
    
 % 连接传动系统到螺旋桨
    
 add_line(modelName, '/Transmission/1', '/Propeller/1', 'autorouting', 'on');
    
  
    
 % 连接螺旋桨到负载分析
    
 add_line(modelName, '/Propeller/1', '/Load_Analysis/1', 'autorouting', 'on');
    
  
    
 % 连接主机到性能评估
    
 add_line(modelName, '/Engine/1', '/Performance_Evaluation/1', 'autorouting', 'on');

3.4 设置仿真参数

设置仿真时间为120秒。

复制代码

matlab

深色版本

复制代码
 set_param(modelName, 'StopTime', '120'); % 设置仿真时间为120秒

    
 save_system(modelName); % 保存模型

4. 示例代码片段

以下是一个完整的基于Simulink的船舶动力装置性能评估与仿真过程。

复制代码

matlab

深色版本

复制代码
 % Step 1: Define model name and create a new system

    
 modelName = 'Ship_Power_Plant';
    
 new_system(modelName);
    
 open_system(modelName);
    
  
    
 % Step 2: Add Engine Module
    
 add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Engine']);
    
 set_param([modelName '/Engine'], 'Mask', 'on');
    
 set_param([modelName '/Engine'], 'MaskDisplay', 'Engine');
    
  
    
 % 在Matlab Function中定义主机模型
    
 function [power_out] = fcn(fuel_flow, efficiency)
    
     power_out = efficiency * fuel_flow; % 示例:简单线性关系
    
 end
    
  
    
 % Step 3: Add Transmission Module
    
 add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Transmission']);
    
 set_param([modelName '/Transmission'], 'Mask', 'on');
    
 set_param([modelName '/Transmission'], 'MaskDisplay', 'Transmission');
    
  
    
 % 在Matlab Function中定义传动系统模型
    
 function [power_propeller] = fcn(power_engine, efficiency_transmission)
    
     power_propeller = efficiency_transmission * power_engine; % 示例:简单乘法
    
 end
    
  
    
 % Step 4: Add Propeller Module
    
 add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/Propeller']);
    
 set_param([modelName '/Propeller'], 'Mask', 'on');
    
 set_param([modelName '/Propeller'], 'MaskDisplay', 'Propeller');
    
  
    
 % 在Matlab Function中定义螺旋桨模型
    
 function [thrust, torque] = fcn(speed, KT, KQ)
    
     thrust = KT * speed^2;
    
     torque = KQ * speed^2;
    
 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, Cf, area, density)
    
     resistance = 0.5 * density * Cf * area * speed^2; % 示例:摩擦阻力
    
 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 [bsfc] = fcn(fuel_flow, power_out)
    
     bsfc = fuel_flow / power_out; % 示例:燃油消耗率
    
 end
    
  
    
 % Step 7: Connect Blocks
    
 add_line(modelName, '/Engine/1', '/Transmission/1', 'autorouting', 'on');
    
 add_line(modelName, '/Transmission/1', '/Propeller/1', 'autorouting', 'on');
    
 add_line(modelName, '/Propeller/1', '/Load_Analysis/1', 'autorouting', 'on');
    
 add_line(modelName, '/Engine/1', '/Performance_Evaluation/1', 'autorouting', 'on');
    
  
    
 % Step 8: Set Simulation Parameters
    
 set_param(modelName, 'StopTime', '120');
    
 save_system(modelName);

5. 结束语

参照这份项目文档, 我们全面阐述了船舶动力装置性能评估与仿真模型在Simulink平台上的搭建过程, 并实现了相应的功能模块. 该示例旨在帮助读者提高理解和应用相关技术的能力, 同时作为参考资料使用, 为解决实际工程问题提供实用的解决方案. 如果根据具体的应用需求进行相应的优化调整, 将能获得更为完善的系统设计与分析结果.

全部评论 (0)

还没有任何评论哟~