generator model
@@ -81,6 +81,23 @@ class BladePitchPid(controller_interface.BaseController):
settings_default['max_pitch_rate'] = 0.1396
settings_description['max_pitch_rate'] = 'Maximum pitch rate [rad/s]'
+ # Generator and drive train model
+ settings_types['target_power'] = 'float'
+ settings_default['target_power'] = 5e6
+ settings_description['target_power'] = 'Target power in operation'
+
+ settings_types['GBR'] = 'float'
+ settings_default['GBR'] = 97.
+ settings_description['GBR'] = 'Gear box ratio'
+
+ settings_types['inertia_dt'] = 'float'
+ settings_default['inertia_dt'] =
+ settings_description['inertia_dt'] = 'Drive train inertia'
+
+ settings_types['newmark_damp'] = 'float'
+ settings_default['newmark_damp'] = 1e-4
+ settings_description['newmark_damp'] = 'Damping of the time integration newmark-beta scheme'
+
# Output parameters
settings_types['write_controller_log'] = 'bool'
settings_default['write_controller_log'] = True
@@ -132,6 +149,7 @@ class BladePitchPid(controller_interface.BaseController):
no_ctype=True)
self.settings = self.in_dict
+ self.newmark_damp = 0.5 + self.settings['newmark_damp']
# self.controller_id = controller_id
# self.nblades = len(self.settings['blade_num_body'])
@@ -330,17 +348,16 @@ class BladePitchPid(controller_interface.BaseController):
# self.log.close()
pass
+ def generator_model(aero_torque, ini_rot_vel, ini_rot_acc):
+ gen_torque = self.settings['target_power']*ini_rot_vel
+ delta_rot_acc = (aero_torque - self.settings['GBR']*gen_torque)/self.settings['inertia_dt']
+ rot_acc = ini_tor_acc + delta_rot_acc
+ # Integrate according to newmark-beta scheme
+ rot_vel = (ini_rot_vel +
+ (1. - self.newmark_beta)*self.settings['dt'] +
+ self.newmark_beta*self.settings['dt']*rot_acc)
-
-
-
-
-
-
-
-
-
-
+ return rot_vel, rot_acc
