• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

FSXA Helicopter: Weird engine surge...

Messages
111
Country
germany
Hi,

I am currently reworking a multiengined helicopter. Starting her up, she runs up fine on both engines, torque indication in max whilst building up rotor_rpm. Once rotor_rpm is at 100% engine sound dies off pretty suddenly, torque indication drops almost to zero and both N1 Indicators visually spool down to roughly 70% N1. Then suddenly, sound kicks in again, toque readings rise to near 100%, N1 goes back to 100% and staying that way for a couple of seconds, until, it all starts over and over again during the complete flight.
The weird thing is, this does not effect the outside sound and it does not affect the availability of power, meaning you can fly her during the whole process without any limitation. Inreasing / Decreasing the collective pitch does not have an influence at torque readings at all...

I used the FSXA EH_101 aircraft.cfg as a base for my modification.

Something tells me that the governor plays a role in this game, I just don't get it sorted out...

Help desperately neede! :eek::eek:
 
Its a bug in the EH101 flight model. One good reason for me not to use this flight model on my Bell 222:p
 
If you have a look in your EH101 aircraft.cfg file in the following [Helicopter] section, there's a governor_pid setting that you can alter to get what feels like a more realistic behaviour. I first just tried commenting it out but whilst that got rid of the problem, it didn't feel right. I eventually found the setting you see marked below in red, which felt much more realistic. (I can't take any credit for these settings, they were worked out by someone on another forum somewhere - so all credit to that mystery man).


[Helicopter]
reference_length = 74.1
reference_frontal_area = 125.0
reference_side_area = 308
side_aero_center = -38.0
lift_aero_center = -34.0
right_trim_scalar = 0.0
correlator_available = 0
governed_pct_rpm_ref = 1.0
//governor_pid = 0.25, 0, 0.9, 0.01, 0.15 //commented out to prevent engine surges
governor_pid = 0.5, 1, 400, 0.01, 0.01
//governor_pid = 25.85, 0, 125.0, 0.0, 95.85
rotor_brake_scalar = 10.0
torque_scalar = 20.0
tail_rotor_translating_scalar = 0.5
cyclic_roll_control_scalar =1.5
cyclic_pitch_control_scalar =2.0
pedal_control_scalar =0.4
//collective_on_rotor_torque_scalar = 0.4
//collective_on_rotor_torque_scalar = 0.6
collective_on_rotor_torque_scalar = 1.0
 
Turbine helicopter PID constants.

FSXA has three different basic .air files for helicopters. One is the old Bell helo, next is the piston Robinson and the third is a turbine helo like the stock EH-101. The PID Constants only apply to the piston and EH-101 style helos and the

discussion below is directed solely to the turbine EH-101 type helo. Most of the Bell aerodynamics are defined in the .air file, the other two have their aerodynamics dictated by minimum .air file constants and mostly cfg constants like the

rest of the fleet.

The main rotor or (rotors) supply the lift necessary to keep a helicopter flying throughout its flight envelope. Helicopter aerodynamics are complex and the lift required varies in a more complex way than fixed wing aerodynamics. Main

rotor performance is optimized at 100% RPM and the Proportional, Integral, Derivative (PID) constants in the config file are designed to control the main rotor RPM at or close to 100%.throughout its flight envelope.

The main rotor has a certain amount of energy depending on its RPM and the inertia of its rotor blades. Inertia is a function of the number of blades and their individual weights.This varies between helicopters and can affect the PID

constants.

The turbine engines have to provide enough torque to provide sufficient energy to the rotor to maintain RPM at 100% depending on the lift requirements of the main rotor. If they provide insufficient energy, the aerodynamic loads on the

rotor will cause it to slow down, becoming less efficient, too much energy will cause it to speed up and also become less efficient. There are several other effects related to non-optimum RPM which I'm ignoring, for simplicity.

Because the rotor is optimized for 100% RPM the engine need to provide power (torque) to maintain RPM at 100%. The engines are controlled by controllers that operate on three factors to decide the amount of torque required to maintain

100% RPM. These are Proportional, Integral and Derivative (PID) control according to constants related to the desired 100% rotor RPM.

The five constants for PID in the turbine helicopter config file are, in sequence:
Proportional (P), Integral (I,) Derivative (D),and two limits on RPM error from 100%, where the (I) values kick in and where the (D) values kick in.

Proportional constants (P) are a function of the error between actual RPM and desired (100%). If RPM is too low they apply more torque until RPM is 100%, then less torque until RPM is again 100% with an inevitable overshoot (RPM

above 100%). If RPM is high they provide less torque until RPM is lower than 100% and increase again following an inevitable undershoot (RPM below 100%). This overshoot/undershoot is the main problem with the stock EH-101.

Integral constants (I) are a function of the time the error between 100% rotor RPM and actual rotor RPM exists (the P error). If this is high the I constant creates an overshoot or undershoot error that could lead to lag before the P error starts

to dominate. Until the I error becomes less than the P error it will cause the torque and RPM to continue to dominate the P error. The I error is only computed when the fourth PID constant (error percent) is not exceeded, so it should be

low to minimize Integral effects.

Derivative (D) constants are a function of the rate of change of error between 100% rotor RPM and actual RPM. As with I constants they are only computed when the fifth constant is not exceeded (error percent). This should also be kept

low.

If you are with me so far, the key is to minimize the RPM overshoot so the P constant needs to be low. The I and D constants and error limits also need to be low. The values depends on blade count and weight, but I have found that the

following seems to minimize overshoot;
EH-101: governor_pid = 0.025, 0001, 0.05, 0.02, 0.15
CH-47:governor_pid = 0.015, 0.001, 0.05, 0.03, 0.15
AH-1Z governor_pid =0.025, 0.001, 0.05, 0.02, 0.15.

The stock EH-101 engine surge is in response to its PID constants and makes it very hard to maintain a static hover without the surge creating a heading change. Key is reducing the P constant.

Also the the torque_scalar = 20.0 and tail_rotor_translating_scalar = 0.5 can be adjusted to reduce the yaw if the PID numbers are not stable enough to reduce torque surge and heading change.

The whole thing is pretty complex and may require many iterations to get stable Rotor RPM in flight.

I have found that starting two engines one after the other leads to a gross overshoot of rotor RPM, but it does reduce over time especially if high demands are made of the rotor like taking off and applying full collective.

Otherwise the rotor RPM is pretty steady throughout the flight envelope.

The torque_scalar = 20.0
tail_rotor_translating_scalar = 0.5

values for the EH-101 should also be zero when there are two main rotors that counter-rotate like the CH-47.

Roy
 
Hi Roy,

thanks a lot for that eyeopener of yours. I think, finally, I might have understood the workin' principle behind it. Will give it a try first thing in the morning.

Another, maybe related question... can the governor be triggered? I mean, if I would assign a hardware lever as speed selector (ctrl-F2 / F3), it would become possible, to set it to GND Idle for startup, preventing the vast overshoot on individual engine start, then, one could slowly increase Rotor_RPM while preventing the inevitable Overtourque on runup and finally, when nearing 100% kick it full forward into the flight position where the governor takes over... This would in the consequence, make practice autorotations possible, as well as it would give me the opportunity to use a couple of lights in the Caution panel for something else then just for the Lamp_Test....

Right now I fly my SeaKing with the governor "commented out", wich gives nice Tourque readings, a steady sound but a heck of Main Rotor Overspeed...
 
SeaKing PID settings

I have a SeaKing FSXA model that uses the EH-101 style configuration. I can get it to hold 100% rotor RPM in cruise flight around 110Kts with torque at 50%.

It takes a while to get stable RPM and Torque, but once there, it stays stable as long at the load is steady

The RPM will decrease with increased load like more collective, but the torque increases accordingly. Similarily, reduced load will reduce torque.

I could probably get earlier stabilization, but have not spent a lot of time trying yet.


My PID settings are:
governor_pid = 0.05, 0.001, 0.05, 0.1, 0.1

Again, the first three numbers are constants that relate to the error between the desired "governed_pct_rpm_ref = 1.0" or 100% and the actual rotor RPM in percent over 100. Lets call that RPM error.

If the rotor RPM is too high the P (first) constant will reduce torque proportionally to the RPM error until the error becomes negative, then it will increase torque and so on. Without Integral and Derivative control, it will never settle down for a stable flight situation.

If the rotor RPM is too high, the amount of time it is too high and amount of RPM error will build up an Integral error according to the I (second) constant. This effect will cause torque to decrease until the Integral error is zero. However, the Integral error will not be zero until it is reduced by a negative RPM error that also is a funtion of the time the RPM error is zero or less than zero. In other words the Integral effect decreasing torque may continue until after the RPM error is zero, So it can cause torque overshoots and undershoots if the constant is large. However, as the RPM approaches zero the I error also becomes zero and eventually acts to zero RPM error under constant flight conditions.

The third setting (Derivative) affects the speed of RPM stability according to the rate of stabilization. It works to reduce overshoot and undershoot.

The last two settings =10% correspond to the SeaKing 91% to 112% rotor limits. That is plus/minus 10% about 101%. This means the Integral and Derivative constants (0.001 and 0.05) only apply when the rotor RPM is within limits. Outside these limits the Proportional (0.05) constant only is in operation.

What I do not get is the bad hunting torque of the stock EH-101, which never seems to settle down, always overshooting and undershooting. I think that this was never sorted out before MS dumped the ACES team, same applies to a lot of unfinished items in the modeldef file. Frankly, I'm amazed the EH-101 was released with such bad performance.

There are other entries in the config file that affect the torque readings according to rotor load (lift required). I have these in the SeaKing.
"Weight_per_blade = 200.0"

Increased blade weight increases the inertia of the rotor. A high inertia tends to stabilize Rotor RPM. It should also help maintain rotor energy during autorotation when continued flight is dependant on the remainining inertia and energy in the rotor opposing the weight of the helicopter.

"inflow_vel_reference = 56.0"

This is a measure of blade lift efficiency, so increasing it would give a higher speed at full collective under level flight. If your model exceeds the limiting max speed (SeaKing 120 kts) you could reduce this number or increase the
[fuselage_aerodynamics]
drag_force_cf = 0.52 value.

"weight_to_moi_factor=0.45"

I think the blade weight could be set constant and this varied or vice versa depending on individual choice and the result would be the same. A high MOI will require more torque to adjust Rotor RPM and vice versa. High MOI will make RPM errors take longer to correct.

As to how to inhibit the PID constants during start up, I'm clueless.

Turbine engines have condtion levers that affect torque during idle and flight, but I'm not yet aware of how to do this in FS, Would appreciate help there.

Roy
 
Hi Roy,

thanks again for your highly appreciated contribution. Unforunately, your numbers don't work for my SeaKing, wich might be ue to the fact that we are dealing with different numbers in other parts of the config.

You mentioned a VNE of 120KIAS, is that for the Sikorsky version? My Westland Seaking Dash-1 gives a VNE of 138KIAS...

I have the overall impression, that the main problem lies in the fact that the engines are reacting way to slow on the governor. Watching the Rotor engagement closely for a couple of times, you see it rise up to a 100% with a maximum indicated Torque. Then, passing the 100% measure, Torque is very, very slowly reduced by the system with Rotor RPM still on the rise until, when reaching, or better, exceeding the upper RPM limit, it suddenly cuts power in total. Then, as Rotor RPM is decreasing, there is no visible reaction when passing 100% on the fall, insted, it starts kickin in with full maximum Torque just after passing the lower RPM limit.

What I will try next is, I will play around with bladeweight, 'cause the calculated momentum of the blade might be an important part of the problem. Additional to that, I will start searching for a way to unclutch the Rotor on engine runup, cause the uneven runup of multiple engines also seems to have, (as you mentioned) a vast effect.

I am still thinking of the possibilitie to, somehow, put the thing into "Manual", say, deactivate the governor on runup, blance the rotor rpm to a 100% manually and then, having everything stable and balanced, let the governor take over...

What I found starnge during the groundruns I did was, that even the Rotor sound dies of, even if sufficient Rotor RPM is still indicated. That is kind of strange....

Roy, what is the SeaKing model you are working on? Mine is the UKMIL one.

Nightlight2.jpg
 
Seaking Settings

Mike,
I have done some more work on my Seaking (RAF Rescue version)
Beginning with both engines off and rotor static.
Start both engines, once started, turn off starters.
Engines go up to about 120% torque for 15 seconds, then settles at 100%.
Rotor RPM builds up to just below 120%
Torque drops to zero
Rotor RPM slowly decreases to about 97%.
Engine torque build to just below 100% then drops to 60%
Rotor build to 100%
Engine torque drops to 30%
Two or three small oscillations then Rotor stays at 100 with torque at 30.
Whole process from start takes about 3 minutes.

PID settings :governor_pid = 0.05, 0.001, 0.05, 0.02, 0.10

Other settings:
[turboshaft_engine]
power_scalar = 1.0 //Scalar on Turboprop power
maximum_torque = 650 //Maximum torque available (ft-lbs)
rated_shaft_hp = 1660 //rated HP of shaft

[MainRotor]

Radius = 31.0 //feet
max_disc_angle = 7.0
static_pitch_angle = 4
static_bank_angle = 0
RatedRpm = 203
Number_of_blades = 5
Weight_per_blade = 150.0
inflow_vel_reference = 56.0
weight_to_moi_factor=0.40

I have found with my other helos that I need to modify the first PID constant depending on the rotor inertia, making it higher for a high inertia rotor.

I have made the fourth PID constant .02 so it only comes into play between 98 and 102 percent rotor RPM. Prevents a big error build up during the initial rotor overswing.

In flight the torque varies like it should but usually not more than 30% according to load.

I tried playing with the condition levers, which are treated as mixture in FS. All they do is slightly decrease the N1 value for an engine if the condition lever is set to 10%. Works the same as the KingAir condition levers. I had hoped that this would reduce torque on start up, but it has little obvious effect.

The start sequence is not ideal, but I guess we have to live with it in FS. I have tried to find out what a realistic weight is for the Seaking rotor with no luck so far. I had it at 200 lbs earlier, but with 5 blades that seemed a bit heavy, so I reduced it to 150 and it is more stable.

One other interesting thing. If the inflow_vel_reference = 56.0 is reduced to 46, the rotor RPM in flight is around 90%, the torques are much higher and the rotor will slow under load. Worth playing with if you see this happening.

What the PID does is control N1 (the gas generator) depending on N2 (Rotor turbine). Torque lags behind N1 and what you hear is N1 varying.

Hope this helps
Roy
 
Hi Roy, it's me again. :)

If tried your settings and they work fine, but I had to massively modify your hp and touque avbl settings, as I wasn't able to produce any lift at all, even far below MTOW.

I changed hp setting to : 2880, wich is the overall hp for both the german Mk.41 engines (they received a power reduction to increase lifetime expectancy.)

I changed the Available Torque to just twice ne number you gave me. (Still room to play with that one, but she seems adequately powered now.)

Are you working with the UKMIL mode, the Virtavia or with another model? What is your set MTOW?

I will be back in the SN tomorrow and will check on that bladeweight.

RGGS

Lars
 
I've just talked to a flight engineer out of the squadron, weight per blade is around 180lbs for the actual blades.
 
Seaking

My power settings are per engine, I have engine.0 and engine.1. So doubling the values if you are only considering one engine makes sense.
I use max_gross_weight = 21500 which may be a little high and empty_weight=12000, which is a bit low.

The model is one I made myself using the EH-101 style .air and .cfg files.

Thanks for the 180 lb blade weight, I'll see if it makes any difference.

Just started rebuilding the internal and external models with FSDS, existing one was an early GMAX attempt from around 2007. Prefer to make the internal model first because it is more detailed and I get most enjoyment out of making the panels with as much animation as possible.

Roy
 
Hmmm, actually, we are pretty close as far as weight can be concerned... I am dealing with two engines as well, weird, I couldn't produce ANY lift with your pwr setting...

Well, after all, finally they are different models, so that secret in comfotably nestled somewhere else maybe.
 
Seaking Power

Interesting, though we should be able to resolve the differences.

Could be due to the .cfg engine or main rotor numbers. Could also be due to the .air file engine numbers. I made no changes to the EH-101 .air file, so we can rule that out if you also made no changes. In which case it comes down to the .cfg engine and main rotor.

Lets look at the engine first, since I have values for each engine and you have values for both engines.

[GeneralEngineData]
engine_type = 3 //0=Piston, 1=Jet, 2=None, 3=Helo-Turbine,
Engine.0=0,-2.0,-3.0
Engine.1=0,2.0,-3.0
fuel_flow_scalar= 1.0
min_throttle_limit = 0.0

Some small typo in the Engine lines could indicate you only have one engine

[TurbineEngineData]
fuel_flow_gain = 1.0
inlet_area = 1.0
rated_N2_rpm = 18966
static_thrust = 0

Only thing here is the fuel_flow_gain, but that affects spool-up time and has no effect on eventual thrust. I think the PID overrides this.

[turboshaft_engine]
power_scalar = 1.0 //Scalar on Turboprop power
maximum_torque = 650 //Maximum torque available (ft-lbs)
rated_shaft_hp = 1660 //rated HP of shaft

Not certain whether "shaft_hp" refers to total hp from both engines or is per engine. That about covers the engine parameters in the .cfg file.

The lift is produced by the Main rotor and I have already sent what I have in that section. The only line that affects rotor efficiency is: inflow_vel_reference = 56.0. Increasing that increases lift.

I see nothing in the [Helicopter] section that affects up and down (lift), just left and right torque reaction from the tail rotor.

The Turbine Helo FSXA setup is so much better than the old Bell one and it flies realistically. I knew an experienced helo pilot who could not fly the Bell setup in FS because it was nothing like the Bell he flew!

To my way of thinking the only difference between what you have and what I have has to be engine related. Only other thing is whether we both use FSXA, but the Turbine Helo is FSXA only so that should be a non-issue.

Roy
 
Seaking air file

Mike,
Since I wrote the last response I have downloaded the UKMIL Seaking. When I look at the sk.air file, I see it based on a Bell type air file, not an EH-101. The aircraft config file engine data is for a turboprop, not a type 3 Helo-turbine. Consequently the PID controllers should have no effect on performance. I also recall you said that using my engine power settings gave about half the lift you needed. sk.air has the number of engines as one.

If you are using the sk.air file, then the differences become clear. Just because you have Helo-turbine data in your config file does not mean it will work if the air file is based on the Bell.

Roy
 
Hi Roy,

I’ve been following this thread and found your tips regarding PID very helpful with my own T-58 powered project. Thanks!

I’d like to mention some other variables that I’ve been experimenting with that might have some potential in affecting torque behaviors.

In one of your set ups you mentioned “Engines go up to about 120% torque for 15 seconds, then settles at 100%.” Experimenting with the air file’s 509 table database Engine/Turboprop Shaft friction, I found that I could reduce the overshoot somewhat. The friction vs RPM curve has the effect of changing the net torque at any given N2 speed. By increasing the friction curve above 100% N2/Nf/Nr, torque can be reduced proportional to N2/Nf/Nr, which in turn reduces the rate of Nr increase while the PID is still “wound up” with excessive error correction. Perhaps one could even use this curve to increase the torque below 100% Nr in an effort to reduce the rotor startup time, which might reduce the PID “wind up” error correction values. I haven’t tried that yet...maybe that will bring with it too many other undesirable effects.

Here is an example of what I have in table 509 now, but really needs further testing…as do any of the following examples.;)

509[TBLDB] Engine/Turboprop Shaft friction
Points: 4
0 0
97 0.8
103 0.8
120 1.2

In addition, by changing 1508 [TBLDB]CN1 to Shaft Torque, it is possible to control the minimum torque. My particular application calls for the torque to be approximately 30% with the collective bottomed at 100% Nr. Moving point #2 (of the three allowable points) from 70% to 30%, as an example, resulted in a more desirable torque with the collective bottomed. It also seems to have a positive effect on overall torque stability (when making collective changes) do, most likely, to the fact that the torque is less likely to go all the way to zero.

Example:
1508[TBLDB]CN1 to Shaft Torque
Points: 3
0 0
30 0.031
100 1.8

Other notes: “rated_shaft_hp” seems to have no effect. “maximum_torque” seems to be the only property for setting a [turboshaft_engine] output power. Is there something I’m missing? Does “rated_shaft_hp” affect something I haven’t detected?

My application is using the de-rated T-58-8B so I used the 1548[TBLDB] Atmospheric density on shaft torque to maintain 100% torque up to the critical density altitude of around 14,000 – 18,000 ft where torque starts to fall off. This has nothing to do with the thread topic “PID” but I thought I’d mention it just the same. Your full rated T-58 may be able to deliver 100% transmission torque up to 6,000 or 8,000 ft …depends. In any event, food for thought. :)

Example:
1548[TBLDB] Atmospheric density on shaft torque
Points: 10
0.000225004569871995 0.05
0.000484114696450466 0.1
0.000743202339008197 0.15
0.00100232117572996 0.3
0.00126142730523735 0.7
0.00152055865389664 0.95
0.0017349041 1
0.0019492694 1
0.0021636347 1
0.002378 1

One last off topic bit - Have you found a way to get Nf/Nr needle splits when you cut the engine? Apparently, in FSX, my freewheeling coupling is frozen. :laughing:

Cheers,
Ron
 
Ron,
To be honest, I have not seriously looked at the helo turbine .air file in any detail up to now. I surely will now that you have brought up these points. One thing I had noticed is the use of air density in calculating shaft torque against altitude which is correct. I also noticed that the helo 1503 and 1504 tables are for CN1 whereas for jets they are for CN2 and I'm still trying to get to grips with the difference.

Another oddity in the ESP helo turbine air file description is that they refer to turboprops throughout!

I'm sort of tied up with jet turbine air files at the moment, but I will have a hard look at the helo and turboprop file when I'm done.

Regarding rated_shaft_hp, this may be one of those config file entries that make you feel good when you enter them but actually do nothing in FS. In any case hp and torque are interchangeable and the model appears to work on torque.

Thanks for the inputs, more food for thought, will get back to you when I have something sensible to say!

Roy
 
Hi Roy,

sorry for letting you wait, had some real life trouble to work on. I am not using the original sk.air file, I replaced them by the EH-101 airfile as well as the aircraft.cfg.

Right now I am back to manual engine control, as the governor kills me. I am just trying to dig for a possibilitie to "toggle" the governor out of the sim...
 
Also sorry for the late response, I've been away for 3 weeks.

I'm at a bit of a loss here, Seems we both did the same thing with the air and config files and I have really stable N1 and torque. Some overshoot on single engine start sequences, but it damps done real quick.

I'm assuming you totally replaced anything to do with engines, rotor etc in the UKMIL config file including the propellor section?

Roy
 
Back
Top