Jump to content
The simFlight Network Forums

Wilco Airbus SV1 throttle control via FSUIPC


Guido
 Share

Recommended Posts

Hi

Unfortunately my new throttle does not work with the Wilco Airbus SV1. With the CH-Throttle I had no problems.

The Wilco Airbus does use the KEY_AXIS_THROTTLE1_SET and KEY_AXIS_THROTTLE2_SET registers to control throttles. I can read the HW throttle lever position via 0x088C but I can not make the graphic levers to move.

I did test writes to different FSUIPC throttle entries like:

- 0x088C

- 0x089A

- 0x3AE8

but nothing moves on the screen!

Does someone know how to write into the KEY_AXIS_THROTTLE1_SET register set?

Thank you very much for your help to let the levers move.

Rgds

Guido

Link to comment
Share on other sites

Unfortunately my new throttle does not work with the Wilco Airbus SV1. With the CH-Throttle I had no problems.

What's the difference? As far as I am aware all commercially made popular throttle axes are just simple Windows' joystick axes.

The Wilco Airbus does use the KEY_AXIS_THROTTLE1_SET and KEY_AXIS_THROTTLE2_SET registers to control throttles. I can read the HW throttle lever position via 0x088C but I can not make the graphic levers to move. I did test writes to different FSUIPC throttle entries like:

- 0x088C

- 0x089A

- 0x3AE8

but nothing moves on the screen!

Why are you writing to offsets? why not simply use the controls available?

Does someone know how to write into the KEY_AXIS_THROTTLE1_SET register set?

What is a "register set" for an FS control?

Regards

Pete

Link to comment
Share on other sites

Hi Pete

Thank you for the quick replay. Maybe I am using the wrong wording but from Eric Marciano's help and feedback (bellow) -

Anyway, what I can tell you is that my Airbus gauges read the standard FS variables that provide the throttle lever position. It is not a secret, my code read the KEY_AXIS_THROTTLE1_SET and KEY_AXIS_THROTTLE2_SET events to determine what to do when the throttle levers are moved.

- I think that FSUIPC does read and write into variables (registers) to control FSX. My CH-Throttle driver did write in to the right locations to control the Airbus throttle levers but unfortunately my new one does it different (bellows feedback).

Feedback from throttle supplier:

The FeelThere Airbus probably uses out of standard ways to manage thrusts, as FSX itself doesn't have specific commands for this type of throttle. In our TQ throttle driver, we use only Microsoft's directives, as from Simconnect SDK, that is writing throttles values from -4096 to +16368 into throttle offsets, depending on lever positions on the TQ.

Therefore I had the idea to correct this by reading 0x088C (what works) and then write into the missing location (location/variable/register). But unfortunately the writing into bellows location does not help.

- 0x088C

- 0x089A

- 0x3AE8

Do you have an idea were to write the values read from "function 0x088C" that throttle levers and with this the "Airbus" moves?

Thank you for your support.

Rgds

Guido

Link to comment
Share on other sites

- I think that FSUIPC does read and write into variables (registers) to control FSX.

Not generally. It uses FSX controls when you assign your own axes. However, yes, it is true that if you write directly to the FSUIPC-defined throttle value axes, it sends these values to SimConnect using the GENERAL ENG THROTTLE LEVER POSITION:n (n= Engine number) variable. That's the whole point of providing the direct offset method -- to avoid the use of FS controls and therefore further manipulation.

My CH-Throttle driver did write in to the right locations to control the Airbus throttle levers but unfortunately my new one does it different (bellows feedback).

What CH driver is that, which writes to offsets? Most joystick drivers just allow you to assign the axes as you like.

Feedback from throttle supplier:

The FeelThere Airbus probably uses out of standard ways to manage thrusts, as FSX itself doesn't have specific commands for this type of throttle. In our TQ throttle driver, we use only Microsoft's directives, as from Simconnect SDK, that is writing throttles values from -4096 to +16368 into throttle offsets, depending on lever positions on the TQ.

If they are using SimConnect directly, not going through FSUIPC, then I'm not sure what they mean by "offsets".

Therefore I had the idea to correct this by reading 0x088C (what works) and then write into the missing location (location/variable/register). But unfortunately the writing into bellows location does not help.

There is no place you can write to make FSUIPC send the AXIS THROTTLEn SET control EXCEPT the location for sending FS controls -- offset 0x3110. You write the throttle value to 0x3114 (4 bytes) and the FS control number (see the list of FSX controls document) to 0x3110 (4 bytes). You can do this with any control.

Regards

Pete

Link to comment
Share on other sites

Hi Pete

Again thank you very much for the professional and quick replay. I appreciate it very much.

Your point:

What CH driver is that, which writes to offsets? Most joystick drivers just allow you to assign the axes as you like.

Feedback:

It works with the CH throttle quadrant USB and it does also work with the integrated "throttle" in my Logitech stick.

So I do not know what my new throttle is missing to write.

The other points I need to study and will provide you feedback.

Rgds

Guido

Link to comment
Share on other sites

Hi Pete

Over the weekend I did quite an exercise in the attempt to make my TQ throttle work with Wilco’s A320 “misusing” FSUIPC (actually Wide Client).

My steps:

A: Read lever position in FSUIPC: The serial USB driver throttle input is available at “offset” 0x88C.

B: The next thing was to copy the 0x88C value as proposed to 0x3114 addressing KEY_AXIS_THROTTLE1_SET via 0x3110 and wow the levers did move but move and move to max without any further lever movement.

C: Next was to check what will happen when I copy the 0x88C value simply to 0x89A. No lever movement.

D: When I copy the read value from 0x88C to 0x89A and “calibrated” to 0x3114 addressing KEY_AXIS_THROTTLE1_SET via 0x3110 did make it.

But I am not sure if this is a clever implementation. I think my Logitech and CH-Throttle use the standard USB driver/gaming interface. FSX reads it from there and stores the values at the "right" locations that the Airbus can use it. I wonder if this can be emulated by using FSUIPC easier or if the current implementation is reasonable.

By the way which document gives a good insight about the FSX and FSUIPC for me?

Rgds

Guido

Link to comment
Share on other sites

Over the weekend I did quite an exercise in the attempt to make my TQ throttle work with Wilco’s A320 “misusing” FSUIPC (actually Wide Client).

You are trying to use an axis control from a Client PC, not on the FS PC?

A: Read lever position in FSUIPC: The serial USB driver throttle input is available at “offset” 0x88C.

Er, sorry. Now I am really confused. Where is this USB connection< then? Surely not on the WideClient PC? How does it get its value into FS?

B: The next thing was to copy the 0x88C value as proposed to 0x3114 addressing KEY_AXIS_THROTTLE1_SET via 0x3110 and wow the levers did move but move and move to max without any further lever movement.

These levers, are they motor controlled by any chance? If so, the software used with them might be READING the value from 088C, moving the lever according, which is then giving you a new position which you are feeding back -- result positive feedback, completely unwanted.

C: Next was to check what will happen when I copy the 0x88C value simply to 0x89A. No lever movement.

Writes to 089A are either ignored (except for a copy placed at 3330) if the thorttles are currently disconnected for AutoThrottle control, or result in a write to 088C, so I'm not at all surprised. 089A is realy simply a disconnectable 088C intended for autothrottle motor control applications where the feed through has to stop when A/T is engaged.

D: When I copy the read value from 0x88C to 0x89A and “calibrated” to 0x3114 addressing KEY_AXIS_THROTTLE1_SET via 0x3110 did make it.

Sorry, you'll need to explain what you mean there. Since copying to 089A shouldn't do anything, isn't this the same as doing "copy the read value from 0x88C “calibrated” to 0x3114 addressing KEY_AXIS_THROTTLE1_SET via 0x3110", which would certainly make more sense. What exactly do you mean by "calibrated" in this context?

By the way which document gives a good insight about the FSX and FSUIPC for me?

Sorry, what do you mean?

I wish I knew a bit more about this weird throttle device of yours. Did you build it yourself? Why is it so unorthodox?

Regards

Pete

Link to comment
Share on other sites

You are trying to use an axis control from a Client PC, not on the FS PC?

A: The throttle axis is on the FS PC. At this very moment I use the wide client as "programming station" and for further developments or better further challengesJ.

Er, sorry. Now I am really confused. Where is this USB connection< then? Surely not on the WideClient PC? How does it get its value into FS?

A: Yes the Serial-USB-HW is connected to the FS PC. The client only reads and writes the values from/to the FS PC.

These levers, are they motor controlled by any chance? If so, the software used with them might be READING the value from 088C, moving the lever according, which is then giving you a new position which you are feeding back -- result positive feedback, completely unwanted.

A: I had the option with or without motor. For “time” reasons and for Airbus simulation compatibility I decided to skip the motor option.

Writes to 089A are either ignored (except for a copy placed at 3330) if the thorttles are currently disconnected for AutoThrottle control, or result in a write to 088C, so I'm not at all surprised. 089A is realy simply a disconnectable 088C intended for autothrottle motor control applications where the feed through has to stop when A/T is engaged.

A: OK, now I understand why the lever position did not change when I copied the position value to 089A only (I hoped to simulate a direct x axis input to FSX). I guess the unwanted move from the commanded lever position to full throttle could come from the motor option of my throttle. This seems to stop when “closing” the feedback loop from “KEY_AXIS_THROTTLE1_SET via 0x3110” to 089A (read 088C, write 089A and 03110).

Sorry, you'll need to explain what you mean there. Since copying to 089A shouldn't do anything, isn't this the same as doing "copy the read value from 0x88C “calibrated” to 0x3114 addressing KEY_AXIS_THROTTLE1_SET via 0x3110", which would certainly make more sense. What exactly do you mean by "calibrated" in this context?

A Calibration: The values delivered at 088C are from 0 to +16k. To move the throttles over the full range on the displayed WA320 I have to send -16k to +16k.

Sorry, what do you mean?

I wish I knew a bit more about this weird throttle device of yours. Did you build it yourself? Why is it so unorthodox?

1. A: Maybe this helps: B737 TQ from Poland Videos zu B737 TQ poland

Throttle maker feedback: The FeelThere Airbus probably uses out of standard ways to manage thrusts, as FSX itself doesn't have specific commands for this type of throttle. In our TQ throttle driver, we use only Microsoft's directives, as from Simconnect SDK, that is writing throttles values from -4096 to +16368 into throttle offsets, depending on lever positions on the TQ.

My problem is that no direct x commands are used and my guess is that the Wilco Bus does not handle the Simconnect SDK inputs.

Regards

Pete

Thank you for the smart feedback.

Rgds

Guido

Link to comment
Share on other sites

I edited your reply as you included all your answers in a "Quote" from me! This made it impossible for me to quote you in response!

I had the option with or without motor. For “time” reasons and for Airbus simulation compatibility I decided to skip the motor option.

So, if they are not motor controlled, where are you seeing the levers advance, as you said " wow the levers did move ...".

I am now even more confused because without motor control i don't see how the positive feedback can arise.

OK, now I understand why the lever position did not change when I copied the position value to 089A only (I hoped to simulate a direct x axis input to FSX).

088A is the "direct" way. 089A is the same unless disconnected. Perhaps you mean to use FS axis controls instead? That's actually less direct of course.

I guess the unwanted move from the commanded lever position to full throttle could come from the motor option of my throttle.

But normally a motor driven throttle will move according to the A/P-set throttle value (read from 088C) and that movement affects the potentiometer output which is fed back into FS via either 089A (which is disconnected when the A/T is engaged) or via the Axis controls (also disconnected). If your throttle doesn't have the motor control, then how would that happen?

The values delivered at 088C are from 0 to +16k. To move the throttles over the full range on the displayed WA320 I have to send -16k to +16k.

Ah, not actually "calibration, merely mapping the range appropriate to the control. Yes, the internal FS values for forward thrust are 0 to 16k. Negative values are reverse thrust. The THORTTLEn_SET controls are the same -- 0 to 16k for forward thrust. The AXIS_THROTTLEn_SET controls don't provide reverse and operate forward thrust from -16K to +16K. So you need to add 16K and divide by 2 (or divide by 2 and add 8k).

Maybe this helps: B737 TQ from Poland Videos zu B737 TQ poland

Okay, I'll take a look. Thanks.

Throttle maker feedback: The FeelThere Airbus probably uses out of standard ways to manage thrusts, as FSX itself doesn't have specific commands for this type of throttle. In our TQ throttle driver, we use only Microsoft's directives, as from Simconnect SDK, that is writing throttles values from -4096 to +16368 into throttle offsets, depending on lever positions on the TQ.

My problem is that no direct x commands are used and my guess is that the Wilco Bus does not handle the Simconnect SDK inputs.

Yes. I think it intercepts the AXIS_THROTTLE controls and reinterprets them for the Airbus Fly-by-Wire Thrust modes. I suspect most Airbus simulations do something similar.

However, you have the solution now? You need not invoke 089A. Note that the solution would actually be more efficient as a Lua plug-in on the FS PC.

Regards

Pete

Link to comment
Share on other sites

Hi Pete

Yes, I have a solution for now. But I also think it is a bit complicated for the little I wanted to do. In deed I need to study what the Lua plug-in can do.

About your lever movement question: I referred to the WA320 levers displayed at the monitor.

Again thank you for your support and patient

Guido

Link to comment
Share on other sites

Hi Pete

I am sorry to bother you again!

After several attempts to make my throttle HW working with WA320 I realized that it is “not possible” to do this via FSUIPC.

As written the WA320 uses throttle information compatible to DirectX and uses the AXIS_THROTTLE1(+2)_SET. The Serial USB TQ737 joystick driver does not support DirectX. Therefore I wanted to:

Read 88C Engine1AxisValue

Write to 3114 Engine1AxisValue and 3110 (66420) to AXIS_THROTTLE1_SET

Write to 88C Engine1AxisValue

The last write to 88C is to overwrite the FSX throttle increase from the write to 3310.

If the engines are off levers move more or less on the 2D/3D display.

But as soon as the engines are on the thing gets unstable and wild. I think by writing back to the 88C register, to remove the unwanted additional throttle increase, interferes with the FSX throttle loop.

I did the same exercise using F1..F4 keys. The behavior is the same. Every F3 key write to (3200) increases the value at 88C and is then different to AXIS_THROTTLE1_SET. The attempt to overwrite the changed value at 88C makes the system unstable (levers jump up and down if engines are on)!

So I think it is not possible to do make my joystick work with the WA320 via FSUIPC L.

Rgds

Guido

Link to comment
Share on other sites

Therefore I wanted to:

Read 88C Engine1AxisValue

Write to 3114 Engine1AxisValue and 3110 (66420) to AXIS_THROTTLE1_SET

Write to 88C Engine1AxisValue

But why? 088C will be updated by FS to reflect the internal throttle value, and changing it will mess thins up.

The last write to 88C is to overwrite the FSX throttle increase from the write to 3310.

But the 3110 write merely sends the AXIS control, whichi s just exactly what your DirecTX throttle would do. There's no point in writing to 088C as well, surely?

I did the same exercise using F1..F4 keys. The behavior is the same. Every F3 key write to (3200) increases the value at 88C and is then different to AXIS_THROTTLE1_SET. The attempt to overwrite the changed value at 88C makes the system unstable (levers jump up and down if engines are on)!

I am now completely lost -- you are speaking as if your throttles are motor controlled, in which case for sure they should be using a different method. If they are not motor controlled I've on idea what you are actually talking about.

So I think it is not possible to do make my joystick work with the WA320 via FSUIPC L.

From what you say I don't think the throttles are of any use at all! ;-) What other methods do you think exist which FSUIPC cannot accomplish?

Pete

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • 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.