I have decided to simulate the PACK system with a real working ventilation system together with a logic sequence (via SIOC coding) so that the ventilation works only if there is bleed air available (either from APU or from engines) Since the offset for ground HP is not provided for JEEHELL I can only simulate APU and ENGINE bleed systems with some logic behind it. Please refer to my code at the bottom :) enjoy.
I first constructed an air distribution collector box where I connect the blower. The dimensions are 30x20x20 cm (approximately). The round holes are 82mm dia for the connection of the aluminum flexible connection hoses.
#airbus #a320 #airbusa320 #packs #engineering #design #turkey #turkish #engineering #simulator #homecockpit #homesimulator #cooling #ventilation #hvac #system
Then the fan was installed on this unit. The fan is from Başkurt Turkey with part no 53546316. It is a 12vdc fan with 3 air flow rates (290,400 and 520 m3/h) which will be linked to PACK LOW, PACK NORM and PACK HI respectively. I had to be careful with relay selection in terms Amps (4.8 , 7.2 and 10.8 Amps for each flow rates) The flow rates are controlled by hicapacity resistor block already installed on the blower unit.
Here is what the unit looks like with the power supply (12vdc 240W) and the relays connected.
The sioc code for the logic is as follows, feel free to copy and adapt as wished. The comments next to the coding will try to clarify what's happening.PACK HIGH, NORM and LOW respectively. The 4 inputs are connected the OC output card.
The air distribution in the cockpit is done via 82mm aluminium flex ventilation hoses.
The sioc code for the logic is as follows, feel free to copy and adapt as wished. THe comments next to the coding will try to clarify what's happening. The idea is if there is bleed air available (form some source) the main relay becomes ON and powers the other three which are then controlled from the overhead AIRCOND panel, pack flow selector.
Var 0001, name e1bleed, Link FSUIPC_INOUT, Offset $206C, Length 8, Numbers 0 //this is bleed air pressure for ENG1 from FSUIPC I did not use this in my logic, it may be used if this is above some psi value the main relay for bleed available can be activated
Var 0002, name e2bleed, Link FSUIPC_INOUT, Offset $216C, Length 8, Numbers 0 //this is bleed air pressure for ENG2 from FSUIPC I did not use this in my logic, it may be used if this is above some psi value the main relay for bleed available can be activated
Var 0003, name 739C, Link FSUIPC_INOUT, Offset $739C, Length 1 // JH Led Offsets
{
CALL &APUBLEEDON
}
Var 0004, name 739A, Link FSUIPC_INOUT, Offset $739A, Length 1 // JH Led Offsets
{
CALL &APUBLEEDON
}
Var 0005, name APBLEEDON, Link SUBRUTINE
{
L0 = TESTBIT &739C ,2 // to find out if APU START AVAIL Led is ON
L1 = TESTBIT &739A ,3 // to find out if APU BLEED ON Led is ON
IF L1 = 1
{
IF L0 = 1
{
&APUBLEEDON = 1 // if both APU START AVAIL led and APU BLEED ON leds are turned on then set APUBLEEDON variable to 1
}
ELSE
{
&APUBLEEDON = 0 //otherwise set APUBLEEDON variable to 0
}
}
ELSE
{
&APUBLEEDON = 0 //otherwise set APUBLEEDON variable to o
}
}
Var 0006, name 7399, Link FSUIPC_INOUT, Offset $7399, Length 1 // JH led offsets
{
CALL &PACK1OFFFLAG
CALL &PACK2OFFFLAG
}
Var 0007, name PACK1OFFFLAG, Link SUBRUTINE
{
L0 = TESTBIT &7399 ,1 //check if PACK1 led is OFF
IF L0 = 1
{
&PACK1OFFFLAG = 1 //if PACK1 led is OFF sets PACK1OFFFLAG to 1
}
ELSE
{
&PACK1OFFFLAG = 0 //otherwise PACK1OFFFLAG is 0
}
}
Var 0008, name PACK2OFFFLAG, Link SUBRUTINE
{
L0 = TESTBIT &7399 ,3 //check is PACK2 led is OFF
IF L0 = 1
{
&PACK2OFFFLAG = 1 //if PACK2 led is OFF sets PACK2OFFFLAG to 1
}
ELSE
{
&PACK2OFFFLAG = 0 //otherwise PACK2OFFFLAG is 0
}
}
Var 0009, name ENG1COMB, Link FSUIPC_INOUT, Offset $0894, Length 2 //FSUIPC offset for ENG1 running, TRUE if running
Var 0010, name ENG2COMB, Link FSUIPC_INOUT, Offset $092C, Length 2 //FSUIPC offset for ENG2 running, TRUE if running
Var 0011, name TIME4, Link FSUIPC_INOUT, Offset $023A, Length 1 // this is seconds from FSUIPC which changes all the time, In order for a command to function the variable must always change, so this is a silly solution to run the LOGICPACK LOGICENG and MAINLOGIC loops all the time 😊
{
CALL &LOGICPACK
CALL &LOGICENG
CALL &MAINLOGIC
}
Var 0012, name LOGICPACK, Link SUBRUTINE
{
IF &PACK1OFFFLAG = 1
{
IF &PACK2OFFFLAG = 1
{
&ONEPACKAVAIL = 0 //at least one PACK is not available
}
ELSE
{
&ONEPACKAVAIL = 1 //at least one PACK is available
}
}
ELSE
{
&ONEPACKAVAIL = 1
}
}
Var 0013, name ONEPACKAVAIL
Var 0014, name ONEGINEAVAIL
Var 0015, name LOGICENG, Link SUBRUTINE
{
IF &ENG1COMB = 0
{
IF &ENG2COMB = 0
{
&ONEGINEAVAIL = 0 //at least one engine is not running
}
ELSE
{
&ONEGINEAVAIL = 1 //at least one engine is running
}
}
ELSE
{
&ONEGINEAVAIL = 1
}
}
Var 0016, name MAINLOGIC, Link SUBRUTINE
{
IF &ENG1COMB <> 1 //engine1 is not running
{
IF &ENG2COMB <> 1 //engine 2 is not running
{
IF &APUBLEEDON = 1 //APUBLEEDON is 1
{
IF &ONEPACKAVAIL = 1 // and at least one PACK is available
{
&RBLEEDAVAIL = 1 //SETS RBLEEDAVAIL to 1
}
ELSE
{
&RBLEEDAVAIL = 0
}
}
ELSE
{
&RBLEEDAVAIL = 0
}
}
ELSE
{
CALL &MAINLOGICENGON
}
}
ELSE
{
CALL &MAINLOGICENGON
}
}
Var 0017, name MASTERRELAY
Var 0018, name MAINLOGICENGON, Link SUBRUTINE
{
IF &ONEGINEAVAIL = 1 //at least one engine is running
{
IF &ONEPACKAVAIL = 1 //at least one pack is available
{
&RBLEEDAVAIL = 1 //sets RBLEEDAVAIL to 1 (which is the master relay)
}
ELSE
{
&RBLEEDAVAIL = 0
}
}
ELSE
{
&RBLEEDAVAIL = 0
}
}
SIOC CODE PACKFLOW SELECTORS
Var 0001, name PACKFLOWLOW, Link IOCARD_SW, Device 87, Input 26, Type I
{
IF &PACKFLOWLOW = 1
{
&78EE = 44
&RPACKLOW = 1
}
ELSE
{
&RPACKLOW = 0
}
}
Var 0002, name PACKFLOWNORM, Link IOCARD_SW, Device 87, Input 23, Type I
{
IF &PACKFLOWNORM = 1
{
&78EE = 45
&RPACKNORM = 1
}
ELSE
{
&RPACKNORM = 0
}
}
Var 0003, name PACKFLOWHI, Link IOCARD_SW, Device 87, Input 25, Type I
{
IF &PACKFLOWHI = 1
{
&78EE = 46
&RPACKHI = 1
}
ELSE
{
&RPACKHI = 0
}
}
Comments