Jump to content
The simFlight Network Forums

AirbusX and PFC serial throttle quad


Recommended Posts

Pete,

How are you? I recently purchased the Airbus X and to my surprise I was unable to utilize my PFC quadrant in the manner which throttles are intended to work due to some of the internal logic with the AirbusX. Aerosoft stipulates that although one can configure the throttles via FSUIPC you MUST also configure the throttles via the internal FSX axis to utilize the throttle detents of the Airbus. This obviously creates a bit of a problem for us PFC users since the quads are configured via the PFC.dll. I am probably going to ask of something which may not be possible, but is there any way that it is possible to program the PFC driver to show up as a device within FSX (Its a long shot...I may even be talking rubbish). I don't know much about the programming limitations within the awesome utilities that have allowed us Simmers vast opportunities. Also creating this option for just one add-on may not be worth the time.

Again ...just thought I would ask

Link to comment
Share on other sites

I recently purchased the Airbus X and to my surprise I was unable to utilize my PFC quadrant in the manner which throttles are intended to work due to some of the internal logic with the AirbusX. Aerosoft stipulates that although one can configure the throttles via FSUIPC you MUST also configure the throttles via the internal FSX axis to utilize the throttle detents of the Airbus.

If you visited the AirbusX forum discussions over at Aerosoft you would have seen this is already being discussed. I'm not sure what, if any, solution will be forthcoming at present, but keep an eye out here too. Guenseli (see the sticky AirbusX thread in this forum) has located the relevant L:vars to control the FADEC, and these look like a promising way to use any hardware throttle system, programmed via FSUIPC, to select the different throttle modes.

This obviously creates a bit of a problem for us PFC users since the quads are configured via the PFC.dll.

Yes, but they can be programmed in FSUIPC too.

I am probably going to ask of something which may not be possible, but is there any way that it is possible to program the PFC driver to show up as a device within FSX

No, that's not possible.

I have no doubt that there will be a solution. Airbus throttles are not continuous thrust controllers in the Boeing (or most other aircraft) senses. The throttle movement merely selects thrust modes, and those modes are selectable via FADEC commands. Programming those in FSUIPC should be possible, but it is still a matter of investigation, something which started a few days ago.

Regards

Pete

Link to comment
Share on other sites

Pete,

Thanks for your reply. I asked here for I know I would get a response from someone who understood the inner workings of the FSUIPC system. I posted something similar in the Airbus X forum (username: Kroswynd) but it has not been answered, and it appears that their forum is having some technical difficulties at the moment.

Once again thanks

Simeon

Link to comment
Share on other sites

Thanks for your reply. I asked here for I know I would get a response from someone who understood the inner workings of the FSUIPC system. I posted something similar in the Airbus X forum (username: Kroswynd) but it has not been answered, and it appears that their forum is having some technical difficulties at the moment.

The thread in the AirbusX Support Forum where I was trying to get some assistance in sorting this out was the one on Hardware Compatibility. Mathijs was sympathetic but he has to leave it to the software guys and they are probably rather overwhelmed with other support issues at present. And, as you say, the Forum is inaccessible at present else I'd give you a direct link to the relevant thread.

There is already a way around this which would involve the use of a Lua plug in issuing local variable (L:var) writes for different throttle ranges. The L:vars can select the correct thrust modes. I don't know enough about Airbus, but I understand there's no real continuous throttle control available to the pilot in any case, it is always under computer control. Is this true? I would have thought it could be switched through for emergencies, but if so I am not sure how that would be handled by the simulation.

As soon as I have something which appears to work I will publish it here, but Guenseli will probably beat me to it. I will embelish whatever he comes up with for particular application to PFC throttle quadrant use.

Note that the use of Lua plug-ins does require a registered install of FSUIPC.

Regards

Pete

Link to comment
Share on other sites

If the ATHR is off then the throttles work like a Boeing, also bringing the throttles to idle disengages the ATHR if it was already on, moving the levers to TOGA detent enables the ATHR or a least it does in the AS Airbus, I'm not sure if this last part is realistic or not from some of the comments I've read on the forum.

It's a beautiful little plane though, the VC is truly stunning, its just a shame they didn't do 2d pop out gauges for the PFD and ND because they are a little bit too small to read the detail clearly, and not doing a 2d MCDU is unforgivable in my book even though its not very complex.

Link to comment
Share on other sites

If the ATHR is off then the throttles work like a Boeing, also bringing the throttles to idle disengages the ATHR if it was already on, moving the levers to TOGA detent enables the ATHR or a least it does in the AS Airbus, I'm not sure if this last part is realistic or not from some of the comments I've read on the forum.

Okay. This explains why, when I connected my PFC throttle quadrant up, it controlled the AirbusX throttles perfectly, out of the box. I'm going to have to enable the A/T then to see what I can do ...

Anyway, with any throttle system, be it PFC or other, try the following two Lua plug-ins:

First this, saved as AirbusX_Thr1.lua:

ipc.writeLvar("L:AS_FADEC_0", 4096 - (9 * ipcPARAM / 4))

And this, saved as AirbusX_Thr2.lua:

ipc.writeLvar("L:AS_FADEC_1", 4096 - (9 * ipcPARAM / 4))

Save them in the FSX Modules folder.

Then, in FSUIPC axis assignments, assign Throttle 1 to the so-called 'FS control' Lua AirbusX_Thr1, and similarly Throttle 2 to Lua AirbusX_Thr2. Note that you'll find these listed in the "Send to FS as normal axis" mode, NOT in the "Send direct to FSUIPC" mode. This is a quirk of how macros and plug-ins are recognised.

For PFC users, as far as I can see you do NOT need to un-assign the axes in the normal way in PFCFSX.DLL. But I've not actually tried flying the AirbusX yetthe computer I've installed it on is not really suitably set up and i'd need some Airbus familiarisation time first in any case.

Note that running a plug-in in this way gives no chance for normal calibration. The computation above:

4096 - (9 * input / 4)

is designed to provide the apparently needed range of +40960 (idle) to -32768 (max). This passes through the assorted FADEC modes en route. However, that of course depends on the input value range being -16384 to +16383, which is only likely with a USB-connected digital device. My own PFC throttles only gave a range of -13030 to + 13545 in FSUIPC (allowing for a small dead zone either end -- never forget that), so I had to adjust the formula appropriately. The calculation is easy enough (I append it below), but an alternative to computing the formula is to fill in you minimum and maximum values in this more complex version of the Lua plug-in:

mymax = 16380   --replace value with your throttle's max reading in FSUIPC, allowing for a small dead zone
mymin = -16380  --replace value with your throttle's min reading in FSUIPC, allowing for a small dead zone
mult = -73728 / (mymax - mymin)
adj = 40960 - mult * mymin
val = adj + (mult * ipcPARAM)
ipc.writeLvar("L:AS_FADEC_0", val)

That's for Throttle 1. Do the same for Throttle 2 but change "FADEC_0" to "FADEC_1".

This longer plug-in is of course not as efficient as the nice short one, so it would really be best for you do actually do the computations and only put the resulting final formula in. So, the explanation:

The reasoning behind the computation:

Suppose the minimum input value (the negative one) is x and the maximum (the positive one) is y. First you need to compute the multiplier m such that

m * (y - x) = (-32768) - 40960 = -73728. which is the FADEC range (it is negative because its max is -ve and min is +ve)

So m = -73728 / (y - x)

in my case this is m = -73728 / (13545 - (-13030)) = -73728/26575 = -2.774

Now if we multiply the input value by this 'm' we computed, we will get the desired range, but the values will be offset. So we must subtract our computed value from a number which places the values in the correctly offset range.

Our 'idle' value is m * x, whereas the idle value we need is +40960, so we need to adjust by a = 40960 - (m * x). Using my own example again,

m = -2.774

x = -13030

m * x = 36093

a = 40960 - 36093 = 4867

The final formula in the Lua plug-in you want is

a + m * ipcPARAM

which in my case comes to

4867 + (-2.77 * ipcPARAM)

or more tidily

4867 - (2.77 * ipcPARAM)

Feedback on all this please, from folks who know more about Airbus throttles and FADEC than I. If necessary I may build in more useful facilities into FSUIPC, but not without knowing exactly what works and what doesn't.

Regards

Pete

Link to comment
Share on other sites

  • 2 years later...

Okay. This explains why, when I connected my PFC throttle quadrant up, it controlled the AirbusX throttles perfectly, out of the box. I'm going to have to enable the A/T then to see what I can do ...

Anyway, with any throttle system, be it PFC or other, try the following two Lua plug-ins:

First this, saved as AirbusX_Thr1.lua:

ipc.writeLvar("L:AS_FADEC_0", 4096 - (9 * ipcPARAM / 4))

And this, saved as AirbusX_Thr2.lua:

ipc.writeLvar("L:AS_FADEC_1", 4096 - (9 * ipcPARAM / 4))

Save them in the FSX Modules folder.

Then, in FSUIPC axis assignments, assign Throttle 1 to the so-called 'FS control' Lua AirbusX_Thr1, and similarly Throttle 2 to Lua AirbusX_Thr2. Note that you'll find these listed in the "Send to FS as normal axis" mode, NOT in the "Send direct to FSUIPC" mode. This is a quirk of how macros and plug-ins are recognised.

For PFC users, as far as I can see you do NOT need to un-assign the axes in the normal way in PFCFSX.DLL. But I've not actually tried flying the AirbusX yetthe computer I've installed it on is not really suitably set up and i'd need some Airbus familiarisation time first in any case.

Note that running a plug-in in this way gives no chance for normal calibration. The computation above:

4096 - (9 * input / 4)

is designed to provide the apparently needed range of +40960 (idle) to -32768 (max). This passes through the assorted FADEC modes en route. However, that of course depends on the input value range being -16384 to +16383, which is only likely with a USB-connected digital device. My own PFC throttles only gave a range of -13030 to + 13545 in FSUIPC (allowing for a small dead zone either end -- never forget that), so I had to adjust the formula appropriately. The calculation is easy enough (I append it below), but an alternative to computing the formula is to fill in you minimum and maximum values in this more complex version of the Lua plug-in:

mymax = 16380 --replace value with your throttle's max reading in FSUIPC, allowing for a small dead zone
mymin = -16380 --replace value with your throttle's min reading in FSUIPC, allowing for a small dead zone
mult = -73728 / (mymax - mymin)
adj = 40960 - mult * mymin
val = adj + (mult * ipcPARAM)
ipc.writeLvar("L:AS_FADEC_0", val)

That's for Throttle 1. Do the same for Throttle 2 but change "FADEC_0" to "FADEC_1".

This longer plug-in is of course not as efficient as the nice short one, so it would really be best for you do actually do the computations and only put the resulting final formula in. So, the explanation:

The reasoning behind the computation:

Suppose the minimum input value (the negative one) is x and the maximum (the positive one) is y. First you need to compute the multiplier m such that

m * (y - x) = (-32768) - 40960 = -73728. which is the FADEC range (it is negative because its max is -ve and min is +ve)

So m = -73728 / (y - x)

in my case this is m = -73728 / (13545 - (-13030)) = -73728/26575 = -2.774

Now if we multiply the input value by this 'm' we computed, we will get the desired range, but the values will be offset. So we must subtract our computed value from a number which places the values in the correctly offset range.

Our 'idle' value is m * x, whereas the idle value we need is +40960, so we need to adjust by a = 40960 - (m * x). Using my own example again,

m = -2.774

x = -13030

m * x = 36093

a = 40960 - 36093 = 4867

The final formula in the Lua plug-in you want is

a + m * ipcPARAM

which in my case comes to

4867 + (-2.77 * ipcPARAM)

or more tidily

4867 - (2.77 * ipcPARAM)

Feedback on all this please, from folks who know more about Airbus throttles and FADEC than I. If necessary I may build in more useful facilities into FSUIPC, but not without knowing exactly what works and what doesn't.

Regards

Pete

Pete,

This is wonderful ! I finally start to use the Airbus with PFC throttle ! thank you

It's my untrained knowledge or I cannot fully stop the engine ?

MAX

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.