Make Your GEs Load Slowly in Open Rails 1.6

Collapse
This is a sticky topic.
X
X
 
  • Time
  • Show
Clear All
new posts
  • pschlik
    Senior Member



    • Jun 2011
    • 289
    • Missouri
    • MSOR

    #1

    Make Your GEs Load Slowly in Open Rails 1.6

    Anyone who's paid enough attention over the years will have noticed that diesel and electric locomotives in OR change power output immediately. The only time a change in tractive power/braking is smooth is on diesel locomotives increasing power, where the power changes in sync with the increase in engine RPM. But everything else, from decreasing power to adjusting dynamic braking happened instantly. For various reasons, this is not very accurate at all. Most things in a locomotive take time, either because of the physical properties of the system like inertia, capacitance, and inductance, or because the control system has been explicitly and intentionally set up to provide smooth handling.

    A new feature set in Open Rails 1.6 that's easy to miss (unless you have looked through the manual, which sometimes is the best way to spot new features) overcomes this limitation by giving ways to control how quickly tractive effort/braking effort and tractive power/braking power build up. This can be used to add a bit of smoothing to clean up the otherwise jerky instantaneous changes in tractive effort, or can go as far to completely change the operating experience of a diesel or electric locomotive to match the loading behavior of the real thing (which may be fast or may be slow-it takes some research to figure this out).

    Parameters
    There are 12 "ramp rate" values you can control. That's 6 for power, and 6 for braking. And for both power and braking, there are 3 values to control the tractive effort rate of change and 3 values to control the power rate of change. These 3 values specify the maximum rate of increase, maximum rate of decrease, and maximum rate of decrease when targeting 0 power/braking.
    Code:
    Engine ( Comment ( ALL these parameters go in the Engine section of the .eng file. )
        Comment ( Controls for tractive effort rate of change. )
        ORTSTractiveForceRampUpRate ( N/s, kN/s, lb/s, or lbf/s value )
        ORTSTractiveForceRampDownRate ( N/s, kN/s, lb/s, or lbf/s value )
        ORTSTractiveForceRampDownToZeroRate ( N/s, kN/s, lb/s, or lbf/s value )
        
        Comment ( Controls for tractive power rate of change. )
        ORTSTractivePowerRampUpRate ( W/s, kW/s, or hp/s value )
        ORTSTractivePowerRampDownRate ( W/s, kW/s, or hp/s value )
        ORTSTractivePowerRampDownToZeroRate ( W/s, kW/s, or hp/s value )
        
        
        Comment ( Controls for dynamic brake effort rate of change. )
        ORTSDynamicBrakeForceRampUpRate ( N/s, kN/s, lb/s, or lbf/s value )
        ORTSDynamicBrakeForceRampDownRate ( N/s, kN/s, lb/s, or lbf/s value )
        ORTSDynamicBrakeForceRampDownToZeroRate ( N/s, kN/s, lb/s, or lbf/s value )
        
        Comment ( Controls for dynamic brake power rate of change. )
        ORTSDynamicBrakePowerRampUpRate ( W/s, kW/s, or hp/s value )
        ORTSDynamicBrakePowerRampDownRate ( W/s, kW/s, or hp/s value )
        ORTSDynamicBrakePowerRampDownToZeroRate ( W/s, kW/s, or hp/s value )
    )
    Hopefully it's fairly self-explanatory what each of these controls. The "RampUpRate" values are used when the amount of traction/braking demanded by the controls is a larger magnitude than the current amount, the "RampDownRate" values are used when the amount of traction/braking demanded by the controls is a lower magnitude than the current amount, and the "RampDownToZeroRate" values are used when no traction/braking is demanded by the controls (bypassing the "RampDownRate" value).​ If no value is entered, the rate is assumed to be infinite, so changes would happen immediately. Be sure to enter values for all 12 parameters if you wish to avoid instant changes in power or braking.

    Note that all of these 12 values are rates of change, not times or durations. If something takes 60 seconds to reach 1800 horsepower, the "PowerRamp" rate you type in would be 1800 hp / 60 s = "30hp/s". You do NOT enter "60s". This also means that the rates of change are totally linear, which won't perfectly replicate some real behaviors such as turbo lag which is very nonlinear (how quickly a turbocharged engine can apply more power increases with the amount of power that's already being produced, so it's exponential, not linear). Furthermore, if two rates of change have conflicting values (such as an ORTSTractiveForceRampDownRate of 1000000 lb/s but an ORTSTractivePowerRampDownRate of 10 hp/s while your locomotive is currently making 3000 hp) then whichever is currently the slower rate of change has influence. And consider all the "PowerRamp" rates are rates for rail power, not generator power or engine power, rail power is always lower than generator power and manufacturers often do not tell you what the rail power is.​


    Why so many settings? Well, research determined that many locomotives have rate control that's a bit too complicated to have just 1 or 2 settings for. For example, having separate settings for force and power allows for more nuanced behavior. The "ForceRamp" rates will be more dominant at very low speed, where large changes in motor force can happen with very minimal power input (power is force x speed, after all, so if speed is a small number power is a small number). On the other hand, "PowerRamp" rates have the most influence at high speeds, as even small changes in motor force would require large changes in power. Many locomotives take less time to reach maximum tractive effort when stationary than they would take to reach maximum power output when rolling. Some don't even control power output directly, simply giving whatever the engine has available, so having separate settings for these makes such varied configurations easier to replicate.​


    Tips For Setting Parameters
    12 values may be a lot, but you can take some shortcuts when implementing multiple similar locomotives. For locomotives in the same series (same motors, same control system, same engine family), the "TractivePowerRamp" values can be reused (despite smaller engines making less power, they can also use smaller turbos, which can be assumed to roughly cancel out to give similar power ramp rates), regardless of changes in number of motors or gear ratio. Then the "TractiveForceRamp" values can be scaled with the number of motors (double the motors, double the max tractive effort and rate of tractive effort change) and scaled with gear ratio (gear ratios for higher speed lead to proportionally lower max tractive effort and rates of tractive effort change), though they do not need to be scaled with power rating. The "DynamicBrakePowerRamp" values should scale with the number of motors (more motors usually means more max dynamic braking power, and thus faster rate of change of dynamic braking power), though gear ratio and tractive power rating are irrelevant. And, like for tractive force, "DynamicBrakeForceRamp" values should also scale with the number of motors and scale with the gear ratio.
    Scaling things linearly as such is not foolproof, as some locomotives and control systems don't necessarily take twice as long when there's twice the number of motors, but it can reduce your workload to calculate the set of parameters once, then multiply and divide values to adjust for locomotives in the same family with different engines, gear ratios, and axle counts.

    Now, that is assuming you have determined each of these 12 values in the first place. Determining sensible values for all these can be quite difficult. Locomotive manufacturers generally don't tell you how quickly things react (they'd love to tell you a big horsepower number...as long as you don't think about the whole minute it would take to achieve that horsepower) so you'll have to stare at ammeters, tractive effort gauges, diagnostic screens, and whatnot to determine how fast force and power are changing on the real thing. Even then, some vibes and anecdotes will likely be required to settle on anything at all.
    General trends I've noticed are that reductions in traction tend to be at least twice as fast as increases in traction, while dynamic brakes generally seem to be equal speed increasing and decreasing. Just about everything in both power and braking will run down to 0 force in 1 to 5 seconds, as this is usually done by killing generator excitation completely, with residual excitation dying down over the course of a few seconds. However, locomotives with simpler control systems should be set to run down to 0 instantly as the simplest thing to do is just opening the motor circuit, which will immediately kill any power or tractive effort (at the expense of wearing down contactors). Simpler control systems are also more likely to not (directly) regulate the rate of power delivery in traction or braking, while somewhat regulating tractive effort. Good knowledge of the control system used will be needed to faithfully represent how it works.

    Luckily, most people don't have good knowledge of control systems used, so behaviors that are merely approximately correct will be appreciated more than the default behavior with instantaneous changes. I will be using this feature in the next version of my physics mods to offer some examples, but this feature is also the main reason I still haven't completed 1.6 versions of my mods despite 1.6 being out for multiple months. It has taken a lot of digging through documentation, even finding lots of new documentation, just to not find any good information on how anything should respond. Then repeat this obsessive research process for dozens of locomotives, each with multiple gear ratios and multiple dynamic brake configurations, and of course it takes an eternity. And despite all that, this does not mean the values I have ended up with are strictly correct or accurate. I don't touch real trains, so I do not have all the qualitative or quantitative data that's out there. Good luck for whoever wants to go through this adventure on their own time!


    One More Important Parameter
    Now one caveat with all this, setting custom "TractivePowerRamp" rates on a diesel locomotive can cause the power delivered by the locomotive to exceed the power rating of the diesel engine. In real life, this would have consequences like stalling the engine but the diesel engine model doesn't behave that way in OR. Nevertheless, real locomotives have systems to limit power to what the engine can produce, so this can now be enforced in OR too using ORTSTractiveForceIsPowerLimited ( 1 ). Engine RPM will matter, so setting sensible values for the diesel engine RPM increase and decrease rates is still important, and I find people actually tend to set these too high.
    Code:
    Engine ( Comment ( This only goes in the Engine section of the .eng file. )
        Comment ( Default setting is 0 or false, which gives MSTS compatible behavior. )
        ORTSTractiveForceIsPowerLimited ( 1 )
    )​
    This one is not turned on by default as some existing locomotives rely on the disconnect between the engine and the tractive effort to function (things like slugs have been implemented as 'diesel' locomotives with 'engines' that make 0 horsepower). We cannot enforce realistic behavior by default when there's 25 years of content that doesn't want to deal with realism.
    Last edited by pschlik; 12-06-2025, 00:16.

    Contributing to ORTS since 2023
    Find me on GitHub @SteelFill

    Like what I do? Join my Patreon to help me do more!
  • pschlik
    Senior Member



    • Jun 2011
    • 289
    • Missouri
    • MSOR

    #2
    Practical Example
    As an example of how you might set the ramp rates, we can consider something like a C30-7. The dash 7s are interesting as they are known for being quite slow to power up, but they have a fully featured control system (if you've ever heard CHEC, that is the control system) that actively adjusts power delivery in a similar way to the ramp rates (except again, power increase is quite nonlinear due to turbocharging). The issue is that GE doesn't really tell you how quick anything is supposed to be, so this is also an example of relying on conjecture and estimates.



    Traction Power Ramp
    Before considering any ramp rates, it's easier to consider how long things should take. Let's start with traction power. The best explanation I've seen of dash 7 loading suggested this thing would take 80 seconds to reach full power (this has obviously gotten much quicker for newer GE models, with the compound-turbo ET44s taking just over 30 seconds to reach full power). I have some documentation that says the control system limits the rate of change of the power signal such that it would take at least 18 seconds to reduce power normally, and setting the throttle to idle immediately cuts generator excitation but waits to open the motor circuit until amperage has reduced, so it should be around 1 second to reduce to idle.

    Now that some times are known, these need to be converted to rates in hp/s. We have the seconds, just need to establish the horsepower. You might be tempted to use 3000 horsepower for a C30-7 but remember that Open Rails is interested in the rail horsepower, while GE is telling you the traction horsepower. There's already been plenty of research into how efficient these things are, and we know that the rail power of a C30-7 is more like 2500 horsepower. Now that we have a horsepower and a time, the 3 "TractivePowerRamp" parameters can be defined as horsepower divided by time.

    Power Increase: 2500hp / 80s = 31.25hp/s; ORTSTractivePowerRampUpRate ( 30hp/s )
    Power Decrease: 2500hp / 18s = 138.9hp/s; ORTSTractivePowerRampDownRate ( 140hp/s )
    Power Decrease to Zero: 2500hp / 1s = 2500hp/s; ORTSTractivePowerRampDownToZeroRate ( 2500hp/s )
    (I'm rounding the results so the numbers are easier to work with, and the slight change in performance won't be very noticeable.)

    Now I know I said I'm talking about a C30-7 but recall that some shortcuts can be taken to apply ramp rates to other similar locomotives. For example, a B30-7 should also use these numbers as it uses the same engine. The C36-7 and B36-7 could also reasonably use these same numbers, as the 3600-horsepower engine has the same displacement as the 3000-horsepower engine, but just relies on more turbo boost. Using the same rates, but with a higher horsepower rating, will make changes in power take longer, but that makes sense for an engine relying heavily on turbocharging (80 seconds to 3000 horsepower becomes 96 seconds to 3600 horsepower). In reality, this is probably a slight overestimate as the actual turbo response gets faster at higher power output.

    Meanwhile, if we were to do a B23-7 with the 12-cylinder engine the same power rates might not be so appropriate (lower displacement engines make less power, but can use smaller turbochargers, and these effects usually combine to make for a faster increase to rated power). A quick estimate to account for such effects would be to multiply the rate of power increase by the square root of the ratio of engine displacement; sqrt(12 / 16) = 0.866, so 30hp/s * 0.866 = 26hp/s. This gives a slightly quicker response (80 seconds to 3000 horsepower compared to 70 seconds to 2250 horsepower.) Extrapolation like this is never perfect, so real data, which I do not have in this case, is most useful here as it's entirely possible a B23-7 takes less than 70 seconds to reach full power.

    It's also good to consider where you wouldn't want to simply use the number of cylinders as a multiplying factor. If we were considering a C30-7A, where the 12-cylinder engine was finally uprated to 3000 traction horsepower, I would not be confident taking these power ramp rates and multiplying by sqrt(12 / 16) as this would lead to a rather annoying 92 seconds to reach full power. Getting the 12-cylinder engine from 2750 horsepower (GE originally cataloged B28-7 and C28-7 locomotives with 12-cylinder engines, but these were never built) to 3000 horsepower, and later to 3150 horsepower (with the Dash 8s), requires substantial design changes that would likely change the horsepower ramp rates in ways that would not be accurately represented by this strategy.
    Also, EMD did things like having the option of supercharged engines, which don't have lag, and their turbocharged engines behave as if they are supercharged at low RPM. I hope it's obvious, but the horsepower ramp rates for a turbocharged engine will not be comparable to the ramp rates for a supercharged engine (supercharged engines can change power output much more quickly), and the ramp rates for one manufacturer's turbocharger also won't be comparable to different manufacturers'.

    Traction Force Ramp
    The same general process can be followed for the other 3 sets of ramp rates. Determine the time to go from 0-max, from max-"0", and fast from max-0, then divide the max value by the time to get a hp/s or lbf/s value. Unfortunately, I don't have much reference for how quickly a C30-7's ammeter would load (which is how we'd determine the "ForceRamp" parameters), but we can guess and demonstrate some potential interesting interactions. First, the max force has to be identified. Given the 74:18 gear ratio and 40 inch wheels that's typical on the freight dash 7s, the fact that we are talking about a 6-motor locomotive, and what I know of the GE752 motor performance at max amperage (1800 amps), a C-7s max theoretical force output is 144,000 pounds (ish). For a B-7 it'll be more like 96,000 pounds. Note that we are ignoring adhesion here, as the force rate of change doesn't depend on adhesion. Next, we need those times. This is really just a guess, but I will go for 45 seconds to reach max force, 20 seconds to return to min force, and 2 seconds to suddenly return to idle.

    The idea behind those times is to keep the thing slow, but still manageable, and demonstrate that the force rates don't have to align with the power rates (and on the control system used by dash 7s, amperage [force] is controlled independently of power). The force reduction rate is then assumed to be a bit more than twice as fast as the force up, and killing the force to 0 should still be very quick.

    Force Increase: 144000lbf / 45s = 3200lbf/s; ORTSTractiveForceRampUpRate ( 3200lbf/s )
    Force Decrease: 144000lbf / 20s = 7200lbf/s; ORTSTractiveForceRampDownRate ( 7200lbf/s )
    Force Decrease to Zero: 144000lbf / 2s = 72000lbf/s; ORTSTractiveForceRampDownToZeroRate ( 72000lbf/s )

    Once again, let's consider how this could be applied to other dash 7 units so we don't waste time recalculating these values when making other locomotives. These values in particular would be useful for any 6-axle dash 7 with the 74:18 gear ratio and 40 inch wheels, regardless of power rating as the power rating has no impact on how quickly amps initially build up. But, if the gear ratio were to change the max force value and the force rates of change would have to change (if the gear ratio increases speed by times 1.10, then the force and force rates must be divided by 1.10 and vice versa), and if the wheel diameter changed that would also affect max force and force rates of change (multiplying wheel diameter by 1.05, eg from 40 inch to 42 inch wheels, requires force values to be divided by 1.05).

    Unlike for the power ramp rates, going to a B30-7 (or any B-7) would require reducing the force ramp values due to the reduction in the number of traction motors, so multiply all "ForceRamp" values by 4 motors/6 motors = 0.666 in that case. I believe that is a reasonable assumption to make as CHEC seems to consider amperage per motor, but some other locomotives might control the rate of total (generator) amperage in which case the number of motors does not matter to the control system. (Depending on how a locomotive is wired, the 4-axle locomotive might develop tractive effort slower than, faster than, or at the same rate as the 6-axle locomotive. There is no foolproof method here.) Again, know your control systems if you want to achieve reasonable results.

    Dynamic Brake Ramp
    Dynamic brakes have some additional considerations. Unlike traction power, dynamic brake power does depend on the number of axles (though it doesn't depend on the model of engine used), so some extra effort is needed. For our typical C30-7 with 740-amp dynamic brake grids (going to ignore the ones with the separate dynamic brake box that was rated for 805 amps) 74:18 gear ratio and 40-inch wheels, the maximum dynamic brake force is 61500 pounds and maximum dynamic brake power is 3600 horsepower (peak effort occurs at 22 mph).

    This is another case of 'know your control system' but GE locomotives with CHEC actively control both motor field current (roughly analogous to dynamic brake force) and resistor grid current (roughly analogous to the square root of dynamic brake power). Some older locomotives do not directly control resistor grid current, especially on EMD's side, so changes in dynamic brake power may be nearly unlimited, with all dynamic brake control happening in relation to dynamic brake force (though, usually with a limiter on max resistor grid current). The fact that GEs are a bit smarter than that makes this setup a little more interesting.

    Unfortunately, this is another area where I simply don't have information to go off from beyond my assumptions (dynamic braking seems to be tuned for equal run up and run down rates), though it is worth noting that dynamic braking requires very little power from the engine, so the dynamic brake rates of change don't necessarily have anything to do with the traction rates of change. I'm going to assume both dynamic brake force and dynamic brake power take 10 seconds to build up and 10 seconds to die off, but 1 second to be killed if the dynamic brakes are turned off immediately. This is not a requirement, the time required to reach full force can be different from the time required to reach full power if you want it to be, but for locomotives that control both dynamic brake force and power the two times will likely be related.

    Dynamics Force Increase: 61500lbf / 10s = 6150lbf/s; ORTSDynamicBrakeForceRampUpRate ( 6150lbf/s )
    Dynamics Force Decrease: 61500lbf / 10s = 6150lbf/s; ORTSDynamicBrakeForceRampDownRate ( 6150lbf/s )
    Dynamics Force Decrease to Zero: 61500lbf / 1s = 61500lbf/s; ORTSDynamicBrakeForceRampDownToZeroRate ( 61500lbf/s )

    Dynamics Power Increase: 3600hp / 10s = 360hp/s; ORTSDynamicBrake​PowerRampUpRate ( 360hp/s )
    Dynamics Power Decrease: 3600hp / 10s = 360hp/s; ORTSDynamicBrake​PowerRampDownRate ( 360hp/s )
    Dynamics Power Decrease to Zero: 3600hp / 1s = 3600hp/s; ORTSDynamicBrake​PowerRampDownToZeroRate ( 3600hp/s )

    Like with the traction ramp rates, we can consider the consequences for changing to other locomotives in the dash 7 family. Due to the way dynamic braking functions, these settings will work for any 6-axle dash 7 with the 74:18 gear ratio and 40-inch wheels. If the gear ratio or wheel diameter changes, then the dynamic brake force ramp rates would need to be adjusted (as described in the Traction Force Ramp section), but not the dynamic brake power.​​

    And if we change to the 4-axle B30-7 (or any B-7), both the dynamic brake force and power would have to be adjusted. A quirk of the way dynamic brakes function means that both force and power would have to be multiplied by 4 motors/6 motors = 0.75.



    And that's the general method that can be employed. The exact values used should depend on the locomotive, please do not use these example values for everything! This example is neither universal nor necessarily factually accurate, so I hope you will do research on the specific locomotive you are making to understand how it powers up and powers down. Also note that I have not talked at all about ORTSMaxTractiveForceCurves nor ORTSDynamicBrakeForceCurves, but this feature set synergizes strongly will well-made tractive force and dynamic brake force curves (though it will still function with MSTS physics). All these points I made about considering gear ratios and the number of axles only make sense if you have force curves configured with such things in mind! There are some very long discussions that can be had about the realistic way to configure your force curves, but that has been a feature for years. If those force curves are set up poorly, they won't be saved by a few additional parameters here. Again, this is something my physics mods will handle in (arguably unnecessary) detail.

    For those of you who think this is complicated, consider that this is already a compromise to make the existing handling of traction/dynamic braking more customizable. If we wanted to be truly realistic, then we'd be simulating the voltage and amperage of each motor in the circuit (this is NOT happening, if it wasn't obvious) and considering things in terms of amps per second or volts per second. Perhaps that will be a 1.7 feature, have fun figuring out how field weakening works should we get to that point (lucky for you, dash 7s do not employ field weakening).
    Attached Files
    Last edited by pschlik; 12-07-2025, 21:04.

    Contributing to ORTS since 2023
    Find me on GitHub @SteelFill

    Like what I do? Join my Patreon to help me do more!

    Comment

    • derekmorton
      5500 Post Veteran



      • Nov 1999
      • 5699
      • Eltham, Victoria, Australia.
      • ORTS

      #3
      Hi Phillip,

      Thank you very much for this work, I have wanted to do something in this space but I did not know where to start.

      Comment

      Working...