Jump to content
The simFlight Network Forums

Brake force question


Recommended Posts

Hi Pete,

I have a question regarding brakes.

Left and right brake value's are at offsets 0bc4 and 0bc6. Also from keybord are 0c00 and 0c01.

Offsets 3416 and 3418 are for axis input and I think that you aplly them at 0bc4 and obc6. Correct me if I am wrong until now.

What I want to do is to change the brake force (without changing the brake value offsets). Is this possible? Any idea?

regards,

Achilles

Link to comment
Share on other sites

I have a question regarding brakes.

Left and right brake value's are at offsets 0bc4 and 0bc6. Also from keybord are 0c00 and 0c01.

0BC4 and 0BC6 are the brake axes. The 0C00 and 0C01 bytes are a remnant from FS98 days, emulated by FSUIPC since FS2002 at least, and operate the brake pressure decay when using a Brakes button or key control, rather than an axis. Without that decay time, braking would be only on or off with those controls instead of increasing when held/repeated and reducing when not.

Offsets 3416 and 3418 are for axis input and I think that you aplly them at 0bc4 and obc6. Correct me if I am wrong until now.

3416 and 3418 are merely the copies for Fly-by-Wire operation, when the brakes are disconnected by using 341A. They are not control offsets, just copies for application's information. FSUIPC doesn't use them -- an FBW application would use them, or one doing its own sophisticated braking system (taking into account wet, sloping, icy runways for instance, like the Thomas Richter braking utilities). They might modify the value before writing it to 0BC4 or 0BC6

What I want to do is to change the brake force (without changing the brake value offsets). Is this possible? Any idea?

Yes, as just described and documented for those offsets. disconnect the brakes via 341A, read those values at 3416/8, change them, and write them to 0BC4/6, as described.

Regards

Pete

Link to comment
Share on other sites

  • 1 month later...

Hi,

disconnecting the brake axis and putting my own algorithm in between as described works just fine for the pedals.

But how can i influence braking using keys/buttons (e.g. '.')?

In my case i want to limit the maximum brake pressure.

Thanks for your help!

Florian

Link to comment
Share on other sites

But how can i influence braking using keys/buttons (e.g. '.')?

In my case i want to limit the maximum brake pressure.

You'd need to override the brakes somehow. Maybe by reading the braking value and writing a lower value each time it gets near your desired threshold. The brake buttons operate one of the three FS controls: Brakes (.) Brakes left (F11) and Brakes right (F12), on FS9, and those controls don't give maximum braking immediately, they accumulate by continued pressing or re-pressing, and decay when you stop, so you should have ample time to spot this and apply your limit.

Regards

Pete

Link to comment
Share on other sites

As soon as an value is written to 0bc4/0bc6 once, FSX-braking is disabled completely. (Brakes get stuck on the written value).

Again no problem with pedals as I only forward an permanent stream of axis data, but a big problem with braking by key/button only.

Is there a way to resume FSX the braking algorithms after applying an value to 0bc4/0bc6?

Thanks!

Florian

Link to comment
Share on other sites

As soon as an value is written to 0bc4/0bc6 once, FSX-braking is disabled completely. (Brakes get stuck on the written value).

Yes, because that's the same as having a brake pedal axis kept pressed at that point. You need to use the 0C00, 0C01 bytes which emulate the momentary effect of the key controls and include the decay.

Regards

Pete

Link to comment
Share on other sites

Applying the same value on 0c00 und 0c01 results in very different braking pressure applied.

E.g. an value of 137 results in ~11000 in 0bc4 and ~7000 in 0bc6.

Is this intended?

It should be applying the exact same valuer in both (200 scales to the max 16k). But the value starts decaying immediately, in a proper decay curve -- ie inverse exponential, so a larger value is decreasing fast.

Anyway, I used FSUIPC's monitoring facilities and here are the results, FSX first, FS9 second:

********* FSUIPC4, Version 4.593 by Pete Dowson *********
...
   271453 Monitor IPC:0C00 (U8) = 137
   271453 Monitor IPC:0C01 (U8) = 137
   271484 Monitor IPC:0C00 (U8) = 127
   271484 Monitor IPC:0C01 (U8) = 127
   271484 SimRead: 0BC4="BRAKE LEFT POSITION"    <<< First response from SimConnect (async operation)
            FLT64: 0.684978306293
   271484 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.462377429008
   271515 Monitor IPC:0BC4 (U16) = 11223
   271515 Monitor IPC:0BC6 (U16) = 7576
   271531 Monitor IPC:0C00 (U8) = 117
   271531 Monitor IPC:0C01 (U8) = 117
   271531 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.41038697958
   271531 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.41038697958
   271562 Monitor IPC:0BC4 (U16) = 6724
   271562 Monitor IPC:0BC6 (U16) = 6724
   271625 Monitor IPC:0C00 (U8) = 107
   271625 Monitor IPC:0C01 (U8) = 107
   271625 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.358396500349
   271625 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.358396500349
   271640 Monitor IPC:0BC4 (U16) = 5872
   271640 Monitor IPC:0BC6 (U16) = 5872
   271671 Monitor IPC:0C00 (U8) = 97
   271671 Monitor IPC:0C01 (U8) = 97
   271671 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.306342571974
   271671 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.306342571974
   271703 Monitor IPC:0BC4 (U16) = 5019
   271703 Monitor IPC:0BC6 (U16) = 5019
   271718 Monitor IPC:0C00 (U8) = 87
   271718 Monitor IPC:0C01 (U8) = 87
   271718 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.258564978838
   271718 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.258564978838
   271750 Monitor IPC:0BC4 (U16) = 4236
   271750 Monitor IPC:0BC6 (U16) = 4236
   271796 Monitor IPC:0C00 (U8) = 77
   271796 Monitor IPC:0C01 (U8) = 77
   271796 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.220571935177
   271796 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.220571935177
   271828 Monitor IPC:0BC4 (U16) = 3614
   271828 Monitor IPC:0BC6 (U16) = 3614
   271859 Monitor IPC:0C00 (U8) = 67
   271859 Monitor IPC:0C01 (U8) = 67
   271859 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.182578876615
   271859 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.182578876615
   271875 Monitor IPC:0BC4 (U16) = 2991
   271875 Monitor IPC:0BC6 (U16) = 2991
   271937 Monitor IPC:0C00 (U8) = 57
   271937 Monitor IPC:0C01 (U8) = 57
   271937 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.144585847855
   271937 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.144585847855
   271968 Monitor IPC:0BC4 (U16) = 2369
   271968 Monitor IPC:0BC6 (U16) = 2369
   272000 Monitor IPC:0C00 (U8) = 47
   272000 Monitor IPC:0C01 (U8) = 47
   272000 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.106592819095
   272000 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.106592819095
   272031 Monitor IPC:0BC4 (U16) = 1746
   272046 Monitor IPC:0BC6 (U16) = 1746
   272046 Monitor IPC:0C00 (U8) = 37
   272046 Monitor IPC:0C01 (U8) = 37
   272046 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.0751999020576
   272046 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.0751999020576
   272078 Monitor IPC:0BC4 (U16) = 1232
   272078 Monitor IPC:0BC6 (U16) = 1232
   272109 Monitor IPC:0C00 (U8) = 27
   272109 Monitor IPC:0C01 (U8) = 27
   272109 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.0591833032668
   272109 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.0591833032668
   272140 Monitor IPC:0BC4 (U16) = 970
   272140 Monitor IPC:0BC6 (U16) = 970
   272171 Monitor IPC:0C00 (U8) = 17
   272171 Monitor IPC:0C01 (U8) = 17
   272171 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.0431862324476
   272187 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.0431862324476
   272203 Monitor IPC:0BC4 (U16) = 708
   272218 Monitor IPC:0BC6 (U16) = 708
   272234 Monitor IPC:0C00 (U8) = 7
   272250 Monitor IPC:0C01 (U8) = 7
   272250 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.0271891597658
   272250 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.0271891597658
   272281 Monitor IPC:0BC4 (U16) = 445
   272281 Monitor IPC:0BC6 (U16) = 445
   272312 Monitor IPC:0C00 (U8) = 0
   272312 Monitor IPC:0C01 (U8) = 0
   272312 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0.0111920889467
   272312 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0.0111920889467
   272343 Monitor IPC:0BC4 (U16) = 183
   272343 Monitor IPC:0BC6 (U16) = 183
   272375 SimRead: 0BC4="BRAKE LEFT POSITION"
            FLT64: 0
   272375 SimRead: 0BC6="BRAKE RIGHT POSITION"
            FLT64: 0
   272406 Monitor IPC:0BC4 (U16) = 0
   272406 Monitor IPC:0BC6 (U16) = 0

It is odd that the inital resulting values are so different. I have no idea why. The computation code for the value to be written is the same for C00 and C01 -- only a flag tells the difference. It is something happening insiode FS.

As you see above things step into line immediately afterwards. Within 100 mSecs they are even reading the exact same values on each step. I really don't think anyone will be able to detect any discrepancy even assuming there is actually a real one at the brake application level. As observers through a rather circuitous route we can't really tell, you have to try it in practice.

The same test on FS9 shows a similar result, though its 0BC4/6 brake readouts are based on a max of 32767, annoyingly enough.

********* FSUIPC, Version 3.976 by Pete Dowson *********
...
   312860 Monitor IPC:0C00 (U8) = 137
   312860 Monitor IPC:0C01 (U8) = 137
   312907 Monitor IPC:0BC4 (U16) = 22444
   312907 Monitor IPC:0BC6 (U16) = 15150
   312907 Monitor IPC:0C00 (U8) = 127
   312907 Monitor IPC:0C01 (U8) = 127
   312954 Monitor IPC:0BC4 (U16) = 13447
   312954 Monitor IPC:0BC6 (U16) = 13447
   312954 Monitor IPC:0C00 (U8) = 117
   312954 Monitor IPC:0C01 (U8) = 117
   313000 Monitor IPC:0BC4 (U16) = 11743
   313000 Monitor IPC:0BC6 (U16) = 11743
   313000 Monitor IPC:0C00 (U8) = 107
   313000 Monitor IPC:0C01 (U8) = 107
   313063 Monitor IPC:0BC4 (U16) = 10037
   313063 Monitor IPC:0BC6 (U16) = 10037
   313063 Monitor IPC:0C00 (U8) = 97
   313063 Monitor IPC:0C01 (U8) = 97
   313110 Monitor IPC:0BC4 (U16) = 8472
   313110 Monitor IPC:0BC6 (U16) = 8472
   313110 Monitor IPC:0C00 (U8) = 87
   313110 Monitor IPC:0C01 (U8) = 87
   313157 Monitor IPC:0BC4 (U16) = 7227
   313157 Monitor IPC:0BC6 (U16) = 7227
   313157 Monitor IPC:0C00 (U8) = 77
   313157 Monitor IPC:0C01 (U8) = 77
   313204 Monitor IPC:0BC4 (U16) = 5982
   313204 Monitor IPC:0BC6 (U16) = 5982
   313204 Monitor IPC:0C00 (U8) = 67
   313204 Monitor IPC:0C01 (U8) = 67
   313266 Monitor IPC:0BC4 (U16) = 4737
   313266 Monitor IPC:0BC6 (U16) = 4737
   313266 Monitor IPC:0C00 (U8) = 57
   313266 Monitor IPC:0C01 (U8) = 57
   313360 Monitor IPC:0BC4 (U16) = 3492
   313360 Monitor IPC:0BC6 (U16) = 3492
   313360 Monitor IPC:0C00 (U8) = 47
   313360 Monitor IPC:0C01 (U8) = 47
   313407 Monitor IPC:0BC4 (U16) = 2464
   313407 Monitor IPC:0BC6 (U16) = 2464
   313407 Monitor IPC:0C00 (U8) = 37
   313407 Monitor IPC:0C01 (U8) = 37
   313469 Monitor IPC:0BC4 (U16) = 1939
   313469 Monitor IPC:0BC6 (U16) = 1939
   313469 Monitor IPC:0C00 (U8) = 27
   313469 Monitor IPC:0C01 (U8) = 27
   313500 Monitor IPC:0BC4 (U16) = 1415
   313500 Monitor IPC:0BC6 (U16) = 1415
   313500 Monitor IPC:0C00 (U8) = 17
   313500 Monitor IPC:0C01 (U8) = 17
   313563 Monitor IPC:0BC4 (U16) = 890
   313563 Monitor IPC:0BC6 (U16) = 890
   313563 Monitor IPC:0C00 (U8) = 7
   313563 Monitor IPC:0C01 (U8) = 7
   313610 Monitor IPC:0BC4 (U16) = 366
   313610 Monitor IPC:0BC6 (U16) = 366
   313610 Monitor IPC:0C00 (U8) = 1
   313610 Monitor IPC:0C01 (U8) = 1
   313657 Monitor IPC:0BC4 (U16) = 0
   313657 Monitor IPC:0BC6 (U16) = 0
   313657 Monitor IPC:0C00 (U8) = 0
   313657 Monitor IPC:0C01 (U8) = 0

Both are in line within 100 or so milliseconds, so it shouldn't be a bother? I could investigate the innards of FS to see why the same values result in different initial pressures, but I won't have time this week.

Regards

Pete

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.