function power = simpleTurbine( windSpeed, ratedOutputPower, cutInSpeed, ratedOutputSpeed, cutOutSpeed ) %#codegen
%Simple Turbine
% This function implements a simple power versus wind speed characteristic
% to represent a wind turbine.
%
% Given an input of wind speed, m/s, the function outputs turbine power, W.
%
% The parameters must meet the following requirement:
%
% Cut-in speed < Rated output speed < Cut-out speed
% Check rated output power is greater than zero
if ~(ratedOutputPower > 0)
error( 'Rated output power must be greater than zero.' );
end
% Check cut-in speed is less than rated output speed
if ~(cutInSpeed < ratedOutputSpeed)
error( 'Cut-in speed must be less than rated output speed.' );
end
% Check rated output speed is less than cut-out speed
if ~(ratedOutputSpeed < cutOutSpeed)
error( 'Rated output speed must be less than cut-out speed.' );
end
if windSpeed < cutInSpeed
% Wind speed is less then cut-in speed, power output is zero
power = 0;
elseif windSpeed < ratedOutputSpeed
% Wind speed is greater than cut-in speed and less than rated output
% speed, power output follows linear characteristic from zero to rated
% power
cutInGradient = ( ratedOutputPower / ( ratedOutputSpeed - cutInSpeed ) );
power = cutInGradient * ( windSpeed - cutInSpeed );
elseif windSpeed < cutOutSpeed
% Wind speed is greater than rated output speed and less than cut-out
% speed, power output is limited to rated power
power = ratedOutputPower;
else
% Wind speed is greater than cut-out speed, power output is zero
power = 0;
end