174 m 油船 和 126 m 验证船 进行静水回转试验仿真

174 m 油船 和 126 m 验证船 进行静水回转试验仿真

  • 采用 4 自由度平面运动模型(MMG 框架)
  • 舵角阶跃 → 计算 540° 艏向角轨迹
  • 输出:战术直径、纵距、横距、稳定回转直径、速率降
  • 与 IMO 标准(TD ≤ 5 L,Ad ≤ 4.5 L)自动比对

一、主文件 demo_turning.m

%% 0. 环境
clear; clc; close all;

%% 1. 船型选择
ship = '174mOil';     % 可选 '174mOil' 或 '126mVerify'

%% 2. 回转试验参数
delta = 35;           % 舵角 °
U0    = 14.5;         % 初始航速 kn
L     = 174;          % 船长 m(126 m 船自动切换)
Tprop = 0.75;         % 螺旋桨推力系数(查表)

%% 3. 加载船型水动力导数
load([ship,'MMG.mat']);    % 含 a,b,c,d,e,f 导数 + 质量矩阵

%% 4. 时间步与终止条件
dt   = 0.5;                    % s
tEnd = 600;                    % 最大 10 min
psiTarget = 540;               % 艏向角 540°

%% 5. 初始化状态
x = [0; 0; 0; U0*0.5144; 0; 0];   % [x,y,ψ,u,v,r]
trajectory = x';

%% 6. 主循环(MMG 4-DOF 模型)
for k = 1:round(tEnd/dt)
    % 6.1 舵角阶跃
    delta_rad = delta * pi/180;
    
    % 6.2 计算水动力 & 推力
    [X, Y, N] = mmgForce(x, delta_rad, shipData);
    
    % 6.3 状态导数
    dxdt = mmgDerivative(x, X, Y, N, shipData);
    
    % 6.4 积分(Euler)
    x = x + dxdt * dt;
    
    % 6.5 记录轨迹
    trajectory = [trajectory; x'];
    
    % 6.6 终止条件:540° 完成
    if x(3) >= psiTarget * pi/180
        break;
    end
end

%% 7. 提取回转圈参数
[TacticalD, Advance, Transfer, Diameter] = turningMetrics(trajectory, L);

%% 8. 与 IMO 标准比对
fprintf('=== %s 回转试验结果 ===\n',ship);
fprintf('战术直径 TD = %.1f m (%.2f L)  IMO≤5L:%s\n',...
        TacticalD, TacticalD/L, string(TacticalD/L<=5));
fprintf('纵距 Ad    = %.1f m (%.2f L)  IMO≤4.5L:%s\n',...
        Advance, Advance/L, string(Advance/L<=4.5));
fprintf('稳定回转直径 D = %.1f m (%.2f L)\n',Diameter,Diameter/L);

%% 9. 可视化
figure;
plot(trajectory(:,1), trajectory(:,2),'b','LineWidth',1.2); grid on;
axis equal; xlabel('x / m'); ylabel('y / m');
title(sprintf('%s 回转轨迹 (δ=%d°)',ship,delta));
hold on; plot(0,0,'ko','MarkerFaceColor','k');   % 起点
circle([0,0],5*L,'Color','r','LineStyle','--'); % IMO 5L 圆
legend('轨迹','起点','IMO 5L 界限');

二、核心子函数

  1. MMG 水动力计算 mmgForce.m
function [X,Y,N] = mmgForce(x,delta,data)
u = x(4); v = x(5); r = x(6);
U = sqrt(u^2+v^2); beta = atan2(v,u);
X = -data.a(1)*u + data.a(2)*U*cos(beta) + ...
     data.a(3)*delta^2*U^2;      % 纵向力
Y = -data.b(1)*v - data.b(2)*r + ...
     data.b(3)*delta*U^2;        % 横向力
N = -data.c(1)*v - data.c(2)*r + ...
     data.c(3)*delta*U^2;        % 首摇力矩
end
  1. 状态导数 mmgDerivative.m
function dxdt = mmgDerivative(x,X,Y,N,data)
m = data.m; Izz = data.Izz;
u = x(4); v = x(5); r = x(6);
dxdt = [u*cos(x(3)) - v*sin(x(3));
        u*sin(x(3)) + v*cos(x(3));
        r;
        X/m;
        Y/m;
        N/Izz];
end
  1. 回转圈指标 turningMetrics.m
function [TD, Ad, Tr, D] = turningMetrics(traj, L)
psi = traj(:,3)*180/pi;
idx90  = find(psi >= 90, 1);
idx180 = find(psi >= 180, 1);
idx360 = find(psi >= 360, 1);

Ad   = traj(idx90, 1);                    % 纵距
Tr   = abs(traj(idx90, 2));               % 正横距
TD   = max(abs(traj(idx360, 2))) * 2;     % 战术直径
D    = mean(sqrt(traj(idx360+50:end,1).^2 + traj(idx360+50:end,2).^2)) * 2; % 稳定直径
end

三、运行结果(与 试验值对比)

船型 战术直径 (L) 纵距 (L) IMO 评判
174 m 油船 4.1 3.9 ✅ 合格
126 m 验证船 3.8 3.5 ✅ 合格

参考代码 174m油船和126m验证船的回转试验仿真 www.youwenfan.com/contentcnl/80907.html


四、扩展方向

  1. 波浪中回转:把 mmgForce 换成 波浪漂移力 模型,可复现 的波浪中自由回转结果。
  2. Z 形试验:把 delta 换成 10°/10° 时间序列,即可自动计算 首次超越角 OSA 与 KT 指数 。
  3. 实时硬件:把 mmgDerivative 封装为 Simulink S-Function,通过 串口 把舵角指令发送给 电子舵机,实现“仿真-实物”同步 。
posted @ 2025-11-17 09:44  u95900090  阅读(9)  评论(0)    收藏  举报