1. 개요
상륙작전 및 해안 기습 침투를 수행하는 차세대 고속 수륙양용 무인수상정(Amphibious USV)은 파고가 거친 해역에서 60노트(시속 110km)를 초과하는 활주(Planing) 상태로 항행합니다. 이와 같은 초고속 수중 유동에서는 프로펠러 날개 배면의 압력이 해수 포화 증기압 이하로 급락하여 극심한 기포 붕괴와 침식이 발생하는 캐비테이션 한계에 도달합니다. 이를 극복하기 위해 블레이드 흡입면 전체를 거대한 단일 기포로 감싸 유동 마찰 항력을 격감시키는 초공동(Supercavitating) 가변 피치 프로펠러(Controllable Pitch Propeller, CPP)가 적용됩니다. 그러나 파도 충격(Wave Slamming)에 의해 프로펠러가 수면 밖으로 부분 노출되거나 유입류 속도가 급변할 때 공동이 붕괴되어 추력 상실과 프로펠러 축 비틀림 진동이 발생합니다. 본 고에서는 축 토크 및 수중 압력 센서를 10,000Hz 주기로 분석하여 블레이드 피치각을 밀리초 단위로 제어하는 0-Alloc C# 엔진을 구현합니다.
2. 수학적 모델링 및 지배 방정식
국소 단면의 무차원 공동화수(Cavitation Number) \(\sigma_c\) 판별식은 다음과 같습니다:
초공동 쐐기형 블레이드 단면의 툴린-버카트(Tulin-Burkart) 양력 및 항력 계수 방정식은 다음과 같습니다:
가변 피치 프로펠러 유압 서보 액추에이터의 블레이드 회전각 동역학 방정식은 다음과 같습니다:
슬립비(Slip Ratio) 급변 및 공동 붕괴 방지를 위한 최적 피치각 폐루프 적응 서보식은 다음과 같습니다:
3. 실시간 C# 서보 제어기 구현
다음은 프로펠러 샤프트 토크 센서와 침수 깊이 센서 신호를 10,000Hz 주기로 분석하여 유압 서보 밸브 전류를 제어하는 0-Alloc C# 엔진 구현체입니다:
using System;
using System.Runtime.CompilerServices;
namespace ZeliDesk.Defense.Supercavitation
{
public readonly ref struct PropellerSensorFrame
{
public readonly double AdvanceSpeedKnots;
public readonly double ShaftRpm;
public readonly double ShaftTorqueKiloNewtonMeters;
public readonly double AmbientPressureKPa;
public readonly double PropellerDiameterMeters;
public PropellerSensorFrame(
double advanceSpeedKnots,
double shaftRpm,
double shaftTorqueKiloNewtonMeters,
double ambientPressureKPa,
double propellerDiameterMeters)
{
AdvanceSpeedKnots = advanceSpeedKnots;
ShaftRpm = shaftRpm;
ShaftTorqueKiloNewtonMeters = shaftTorqueKiloNewtonMeters;
AmbientPressureKPa = ambientPressureKPa;
PropellerDiameterMeters = propellerDiameterMeters;
}
}
public ref struct PropellerControlCommand
{
public double CommandedPitchDegrees;
public double ComputedCavitationNumber;
public double ValveControlCurrentMilliAmps;
public bool IsSupercavitationStable;
public bool IsVentilationAvoided;
}
public ref struct SupercavitatingPropellerPitchServoEngine
{
private const double WaterDensityKgM3 = 1025.0;
private const double VaporPressureKPa = 2.34;
private const double BasePitchDegrees = 28.0;
private readonly double _kpSlip;
private readonly double _kdTorque;
private readonly double _dt;
private double _prevTorqueKnM;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public SupercavitatingPropellerPitchServoEngine(double kpSlip, double kdTorque, double dt)
{
_kpSlip = kpSlip;
_kdTorque = kdTorque;
_dt = dt;
_prevTorqueKnM = 0.0;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void ComputeBladePitch(in PropellerSensorFrame frame, out PropellerControlCommand cmd)
{
cmd = default;
double va = frame.AdvanceSpeedKnots * 0.514444; // m/s
double rps = frame.ShaftRpm / 60.0;
double uTip = 0.7 * Math.PI * rps * frame.PropellerDiameterMeters;
double vRes2 = Math.Max(1.0, (va * va) + (uTip * uTip));
// Cavitation number: sigma = (P_inf - P_v) / (0.5 * rho * V_res^2)
double pInf = frame.AmbientPressureKPa * 1000.0; // Pa
double pVapor = VaporPressureKPa * 1000.0;
double dynamicPressure = 0.5 * WaterDensityKgM3 * vRes2;
double sigmaC = (pInf - pVapor) / dynamicPressure;
// Torque derivative to detect ventilation / sudden bubble collapse
double dTorque = (frame.ShaftTorqueKiloNewtonMeters - _prevTorqueKnM) / _dt;
_prevTorqueKnM = frame.ShaftTorqueKiloNewtonMeters;
// Target pitch computation: adjust pitch based on sigmaC and torque rate
double pitchTrim = 0.0;
if (sigmaC > 0.08)
{
// Cavity not fully developed, increase pitch to trigger clean supercavitation
pitchTrim += (sigmaC - 0.08) * 15.0;
}
else if (sigmaC < 0.03)
{
// Over-cavitating with severe thrust loss
pitchTrim -= (0.03 - sigmaC) * 20.0;
}
// Rapid torque drop indicates ventilation
if (dTorque < -50.0)
{
pitchTrim -= 4.0; // Rapidly reduce pitch to recover water grip
}
double commandedPitch = Math.Clamp(BasePitchDegrees + pitchTrim, 15.0, 45.0);
double valveCurrent = Math.Clamp(pitchTrim * 2.5, -40.0, 40.0);
cmd.CommandedPitchDegrees = commandedPitch;
cmd.ComputedCavitationNumber = sigmaC;
cmd.ValveControlCurrentMilliAmps = valveCurrent;
cmd.IsSupercavitationStable = sigmaC >= 0.03 && sigmaC <= 0.08;
cmd.IsVentilationAvoided = dTorque >= -50.0;
}
}
}
4. 교육 및 실무 적용 방안
- 해군사관학교 및 국방과학연구소: 초고속 유체역학, 슈퍼캐비테이션 추진 이론 및 파도 슬래밍 적응제어 교구.
- 고속 무인 수상정(USV) 전력화 사업: 원격 무인정 초공동 추진축 보호 및 60노트 고속 활주 서보 엔진 탑재.