MODULAR HYDRAULICS SYSTEM INFORMATION
This page contains information relating to the different components and connections used by the modular hydraulics system, as defined in the [HYDRAULICS_SYSTEM_EX1]
section of the systems.cfg file.
The modular hydraulic system works in a similar way to many of the other aircraft systems where you describe the different components and how they should interact. The system simulation then runs on its own to provide hydraulic power to the various actuators in the aircraft. The actuator state (ie: the provision of hydraulic fluid which is under sufficient pressure) is then checked whenever a movement is required, by the brakes, by the landing gear, etc...
It should be noted that - unlike the electrical or fuel systems, for example - you do not just define a single hydraulics system. Instead you may define as many individual hydraulics systems as required by the aircraft, with each system having a single reservoir component.
The different components available are as follows:
- Reservoir.N: A hydraulic system is comprised of one or more reservoirs that store hydraulic fluid.
- Pump.N: This component is used to pressurise the hydraulic system.
- PTU.N: The PTU (Power Transfer Unit) is a hydraulic pump that uses the fluid under pressure from one circuit to run and pressurize another circuit without exchanging fluid.
- Actuator.N: This component acts as the link between the hydraulic system and the other aircraft parts.
- Junction.N: A junction forms a crossroad for various lines to go through.
- Line.N: These define how all the elements listed above are linked to one another.
Additionally, you can add the following line features to the system lines:
- Accumulator.N: This line feature stores hydraulic fluid under pressure to be able to deliver at least a certain amount of fluid in the case of a system failure.
- Valve.N: This line feature is used to control the flow of hydraulic fluid through the system.
The components listed above can be considered as "active" components (such as reservoirs, pumps, actuators, etc...) and "line" components (lines, valves, junctions, etc...). Each active component will be connected by one or more lines, and each line can have certain "line features" to help control the flow of hydraulic fluid in the system.
Many of these components can be checked using SimVars, and you can find information about those here:
It should be noted that there are some parameters that can be set in the FLT file to initialise the hydraulic system to specific values for a flight or a mission. You can find more information here:
Reservoir.N
Each hydraulic system requires at least one reservoir to be defined, and each reservoir is created as a hash map comprised of the following multiple key:value
pairs, separated by the #
symbol:
Reservoir.N = Name:<reservoir_name> #MaxCapacity:<capacity_litres> #WearAndTearCollision:<damage_profile_name1>,<damage_profile_name2>,<etc...>
Note that you may have more than one hydraulic system, and therefore more than one reservoir. In these cases you would add further Reservoir components and increment the N
index, starting from 1. A full example of a single reservoir definition would be like this:
Reservoir.1 = Name:HydraulicReserve #MaxCapacity:1 #WearAndTearCollision:LeftWingLight
Key | Value | Description | Required |
---|---|---|---|
Name |
String | This defines the common name for the reservoir, which will be used in all further components that need to refer to it. It will also be used as the reference index for SimVars, and note that the name is the only guaranteed reference to the component due to the fact that the Modular Aircraft Merging process may change the index. | Yes |
MaxCapacity |
Float | The total capacity of the reservoir, in litres. The amount of fluid it actually contains is set in the FLT file: Reservoir[Name] | Yes |
WearAndTearCollision |
String | This parameter provides one or more references to a damage profile that has been defined in the [COLLISION_DAMAGE] section of the flight model CFG file. For more information, please see here: Note On Collision Damage / Wear And Tear |
No |
Pump.N
A hydraulic system needs to be pressurised, and for that you can use the pump component. The pressure build up in a pump is gradual, and as such a pump will never actually reach its target pressure, and instead will simply get closer and closer without actually reaching it. This target pressure depends on a few parameters:
- for Engine Driven Pumps, the power of the pump will be linked to its associated motor.
- for Electric Pumps, power will either be "on" or "off" depending on whether the associated circuit has electricity or not.
- for PTU Pumps, the power of the pump relies on the pressure received by the PTU motor.
- all pumps may additionally have their effectiveness lowered due to wear and tear or damage.
Since fluid displacement is critical to the hydraulics system (fluid moves to an actuator, displacing the fluid it contains already, and this displaced fluid goes back to the reservoir to be displaced again) the pump must be able to renew the same quantity that the actuator displaced in order to keep them pressurized. If the pump provides less fluid than what is required, the system can oscillate, causing actuators to "bump" periodically, or it may be that a sweet spot can be found where the actuator will work fine, but with a reduced efficiency.
Each pump is created as a hash map comprised of the following multiple key:value
pairs, separated by the #
symbol:
Pump.N = Name:<pump_name> #NormalPressure:<pressure> #NominalDisplacement:<displacement> #Type:<pump_type> #Index:<value> #Circuit:<circuit_name> #Mode:<auto_onoff> #PressureThresholdPct:<pct_pressure> #WearAndTearCollision:<damage_profile_name1>,<damage_profile_name2>,<etc...>
Note that you may have more than one pump, so for each one you should increment the N
index, starting from 1. A full example of a single pump definition would be like this:
Pump.1 = Name:Pump_ENG_1 #NormalPressure:3000 #NominalDisplacement:2400 #Type:EngineDriven #Index:1 #WearAndTearCollision:BodyHeavy,BodyMedium
Key | Value | Description | Required |
---|---|---|---|
Name |
String |
This is a name string that is used as an alias to identify the pump. It will also be used as the reference index for SimVars, and note that the name is the only guaranteed reference to the component due to the fact that the Modular Aircraft Merging process may change the index. |
Yes |
NormalPressure |
Float | This is used to define the pressure (in psi) that will be reached by the system, or at least by the pump output. | Yes |
NominalDisplacement |
Float | This value indicates the amount of fluid (in millilitres / second) that the pump can inject into the system to pressurize the lines. The higher the number the quicker the normal pressure will be reached and the more actuators that can be operated in parallel. | Yes |
Type |
Constant |
The type of hydraulic pump being defined. Can be one of the following:
|
Yes |
Index |
Integer |
The index of the engine to use (starting at 1) for engine driven pumps. Note that this key is not required for manual pumps, and is only used when no engine |
No |
Circuit |
String |
If the pump is electrically driven, this parameter specifies the name of the circuit that has been defined in the electrical system as the Note that this key is not required for manual pumps, and is only used when no engine Default value is "". |
No |
CircuitIndex |
Integer |
If the pump is electrically driven, this parameter specifies the index of the circuit that has been defined in the electrical system as the Note that this method for identifying a circuit is not reliable due to the way the Modular SimObject Merging process works and so you should be supplying a Default value is 0. |
No |
Mode |
Constant |
This parameter is used only when the pump Type is set to Electric. If this parameter is set to Default value is |
No |
PressureThresholdPct |
Float |
This parameter is used only when the pump Type is set to Electric, and the Mode is Auto. The parameter sets the percentage of normal pressure under which the pump will activate. Value is a Percent Over 100. Default value is 0.9. |
No |
WearAndTearCollision |
String | This parameter provides one or more references to a damage profile that has been defined in the [COLLISION_DAMAGE] section of the flight model CFG file. For more information, please see here: Note On Collision Damage / Wear And Tear |
No |
It should be notes that pumps have an additional port connection for the pressure relief port. This connection is named Relief
, and is used as follows:
Line.1 = Name:pumpToTankRelief #Inputs:PumpA.Relief #Outputs:Tank1
For more information, please see here: Note On Port Connections
PTU.N
The PTU (Power Transfer Unit) is a hydraulic pump that uses the fluid under pressure from one hydraulic circuit (A) to pressurise another hydraulic circuit (B) without exchanging fluid. In reality a PTU is composed of two parts: a Motor and a Pump. The motor of the PTU powers system A and also spins the pump, which powers system B, without the two systems exchanging any fluids. The image below is a schematic view of the complex PTU component and its 6 input/output ports:
It should be noted that PTU's can be reversible or non-reversible. A non-reversible PTU is one way only, meaning the system connected to the pump cannot provide pressure to the system connected to the motor. A reversible PTU means that any of the two systems connected can power the other, and when reversed, the motor behaves as a pump and the pump behaves as a motor. The PTU Port MotorRelief
is only used for reversible PTUs.
A PTU is created as a hash map comprised of the following multiple key:value
pairs, separated by the #
symbol:
PTU.N = Name:<ptu_name> #NormalPressure:<pressure_psi> #NominalDisplacement:<displacement> #Reversible:<yes_no>
Note that you may have more than one PTU, so for each one you should increment the N
index, starting from 1. A full example of a single PTU definition would be like this:
PTU.1 = Name:PTU #NormalPressure:3000 #NominalDisplacement:1200 #MotorLine:PumpsToActuatorsA #PumpLine:PumpsBToPTUActuatorsB_Valve #ReservoirLine:TankBToPumpElec_Valve
Key | Value | Description | Required |
---|---|---|---|
Name |
String | This is a name string that is used as an alias to identify the PTU. It will also be used as the reference index for SimVars, and note that the name is the only guaranteed reference to the component due to the fact that the Modular Aircraft Merging process may change the index. | Yes |
NormalPressure |
Float | This parameter gives the pressure (in psi) that will be reached by the pump, and the pressure required by the motor to reach 100% spin speed (and thus 100% activity on the linked pump). | Yes |
NominalDisplacement |
Float | This value indicates the amount of fluid (in millilitres / second) that the PTU can inject into the system to pressurise the lines. The higher the number the quicker the normal pressure (as defined by the NormalPressure parameter) will be reached. |
Yes |
Reversible |
Constant |
This indicates whether the PTU is reversible ( Default value is |
No |
It should be notes that PTUs have additional port connections for the pressure relief ports, and for the motor and pump inputs (and outputs, if required). These connections are specified by the Line.N component that is going to link to it, and they are named as follows:
MotorInput
- Required. This is the hydraulic fluid input port for the motor and should be connected to a reservoir.
MotorOutput
- The connections from this port will depend on whether the PTU is reversible or not:- Non-Reversible - Optional. The motor cannot be a pump, so it will never provide hydraulic power, and as such the output port should be connected directly to a reservoir. If not specified then the system will create the connection automatically if required (see Automatic Generation of Lines for details).
- Reversible - Required. The motor can also be a pump and provide hydraulic power to actuator components. This means that the port connections cannot be created automatically and instead should be setup in the same way as those from the PumpOutput port (see below for details)
MotorRelief
- Optional. This is the hydraulic fluid relief port for the motor and would normally be connected to a reservoir. If the PTU is reversible and no line is specified, then the system will create the connection automatically if required (see Automatic Generation of Lines for details). This port is not used in non-reversible PTUs.
PumpInput
- Required. This is the hydraulic fluid input port for the pump and should be connected to a reservoir.
PumpOutput
- Required. This is the hydraulic fluid output port for the pump and should be connected to at least one actuator. In general it is rare that the output will be directly connected to a single actuator, however, and it is more normal that the output will be used to control several actuators connected through the use of various junction and valve components, all connected by various line components.
PumpRelief
- Optional. This is the hydraulic fluid relief port for the pump and would normally be connected to a reservoir. If not included then the system will create the connection automatically if required (see Automatic Generation of Lines for details).
The line example below shows one of these ports being referenced:
Line.1 = Name:JunctionAToPTUMotor #Inputs:JunctionA #Outputs:PTU.MotorInput #Valves:ValvePTU
For more information, please see here: Note On Port Connections
Actuator.N
An actuator is a link between the hydraulic system and the other aircraft parts that require hydraulic pressure to function correctly. To determine whether the actuator can move, the pressure in the line must be superior to the Minimum Pressure parameter and an available fluid source must be found. Accumulators with enough contained fluid, or that are connected to a Pump.N/PTU.N with enough fluid displacement, or a combination of both, will work correctly. Each actuator is created as a hash map comprised of the following multiple key:value
pairs, separated by the #
symbol:
Actuator.N = Name:<actuator_name> #FluidVolume:<volume> #MinimalPressure:<min_psi> #Type:<type_string> #MasterCylinder:<true_false> #Redundancy:<redundancy_num> #WearAndTearCollision:<damage_profile_name1>,<damage_profile_name2>,<etc...>
Note that you may have more than one actuator, so for each one you should increment the N
index, starting from 1. A full example of a single actuator definition would be like this:
Actuator.1 = Name:LandingGear #Fluidvolume:300 #Minimalpressure:1300 #Type:LandingGear
Key | Value | Description | Required |
---|---|---|---|
Name |
String | This is a name string that is used as an alias to identify the actuator. It will also be used as the reference index for SimVars, and note that the name is the only guaranteed reference to the component due to the fact that the Modular Aircraft Merging process may change the index. | Yes |
FluidVolume |
Float |
This specifies the amount of fluid (in milliliters) that is used when moving the actuator and before being returned to the reservoir. |
Yes |
MinimalPressure |
Float |
This specifies the minimum pressure (in psi) needed in the line for the actuator to be deemed healthy and able to move at 100% speed. Half of this pressure will result in halved speed, and if the pressure drops to below 10% of this value, the actuator cannot move at all. |
Yes |
Type |
String |
This is used to link the hydraulic system to the actual plane control surfaces and hydraulic dependent systems. It can be one of the following: Elevator LeftAilerons RightAilerons Rudder Spoilers Brakes Flaps LandingGear Hoist TailRotorPitch CyclicLeftRoll CyclicRightRoll CyclicPitch CyclicMixed RotorCollective LaunchBar AntiSkid TailHook NOTE: Currently CyclicLeftRoll and CyclicRightRoll are not differentiated in the simulation. Both are always used, as the extension of one would be the retraction of the other. |
Yes |
MasterCylinder |
Boolean |
If the actuator is linked to a master cylinder (usually in the case of brakes), then this parameter can be set to " Default value is |
No |
Redundancy |
Integer | This lets define how many actuators should be associated with this definition, permitting redundancy in the simulation. See the Note On Redundancy for more information. | No |
WearAndTearCollision |
String | This parameter provides one or more references to a damage profile that has been defined in the [COLLISION_DAMAGE] section of the flight model CFG file. For more information, please see here: Note On Collision Damage / Wear And Tear |
No |
Junction.N
This component can be used to connect various lines together. It is a very simple component created as a hash map comprised of the following multiple key:value
pairs, separated by the #
symbol:
Junction.N = Name:<line_name> #WearAndTearCollision:<damage_profile_name1>,<damage_profile_name2>,<etc...>
Note that you may have more than one junction, so for each one you should increment the N
index, starting from 1. A full example of a single jungle definition would be like this:
Junction.1 = Name:JunctionA
Line.4 = Name:JunctionAToActuators #Inputs:JunctionA #Outputs:LandingGear,Elevator,Rudder,AileronsL
Key | Value | Description | Required |
---|---|---|---|
Name |
String | This is a name string that is used as an alias to identify the junction. It will also be used as the reference index for SimVars, and note that the name is the only guaranteed reference to the component due to the fact that the Modular Aircraft Merging process may change the index. | Yes |
WearAndTearCollision |
String | This parameter provides one or more references to a damage profile that has been defined in the [COLLISION_DAMAGE] section of the flight model CFG file. For more information, please see here: Note On Collision Damage / Wear And Tear |
No |
Line.N
The line component defines how all the other components within a hydraulic system are linked to one another. Within the simulation, a line will always be considered as having the same basic structure:
- One or more Inputs
- One or more Outputs
- Zero, one, or more Valves
- Zero or one Accumulators
The simulation will also process all the lines in a specific way when a flight is started:
- All Inputs are merged
- All valves are in placed in series
- The accumulator is added
- The line is split to reach all the outputs
The schematic below shows how a line "looks" to the simulation when compiled:
Be aware that having the lines behave this way can have the following effects:
- A line closed by valves can still have its accumulator pressurize the output components.
- Inputs to a closed line can be pressurized by other input components.
Some of these issues can be avoided by using junctions. For example if you want to have the accumulator before a valve on a line going to some output components, you can create two lines joined by a junction. The first has the input components, the accumulator and the junction (as the output). The second would then have the junction as the input, then the valves, and finally connect to the outputs.
Each line is created as a hash map comprised of the following multiple key:value
pairs, separated by the #
symbol:
Line.N = Name:<line_name> #Inputs:<input_1>,<input_2>,... #Outputs:<output_1>,<output_2>,... #Accumulator:<accumulator_name> #Valves:<valve_1>,<valve_2>,... #NonReturn:<bool>
Note that you may have more than one line, so for each one you should increment the N
index, starting from 1. A full example of a single line definition would be like this:
Line.1 = Name:PumpsBToPTUActuatorsB_Valve #Inputs:PTU,Pump_ENG_2,Pump_ELEC_2 #Outputs:Flaps,ValveNonReturnBrakes,Spoilers,AileronsR,FlapsTrail
It should be noted that many of the lines that make up the hydraulic system are auto-generated. Please see here for more details:
Key | Value | Description | Required |
---|---|---|---|
Name |
String | This is a name string that is used as an alias to identify the line. It will also be used as the reference index for SimVars, and note that the name is the only guaranteed reference to the component due to the fact that the Modular Aircraft Merging process may change the index. | Yes |
Inputs |
Array (Strings) |
This is a comma separated array that is used to add one or more components which input into the line being defined. | Yes |
Outputs |
Array (Strings) | This is a comma separated array that is used to define the components that the line being defined will output to. | Yes |
Accumulator |
String | The name of an accumulator that is connected to this line. Only one accumulator can be connected to any given line. | No |
Valves |
Array (Strings) | This is a comma separated array that is used to define one or more valves that the line being defined will have. You may have multiple valves per line. | No |
NonReturn |
Boolean |
This parameter specifies whether fluid can travel backward through the line ( Default value is |
No |
Accumulator.N
The accumulator line feature stores hydraulic fluid under pressure to be able to deliver at least a certain amount of fluid into the system in case of system failure. Accumulators work by having a pressurised gas within that permits it to push the fluid out of the accumulator when pressure drops. At low pressure, the gas is expanded and no fluid is inside, but as the pressure rises, the gas compresses and fluid is allowed in.
Each accumulator is created as a hash map comprised of the following multiple key:value
pairs, separated by the #
symbol:
Accumulator.N = Name:<accumulator_name> #NormalPressure:<pressure_psi> #InitialPressure:<pressure_psi> #Capacity:<litres>
Note that you may have more than one accumulator, so for each one you should increment the N
index, starting from 1. A full example of a single accumulator definition would be like this:
Accumulator.1 = Name:AccumulatorBrakes #NormalPressure:3000 #InitialPressure:1080 #Capacity:3
Key | Value | Description | Required |
---|---|---|---|
Name |
String | This is a name string that is used as an alias to identify the accumulator. It will also be used as the reference index for SimVars, and note that the name is the only guaranteed reference to the component due to the fact that the Modular Aircraft Merging process may change the index. | Yes |
NormalPressure |
Float | This is the pressure at which the accumulator will contain its capacity in fluid, in psi. | Yes |
InitialPressure |
Float | This defines the initial gas pressure (in psi) within the accumulator, and the accumulator will not store fluid/pressure while the external line pressure is below this value. | Yes |
Capacity |
Float | The capacity of fluid that the accumulator can hold (in litres) when at normal pressure. | Yes |
Valve.N
The valve line feature is used for hydraulic fluid flow control. Each valve is created as a hash map comprised of the following multiple key:value
pairs, separated by the #
symbol:
Valve.N = Name:<valve_name> #Type:<valve_type> #PressureThreshold:<threshold_psi> #Circuit:<circuit_name> #RestPosition:<value>
Note that you may have more than one valve defined in a system, so for each one you should increment the N
index, starting from 1. A full example of a single valve definition would be like this:
Valve.1 = Name:ValveSO_A #Type:ShutOff #Circuit:C_HYDRAULIC
Key | Value | Description | Required |
---|---|---|---|
Name |
String | This is a name string that is used as an alias to identify the valve. It will also be used as the reference index for SimVars, and note that the name is the only guaranteed reference to the component due to the fact that the Modular Aircraft Merging process may change the index. | Yes |
Type |
String |
The type of valve being defined. Can be one of the following:
|
Yes |
PressureThreshold |
Float |
This is the pressure threshold value (in psi) that will be used for Pressure Relief, Pressure Reducer, and Priority valves. It defines defines the limit value that triggers the valve action. Default value is 0.9. |
No |
Circuit |
String |
If the valve is electrically driven, this parameter specifies the name of the circuit that has been defined in the electrical system as the Note that this is the preferred method for identifying a circuit, but if you have supplied a Default value is "". |
No |
CircuitIndex |
Integer |
If the valve is electrically driven, this parameter specifies the index of the circuit that has been defined in the electrical system as the Note that this method for identifying a circuit is only supposed to be used for backwards compatibility with legacy aircraft, and you should be supplying a Default value is 0. |
No |
RestPosition |
Float |
This will set the unpowered behavior of valves of the ShutOff Default value is 0. |
No |