Elvas Tower: Relation Throttle / Tractive Force - Elvas Tower

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Relation Throttle / Tractive Force Rate Topic: -----

#1 User is offline   Gehe 

  • Apprentice
  • Group: Status: Active Member
  • Posts: 48
  • Joined: 05-January 14
  • Gender:Male
  • Simulator:MSTS
  • Country:

Posted 19 January 2014 - 04:24 AM

Hi All,

I did not find a similar topic in the forum so I started this new one.

During my first tests with OR I experienced with diesel engines a non-linear relation between the position (notch) of the throttle and the power / tractive force. For "higher" notches e.g. 60 or 80% it was a linear decrease of the Maximum value but for smaller values 20 to 50% the tractive force was smaller than expected.
Also the maximum rpm as given in the eng file was not shown i the HUD. The value indicated there was 5-10% lower. The maximum power shown in the HUD was also 1-2% smaller than defined in the eng. file.
But I guess this is due to the adhesion model used in OR.

Refering to my first Point: Does somebody know how the modeling is done by OR for the relation of the
throttle - tractive force is or should be?
Or is there any documentatio available?


Regards

Gehe

#2 User is offline   Matej Pacha 

  • Engineer
  • Group: Status: Contributing Member
  • Posts: 571
  • Joined: 08-December 10
  • Gender:Male
  • Location:Slovakia
  • Country:

Posted 19 January 2014 - 06:15 AM

Hi Gehe,
That nonlinearity you are experiencing is something new in ORTS. KUJU didn't know much about diesels and in MSTS the power curves, throttle and motive forces are really different from the real world. When implementing the gearbox feature, I created a brand new model ready for more detailed diesel implementation. Now it is still quite simple, but more complex than in MSTS. For example, in ORTS you cannot overload the engine by wrong ENG settings. Your issues could be caused by these wrong settings in the ENG file (if so, please send me a download link for your diesel loco), or some 1-5% could be caused by extremly low FPS. Finally, the docmuentation you are asking for is still a work in progress, so please be patient.

Best regards,

Matej

#3 User is offline   Gehe 

  • Apprentice
  • Group: Status: Active Member
  • Posts: 48
  • Joined: 05-January 14
  • Gender:Male
  • Simulator:MSTS
  • Country:

Posted 19 January 2014 - 10:46 AM

Hi Matej,

thanks for your quick answer.
I will wait for the documentation to get the details of the model implemented.
I guess it is a challenge to model the behaviour of the dofferent types diesel-hydraulic (power goes with rpm**3) and diesel electric (with the differences between DC Generator /DC traction Motors, DC AC/DC and AC/AC locos).

Maybe you are the right contact for another topic: friction.
I saw that in OR additionally to the pure Davis equation a "starting resistance" is implemented in the friction model (like in reality). I n reality the values for this "starting resistance" depend on the type of bearings, the duration of the standstill of the train, the type of loco.
My question is here: Is it possible to configure these parameters in OR? Maybe I have to wait here also for some documentation which is work in progress.

If it is better to open up a new thread for this topic please let me know.


Regards

Gehe

#4 User is offline   Matej Pacha 

  • Engineer
  • Group: Status: Contributing Member
  • Posts: 571
  • Joined: 08-December 10
  • Gender:Male
  • Location:Slovakia
  • Country:

Posted 19 January 2014 - 02:07 PM

Well, this is something very old in ORTS and I don't even remember who is responsible for this. I only know that it is working nearly the same way as in MSTS (I've never dealed with this).
Maybe you should check out the MSTS ENG file manual to get the right answer. In future I'd like to add the possibility to set up Davis coefs directly as it is the common way of wagon data in Europe, with this starting resistance as well.

If you are familiar with C or C# language, you can see how the coefs are calculated (can be found in RollingStock/MSTSWagon.cs).
The parser is expecting the friction data in ENG/WAG file like this:
Friction (
		c1	e1	v2	c2	e2
	)


And the code:
public void ParseFriction(STFReader stf)
        {
            stf.MustMatch("(");
            float c1 = stf.ReadFloat(STFReader.UNITS.Resistance, null);
            float e1 = stf.ReadFloat(STFReader.UNITS.None, null);
            float v2 = stf.ReadFloat(STFReader.UNITS.Speed,null);
            float c2 = stf.ReadFloat(STFReader.UNITS.Resistance, null);
            float e2 = stf.ReadFloat(STFReader.UNITS.None, null);
            stf.SkipRestOfBlock();
            if (v2 < 0 || v2 > 4.4407f) // > 10 mph
            {   // not fcalc ignore friction and use default davis equation
                // Starting Friction 
                //
                //                      Above Freezing   Below Freezing
                //    Journal Bearing      25 lb/ton        35 lb/ton   (short ton)
                //     Roller Bearing       5 lb/ton        15 lb/ton
                //
                // [2009-10-25 from http://www.arema.org/publications/pgre/ ]
                //Friction0N = MassKG * 30f /* lb/ton */ * 4.84e-3f;  // convert lbs/short-ton to N/kg 
                DavisAN = 6.3743f * MassKG / 1000 + 128.998f * 4;
                DavisBNSpM = .49358f * MassKG / 1000;
                DavisCNSSpMM = .11979f * 100 / 10.76f;
                Friction0N = DavisAN * 2.0f;            //More firendly to high load trains and the new physics
            }
            else
            {   // probably fcalc, recover approximate davis equation
                float mps1 = v2;
                float mps2 = 80 * .44704f;
                float s = mps2 - mps1;
                float x1 = mps1 * mps1;
                float x2 = mps2 * mps2;
                float sx = (x2 - x1) / 2;
                float y0 = c1 * (float)Math.Pow(mps1, e1) + c2 * mps1;
                float y1 = c2 * (float)Math.Pow(mps1, e2) * mps1;
                float y2 = c2 * (float)Math.Pow(mps2, e2) * mps2;
                float sy = y0 * (mps2 - mps1) + (y2 - y1) / (1 + e2);
                y1 *= mps1;
                y2 *= mps2;
                float syx = y0 * (x2 - x1) / 2 + (y2 - y1) / (2 + e2);
                x1 *= mps1;
                x2 *= mps2;
                float sx2 = (x2 - x1) / 3;
                y1 *= mps1;
                y2 *= mps2;
                float syx2 = y0 * (x2 - x1) / 3 + (y2 - y1) / (3 + e2);
                x1 *= mps1;
                x2 *= mps2;
                float sx3 = (x2 - x1) / 4;
                x1 *= mps1;
                x2 *= mps2;
                float sx4 = (x2 - x1) / 5;
                float s1 = syx - sy * sx / s;
                float s2 = sx * sx2 / s - sx3;
                float s3 = sx2 - sx * sx / s;
                float s4 = syx2 - sy * sx2 / s;
                float s5 = sx2 * sx2 / s - sx4;
                float s6 = sx3 - sx * sx2 / s;
                DavisCNSSpMM = (s1 * s6 - s3 * s4) / (s3 * s5 - s2 * s6);
                DavisBNSpM = (s1 + DavisCNSSpMM * s2) / s3;
                DavisAN = (sy - DavisBNSpM * sx - DavisCNSSpMM * sx2) / s;
                Friction0N = c1;
                if (e1 < 0)
                    Friction0N *= (float)Math.Pow(.0025 * .44704, e1);
            }
        }


#5 User is offline   Gehe 

  • Apprentice
  • Group: Status: Active Member
  • Posts: 48
  • Joined: 05-January 14
  • Gender:Male
  • Simulator:MSTS
  • Country:

Posted 01 February 2014 - 09:08 AM

Hi Matej,


I followed your advice to have a look into the source code, not only with respect to the starting resistance but also due to the behaviour of the electric locos (looks like they use the "general model").
Here I found that for the power delivered the relation (throttle_percentage**2)*(max_power) is used while for the force throttle percentage*max_force is used, limited by the power given by the first relation. So this leads to the result that if you start e.g. with 50% throttle you get 50% of the max_force till the velocity at which the corresponding power exceeds 25% of the max power. Then curve follows the normal hyperbolic relation.

I am just curious: What is the reason behind this Approach? To have a behaviour allowing for a "good start" but being sensible in the "lower part" of the output power?


Regards
Gehe

#6 User is offline   Matej Pacha 

  • Engineer
  • Group: Status: Contributing Member
  • Posts: 571
  • Joined: 08-December 10
  • Gender:Male
  • Location:Slovakia
  • Country:

Posted 01 February 2014 - 10:46 AM

Hi,
just a quick answer: it's been there since the very start of OR and probably yes, it'd be easier to start a train. Nevertheless, I'm planning to make these functions adjustable. You can do it already, using MaxTractiveForceCurves and ThrottleController. In this case, the simple computation is overriden. Things have not been so easy to do because of new OR specific parameters restriction. It's allowed now so I'm just waiting for some free time to work on it.
Matej

#7 User is offline   Gehe 

  • Apprentice
  • Group: Status: Active Member
  • Posts: 48
  • Joined: 05-January 14
  • Gender:Male
  • Simulator:MSTS
  • Country:

Posted 13 April 2014 - 06:02 AM

Hi Matej,

Related to the Topic " relation throttle value vs. tractive power for diesels I had a look into the source code and did some tests retrieving the following understanding:

In OR the throttle percentage defines the rpm of the engine 40% throttle means 40% of the difference between idle and max rpm.
In a second step a table is applied which gives the Maximum power at the rpm value e.g. 81% of the maxium power at max rpm. Then the throttle value is applied once more to this 81%.
In this example then the tactive power at 40 % would mean 81%*40% is about 32.4% of the maximum power of the loco

Is this understanding correct? I am not sure to understand the source code correctly.

If I am right with my assumptions, what is ratio behind this modeling. Why do I not just apply the power which belongs to this rpm value 81%.
Could you please be so kind to give me some hints.


Cheers
Gehe

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users