MiG-29 Fulcrum DCS

Posted 27 days ago by Matthias Rausch

Post a topic
Answered
M
Matthias Rausch

Subject: AB9 / DCS MiG-29A – realistic ARU control loading and AoA stick-pusher support

Hello MOZA Flight Support,

I am using a MOZA AB9 FFB base with DCS World, primarily with the full-fidelity MiG-29A module.

My goal is to reproduce the real MiG-29A control forces as accurately as possible. I have original MiG-29 flight manuals which describe the aircraft's longitudinal control loading system, ARU (automatic control loading/control ratio system), trim system and the critical-AoA stick-pusher system.

I would like to know whether the current MOZA Cockpit software/MCLS can reproduce the following functions, or whether support for them is planned.

1. MiG-29 ARU – IAS and altitude dependent stick forces

According to the original MiG-29 flight manual, the ARU changes both the longitudinal control ratio and the stick loading ratio according to airspeed and altitude. It receives information corresponding to static and dynamic pressure.

At low altitude, the manual describes approximately the following schedule:

  • up to 400 km/h IAS: minimum stick loading / maximum stabilizer authority
  • 400–870 km/h IAS: progressively increasing stick loading
  • 870–1200 km/h IAS: maximum stick loading
  • 1200–1500 km/h IAS: progressively decreasing stick loading again
  • at 1500 km/h IAS: minimum stick loading again

The difference between the two extreme ARU control-loading ratios is approximately 2.22:1.

The problem I currently see in MOZA Cockpit is that “Dynamic Stick Pressure” appears to use True Airspeed (TAS). The real MiG-29 ARU does not simply follow TAS; its behaviour depends on indicated/dynamic-pressure-related airspeed and altitude.

Is there currently a way for an aircraft profile to use IAS/dynamic pressure + altitude instead of TAS for the stick-pressure curve?

2. ARU movement of the force-neutral stick position

The MiG-29 manual also states that movement of the ARU from its take-off/landing position to the fully retracted position causes approximately 26 mm displacement of the force-free control-stick position.

Can MOZA Cockpit dynamically change the physical FFB centre/neutral position according to telemetry, independently of normal pilot trim?

I already use “Apply Trim Effect”, and trim correctly moves the physical AB9 stick. Therefore, the hardware is obviously capable of moving the physical force-neutral position. What I am looking for is a second, telemetry-controlled neutral-position offset for the ARU.

3. Critical-AoA stick pusher (SOS / СOС)

This is particularly important for the MiG-29.

According to the original manual, when critical angle of attack is reached, the system actively pushes the control stick forward (“away from the pilot”) with a force of approximately 17 kgf. The pilot can override this force.

DCS appears to simulate this behaviour on the virtual MiG-29 control stick, but my physical AB9 does not reproduce the forward stick movement/force.

At the moment I can only approximate the warning using MOZA AoA/stall buffet or shaker effects. This provides a warning, but it is fundamentally different from the real aircraft's directional stick-pusher force.

Is there a way in the current MOZA software/MCLS to command a directional FFB force or forward centre-position movement triggered by DCS telemetry or DirectInput FFB?

If not, is support for this type of aircraft-specific stick-pusher planned?

4. Flight-simulator SDK / custom control-loading model

If the above functions cannot currently be configured in Cockpit, I would also be very interested in an SDK/API that allows direct control of the AB9 FFB motors.

Ideally, I would like to implement the MiG-29 control-loading laws directly from the original flight manual using DCS telemetry:

DCS IAS + altitude → ARU position → control-loading ratio + neutral-position offset

and

DCS AoA / aircraft state → SOS activation → directional forward stick force

This would also be useful for other aircraft with mechanical/hydromechanical control-loading systems.

I am not asking for generic stronger FFB or additional vibration effects. My objective is to reproduce the actual control-loading behaviour described in the real aircraft documentation.

If useful, I can provide the relevant pages/figures from the original MiG-29 flight manual, including the ARU diagrams and control-stick force diagrams.

Could you please tell me which of these functions are currently possible with the AB9 and MOZA Cockpit/MCLS, and which may require future software or SDK support?

Thank you very much for your help.

Best regards

0 Votes

J

Jiutian Cai posted 11 days ago Best Answer

A serialization issue has been confirmed with C++ SDK 1.0.0.4. SDK version 1.0.0.6 will be released very soon and can be downloaded from our website.

0 Votes


5 Comments

Sorted by
J

Jiutian Cai posted 11 days ago Answer

A serialization issue has been confirmed with C++ SDK 1.0.0.4. SDK version 1.0.0.6 will be released very soon and can be downloaded from our website.

0 Votes

M

Matthias Rausch posted 13 days ago

Good afternoon,
Thank you very much for your feedback.

I haven’t yet tested the C SDK for Command 604. I’ll try that next.

Thank you also for replicating the behaviour of the C++ SDK. We remain particularly interested in MainCtrl_FfbConstant (604) with enableAxis = X:0, Y:1, DirectionEnable:1, as this exact configuration works in the ApiDebugTool but not via the generated C++ request.

I will get back to you with the results of the C-SDK test.

Kind regards,
Matthias Rausch

0 Votes

J

Jiutian Cai posted 13 days ago

Have you tried the C SDK instead? We're trying to reproduce this with the C++ SDK in the meanwhile.

0 Votes

M

Matthias Rausch posted 14 days ago

Subject: Problem with Flight SDK – MainCtrl_FfbConstant (Command 604) on the AB9

Dear MOZA Support,

Thank you very much for your advice to use the MOZA Flight SDK in conjunction with the MOZA Device Service for aircraft-specific force feedback effects.

I am currently trying to implement a simple additional force feedback effect for the DCS MiG-29A on my MOZA AB9 Base. In doing so, I have encountered a problem with the SDK, which I have since been able to isolate and reproduce.

The effect I’m aiming for is very simple: when a certain angle of attack is reached, a constant force on the pitch/Y-axis should push the control stick forwards briefly, or later on continuously. This is intended to replicate the real stick pusher of the MiG-29’s angle-of-attack limiter.

Hardware/Software:

  • MOZA AB9 Base
  • Windows 11 x64
  • Latest MOZA Device Service / MOZA Cockpit
  • MOZA Flight SDK x64
  • Visual Studio / C++ x64
  • ApiDebugTool v1.0.0.4

Communication between my C++ programme, the MOZA SDK, Device Service and the AB9 is working. The Base is recognised correctly and an FFB effect can be successfully registered using MainCtrl_FfbNewEffect (Command 603, Type 1 = Constant Force). The returned effect index is 1.

The actual problem concerns MainCtrl_FfbConstant (Command 604) and, in particular, the enableAxis field.

The effect works perfectly with the supplied MOZA ApiDebugTool. I have tested the following values:

  • effectBlockIndex = 1
  • magnitude = 600
  • duration = 200
  • enableAxis = 0 / 1 / 1
    • X = 0
    • Y = 1
    • DirectionEnable = 1
  • directionX = 0
  • directionY = 0

I then start effect 1 via MainCtrl_FfbEffectOperation (Command 609, Operation Start).

Result in the ApiDebugTool:
The AB9 moves the control stick forward by approximately 0.5 cm in a reproducible manner. The desired constant-force effect on the pitch axis therefore works in principle.

However, when I send the same parameters via the C++ Flight SDK, no movement occurs.

The request generated by the SDK looks like this:

moza::as::wheelbase_type::MainCtrlFfbConstantRequest constant{};

constant.effectBlockIndex = 1;

constant.magnitude = 600;

constant.duration = 200;

constant.enableAxis.field0 = 0; // X

constant.enableAxis.field1 = 1; // Y

constant.enableAxis.field2 = 1; // DirectionEnable

constant.directionX = 0;

constant.directionY = 0;

base.cmdMainCtrlFfbConstant().send(constant);

In the generated header file `device_as.generated.hpp`, `enableAxis` is defined as a structure for Command 604:

struct MainCtrlFfbConstantRequestEnableAxis

{

    int field0{};

    int field1{};

    int field2{};

};

However, it is precisely when this field is serialised that SDK warnings regarding BitSet / structFields / type mismatch appear.

We have also attempted to send Command 604 via RawCommand. Here too, the SDK appears to convert the `enableAxis` argument based on the command metadata. For example, a test using a hypothetical bitmask value of 6 did not produce the desired result, and the payload actually generated did not match the expected value.

It is also striking that other FFB requests, such as Ramp, Periodic and Condition, use `enableAxis` as a simple `std::uint8_t` in the generated header, whilst Constant Force (604) uses this specific structure with three fields.

Hence my questions:

  1. How must `enableAxis` for `MainCtrl_FfbConstant` (Command 604) be correctly set in the C++ Flight SDK so that exactly `X=0`, `Y=1` and `DirectionEnable=1` are transmitted?
  2. Is the definition

MainCtrlFfbConstantRequestEnableAxis

{

    int field0;

    int field1;

    int field2;

} ;

in the currently generated `device_as.generated.hpp` correct?

  1. Is there a specific bit-set encoding or a specific SDK data type for this field that we need to use?
  2. Could you please provide us with a complete C++ example for Command 604 on the AB9 that generates a constant force exclusively on the Y/pitch axis?

The crucial point is:

The same values work in the MOZA ApiDebugTool, but not via the public C++ SDK call.

This allows us to rule out a fault with the AB9 itself or with the basic FFB function. We simply need the correct C++ control or serialisation of `enableAxis` for Command 604.

For a reliable test, the following is sufficient for now:

magnitude 600, duration 200 ms, Y-axis.

Increasing the force is not necessary for troubleshooting.

If it would be helpful, I can also provide you with the complete C++ test code, SDK debug output and device service logs.

Thank you very much for your support.

Kind regards,
Matthias Rausch

0 Votes

J

Jiutian Cai posted 16 days ago

All effects in MOZA Cockpit are tailored for general aircraft. If you want to create aircraft-specific FFB effects, we recommend using the Flight SDK, which is available for download in our Help Center.

Please note that the SDK must be used in conjunction with the MOZA Device Service. MOZA Cockpit already includes this service upon installation, and the SDK will reference it by registry automatically. If you'd like to acquire standalone Device Service files, please contact our after-sales support team.

0 Votes

Login or Sign up to post a comment