Maik JUSTUS: YASim helicopter FDM update
This commit is contained in:
parent
cd74bc8572
commit
eeeea44805
2 changed files with 145 additions and 23 deletions
|
@ -441,10 +441,13 @@ control: This element, which can appear in two different contexts,
|
||||||
|
|
||||||
rotor: A rotor. Used for simulating helicopters. You can have one, two
|
rotor: A rotor. Used for simulating helicopters. You can have one, two
|
||||||
or even more.
|
or even more.
|
||||||
|
There is a drawing of a rotor in the Doc-directory
|
||||||
|
(README.yasim.rotor.gif) Please find the measures from this drawing
|
||||||
|
for several parameters in square brackets [].
|
||||||
If you specify a rotor, you do not need to specify a wing or hstab,
|
If you specify a rotor, you do not need to specify a wing or hstab,
|
||||||
the settings for approach and cruise will be ignored then. Instead
|
the settings for approach and cruise will be ignored then. You have
|
||||||
stored results from the c182 will be used.
|
to specify the solver results manually. See below.
|
||||||
|
|
||||||
name: The name of the rotor.
|
name: The name of the rotor.
|
||||||
(some data is stored at /rotors/name/)
|
(some data is stored at /rotors/name/)
|
||||||
The rpm, cone angle, yaw angle and roll angle are stored
|
The rpm, cone angle, yaw angle and roll angle are stored
|
||||||
|
@ -453,21 +456,44 @@ rotor: A rotor. Used for simulating helicopters. You can have one, two
|
||||||
All angles are in degree, positive values always mean "up".
|
All angles are in degree, positive values always mean "up".
|
||||||
This is not completely tested, but seem to work at least
|
This is not completely tested, but seem to work at least
|
||||||
for rotors rotating counterclockwise.
|
for rotors rotating counterclockwise.
|
||||||
|
A value stall gives the fraction of the rotor in stall
|
||||||
|
(weighted by the fraction the have on lift and drag
|
||||||
|
without stall). Use this for modifying the rotor-sound.
|
||||||
|
The torque property has a bug.
|
||||||
x,y,z: The position of the rotor center
|
x,y,z: The position of the rotor center
|
||||||
nx,ny,nz: The normal of the rotor (pointing upwards, will be
|
nx,ny,nz: The normal of the rotor (pointing upwards, will be
|
||||||
normalized by the computer)
|
normalized by the computer)
|
||||||
fx,fy,fz: A Vector pointing forward, if not perpendicular to the
|
fx,fy,fz: A Vector pointing forward, if not perpendicular to the
|
||||||
normal it will be corrected by the computer
|
normal it will be corrected by the computer
|
||||||
diameter: The diameter in meter
|
diameter: The diameter in meter [D]
|
||||||
numblades: The number of blades
|
numblades: The number of blades
|
||||||
weightperblade: The weight per blade in pounds
|
weightperblade: The weight per blade in pounds
|
||||||
relbladecenter: The relative center of gravity of the blade. Maybe
|
relbladecenter: The relative center of gravity of the blade. Maybe
|
||||||
not 100% correct interpreted; use 0.5 for the start and
|
not 100% correct interpreted; use 0.5 for the start and
|
||||||
change in small steps
|
change in small steps [b/R]
|
||||||
|
chord: The chord of the blade its base, along the X axis
|
||||||
|
(not normal to the leading edge, as it is
|
||||||
|
sometimes defined). [c]
|
||||||
|
twist: The difference between the incidence angle at the
|
||||||
|
blade root and the incidence angle at the wing
|
||||||
|
tip. Typically, this is a negative number so
|
||||||
|
that the rotor tips have a lower angle of attack.
|
||||||
|
taper: The taper fraction, expressed as the tip chord
|
||||||
|
divided by the root chord. A taper of one is a
|
||||||
|
bar blade, and zero would be a blade ending
|
||||||
|
at a point. Defaults to one. [d/c]
|
||||||
|
rel_len_where_incidence_is_measured: If the blade is twisted,
|
||||||
|
you need a point where to measure the incidence angle.
|
||||||
|
Zero means at the base, 1 means at the tip. Typically
|
||||||
|
it should be something near 0.7
|
||||||
|
rel_len_blade_start: Typically the blade is not mounted in the
|
||||||
|
center of the rotor [a/R]
|
||||||
rpm: rounds per minute.
|
rpm: rounds per minute.
|
||||||
ccw: determines if the rotor rotates clockwise (="false") or
|
ccw: determines if the rotor rotates clockwise (="0") or
|
||||||
counterclockwise (="true"), (if you look on the top of the
|
counterclockwise (="1"), (if you look on the top of the
|
||||||
normal, so the bo105 has counterclockwise rotor)
|
normal, so the bo105 has counterclockwise rotor).
|
||||||
|
"true" and "false" are not any longer supported to
|
||||||
|
increase my lifespan. ;-)
|
||||||
maxcollective: The maximum of the collective incidence in degree
|
maxcollective: The maximum of the collective incidence in degree
|
||||||
mincollective: The minimum of the collective incidence in degree
|
mincollective: The minimum of the collective incidence in degree
|
||||||
maxcyclicele: The maximum of the cyclic incidence in degree for
|
maxcyclicele: The maximum of the cyclic incidence in degree for
|
||||||
|
@ -478,19 +504,76 @@ rotor: A rotor. Used for simulating helicopters. You can have one, two
|
||||||
the aileron like function
|
the aileron like function
|
||||||
mincyclicail: The minimum of the cyclic incidence in degree for
|
mincyclicail: The minimum of the cyclic incidence in degree for
|
||||||
the aileron like function
|
the aileron like function
|
||||||
|
airfoil_incidence_no_lift: non symmetric airfoils produces lift
|
||||||
|
with no incidence. This is is the incidence, where the
|
||||||
|
airfoil is producing no lift. Zero for symmetrical airfoils
|
||||||
|
(default)
|
||||||
|
incidence_stall_zero_speed:
|
||||||
|
incidence_stall_half_sonic_speed: the stall incidence is a function
|
||||||
|
of the speed. I found some measured data, where this is
|
||||||
|
linear over a wide range of speed. Of course the linear
|
||||||
|
region ends at higher speeds than zero, but just
|
||||||
|
extrapolate the linear behavior to zero.
|
||||||
|
lift_factor_stall: In stall airfoils produce less lift. Without
|
||||||
|
stall the c_lift of the profile is assumed to be
|
||||||
|
sin(incidence-airfoil_incidence_no_lift)*liftcoef;
|
||||||
|
And in stall:
|
||||||
|
sin(2*(incidence-airfoil_incidence_no_lift))*liftcoef*...
|
||||||
|
...lift_factor_stall;
|
||||||
|
Therefore this factor is not the quotient between lift
|
||||||
|
with and without stall. Use 0.28 if you have no idea.
|
||||||
|
drag_factor_stall: The drag of an airfoil in stall is larger than
|
||||||
|
without stall.
|
||||||
|
Without stall c_drag is assumed to be
|
||||||
|
abs(sin(incidence-airfoil_incidence_no_lift))*dragcoef1...
|
||||||
|
..+dragcoef0);
|
||||||
|
With stall this is multiplied by drag_factor
|
||||||
|
stall_change_over: For incidence<incidence_stall there is no stall.
|
||||||
|
For incidence>(incidence_stall+stall_change_over) there is
|
||||||
|
stall. In the range between this incidences it is
|
||||||
|
interpolated linear.
|
||||||
|
|
||||||
|
The airfoil of the rotor can be described in two ways. First you
|
||||||
|
can define the needed power for different pitch values and the
|
||||||
|
total lift force at a user-defined pitch value. Don't use pitch
|
||||||
|
values greater than the stall incidence. You could get strange
|
||||||
|
results.
|
||||||
|
|
||||||
pitch_a: A collective incidence angle, used for the next token
|
pitch_a: A collective incidence angle, used for the next token
|
||||||
forceatpitch_a: The force, the rotor is producing when the incident
|
forceatpitch_a: The force, the rotor is producing when the incident
|
||||||
angle is equal pitch_a. I.e. hover-pitch and a force
|
angle is equal pitch_a. Without ground effect and with
|
||||||
|
maximum translational lift. I.e. hover-pitch and a force
|
||||||
equivalent to the weight. (in pounds of force)
|
equivalent to the weight. (in pounds of force)
|
||||||
pitch_b: A collective incidence angle, used for the next token
|
pitch_b: A collective incidence angle, used for the next token
|
||||||
poweratpitch_b: the power the rotor needs at pitch_b. (i.e. at the
|
poweratpitch_b: the power the rotor needs at pitch_b. (i.e. at the
|
||||||
bo105 the main rotor consumes bout 90% of the engine power,
|
bo105 the main rotor consumes bout 90% of the engine power,
|
||||||
and 9% the tail rotor. In kW. Used for calculation of the
|
and 9% the tail rotor. In kW.
|
||||||
torque.
|
|
||||||
poweratpitch_0: the power the rotor needs at zero pitch.
|
poweratpitch_0: the power the rotor needs at zero pitch.
|
||||||
In kW. Used for calculation of the torque.
|
In kW. Used for calculation of the airfoil coefficients.
|
||||||
notorque: If set to "true" the calculated torque is always zero.
|
In near future you can define them directly.
|
||||||
Very helpful while adjusting rotor parameters.
|
|
||||||
|
The second way is to define the lift and drag coefficients directly.
|
||||||
|
Without stall the c_lift of the profile is assumed to be
|
||||||
|
sin(incidence-airfoil_incidence_no_lift)*liftcoef;
|
||||||
|
And in stall:
|
||||||
|
sin(2*(incidence-airfoil_incidence_no_lift))*liftcoef*...
|
||||||
|
...lift_factor_stall;
|
||||||
|
Without stall c_drag is assumed to be
|
||||||
|
abs(sin(incidence-airfoil_incidence_no_lift))*dragcoef1...
|
||||||
|
..+dragcoef0);
|
||||||
|
See above, how the coefficients are defined with stall.
|
||||||
|
The parameters:
|
||||||
|
airfoil_lift_coefficient: liftcoef
|
||||||
|
airfoil_drag_coefficient0: dragcoef0
|
||||||
|
airfoil_drag_coefficient1: dragcoef1
|
||||||
|
I read in a forum, that, if you calculate the lift of an heli rotor,
|
||||||
|
you will get a value larger than the measured one. This seems to be
|
||||||
|
valid for this simulation. If you use values for the lift
|
||||||
|
coefficient from real airfoils you will get unrealistic high lift as
|
||||||
|
result (approx. a factor of 2). As starting parameters you can use
|
||||||
|
airfoil_lift_coefficient="1.9"
|
||||||
|
airfoil_drag_coefficient0="0.0075"
|
||||||
|
airfoil_drag_coefficient1="0.2"
|
||||||
flapmin: Minimum flapping angle. (Should normally never reached)
|
flapmin: Minimum flapping angle. (Should normally never reached)
|
||||||
flapmax: Maximum flapping angle. (Should normally never reached)
|
flapmax: Maximum flapping angle. (Should normally never reached)
|
||||||
flap0: Flapping angle at no rotation, i.e. -5
|
flap0: Flapping angle at no rotation, i.e. -5
|
||||||
|
@ -506,7 +589,7 @@ rotor: A rotor. Used for simulating helicopters. You can have one, two
|
||||||
rotors) For rotors without flapping hinge (where the blade
|
rotors) For rotors without flapping hinge (where the blade
|
||||||
are twisted instead, i.e. Bo 105, Lynx) use a mean value,
|
are twisted instead, i.e. Bo 105, Lynx) use a mean value,
|
||||||
maybe 0.2. This value has a extreme result in the behavior
|
maybe 0.2. This value has a extreme result in the behavior
|
||||||
of the rotor
|
of the rotor [F/r]
|
||||||
delta3: Some rotors have a delta3 effect, which results in a
|
delta3: Some rotors have a delta3 effect, which results in a
|
||||||
decreasing of the incidence when the rotor is flapping.
|
decreasing of the incidence when the rotor is flapping.
|
||||||
A value of 0 (as most helicopters have) means no change in
|
A value of 0 (as most helicopters have) means no change in
|
||||||
|
@ -522,17 +605,56 @@ rotor: A rotor. Used for simulating helicopters. You can have one, two
|
||||||
If you know the flapping angle for a given cyclic input you
|
If you know the flapping angle for a given cyclic input you
|
||||||
can adjust this by changing this value. Or if you now the
|
can adjust this by changing this value. Or if you now the
|
||||||
maximum roll rate or ...
|
maximum roll rate or ...
|
||||||
translift: Helicopters have "translational lift", which is due to
|
translift_maxfactor: Helicopters have "translational lift", which
|
||||||
turbulence and hard to calculate, so this simulation uses
|
is due to turbulence. In forward flying the rotor gets less
|
||||||
a phenomenological ansatz. Use .1 for the start value
|
turbulence air and produces more lift. The factor is the
|
||||||
dragfactor: The drag of the rotating rotor perpendicular to the
|
quotient between lift at high airspeeds to the lift at
|
||||||
rotor plane is larger than the drag of the not rotating
|
hover (with same pitch).
|
||||||
rotor. Hard to calculate, so it is added phenomenological
|
translift_ve: the speed, where the translational lift reaches 1/e of
|
||||||
|
the maximum value. In m/s.
|
||||||
|
ground_effect_constant: Near to the ground the rotor produces more
|
||||||
|
torque than in higher altitudes. The ground effect is
|
||||||
|
calculated as
|
||||||
|
factor = 1+diameter/altitude*_ground_effect_constant
|
||||||
|
number_of_segments: The rotor is simulated in four different
|
||||||
|
directions (probably this will be extended in future).
|
||||||
|
In every direction the rotor is simulated at
|
||||||
|
number_of_segments points. If the value is to small, the
|
||||||
|
rotor will react unrealistic. If it is to high, cpu-power
|
||||||
|
will be wasted. I now use a value of 10, but probably a
|
||||||
|
smaller value for the tail-rotor would be sufficient.
|
||||||
|
|
||||||
Any rotor needs a <control> subelement for the engine
|
All rotor can have <control> subelements for the cyclic
|
||||||
(ROTORENGINEON) and can have <control> subelements for the cyclic
|
|
||||||
(CYCLICELE, CYCLICAIL) and collective (COLLECTIVE) input.
|
(CYCLICELE, CYCLICAIL) and collective (COLLECTIVE) input.
|
||||||
|
|
||||||
|
rotorgear: If you are using one ore more rotors you have to define a
|
||||||
|
rotorgear. It connects all the rotors and adds a simple engine.
|
||||||
|
In future it will be possible, to add a YASim-engine.
|
||||||
|
max_power_engine: the maximum power of the engine, in kW.
|
||||||
|
engine_prop_factor: the engine is working as a pd-regulator. This
|
||||||
|
is the width of the regulation-band, or, in other words,
|
||||||
|
the inverse of the proportional-factor of the regulator.
|
||||||
|
If you set it to 0.02, than up to 98% of the rotor-rpm
|
||||||
|
the engine will produce maximum torque. At 100% of
|
||||||
|
the engine will produce no torque. It is planned to use
|
||||||
|
YASim-engines instead of this simple engine.
|
||||||
|
engine_accell_limit: The d-factor of the engine is defined as the
|
||||||
|
maximum acceleration rate of the engine in %/s,
|
||||||
|
default is 5%/s.
|
||||||
|
max_power_rotor_brake: the maximum power of the rotor brake, in kW
|
||||||
|
at normal rpm (most? real rotor breaks would be overheated
|
||||||
|
if used at normal rpm, but this is not simulated now)
|
||||||
|
yasimdragfactor:
|
||||||
|
yasimliftfactor: the solver is not working with rotor-aircrafts.
|
||||||
|
Therefore you have to specify the results yourself.
|
||||||
|
10 for drag and 140 for lift seem to be good starting
|
||||||
|
values.
|
||||||
|
|
||||||
|
The rotorgear needs a <control> subelement for the engine
|
||||||
|
(ROTORGEARENGINEON) and can have a <control> subelement for the
|
||||||
|
rotor brake (ROTORBRAKE).
|
||||||
|
|
||||||
The rotor simulation is very "beta" and not finished yet. So don't
|
The rotor simulation is very "beta" and not finished yet. So don't
|
||||||
spend too much time to adjust a flight behavior to the smallest
|
spend too much time to adjust a flight behavior to the smallest
|
||||||
details now.
|
details now.
|
||||||
|
|
||||||
|
|
BIN
Docs/README.yasim.rotor.png
Normal file
BIN
Docs/README.yasim.rotor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.9 KiB |
Loading…
Add table
Reference in a new issue