// ***************************************************************************** // * Config_SIOC ver 3.5 - By Manolo Vélez - www.opencockpits.com // ***************************************************************************** // * FileName : KaTZe_04-04.txt // * Katzpit version multi-avion // * Date : 3/11/2009 // // * Sommaire // 0000-0200 Variables Lock-ON // 0200-0250 Variables Calculées // 0250-0300 Module ILS // 0300-0350 Module Navigation // 0350-0400 Specification Avions // 0400-0450 Module Consommation // 0450-0460 Module Ravitaillement // 0480-0500 Module Moteur // 0500-0600 Module Armement // 0700-0800 Module Alarmes Perso // 0800-0850 Module Alarmes LockOn // 0870-0900 Module Pilote Auto // 0900-1000 Switch de commandes // 1000-1100 Module TS // 1100-1200 Module de calcul de route vers position Bullseye Var 0000, name LOCKONVAL // Valeur pour LOCKONCMD Var 0001, name LOCKONCMD // Commandes LOCKON { &LOCKONCMD = 0 } Var 0002, name SPECIALCMD // Commandes spéciales { &SPECIALCMD = 0 } Var 0003, name SIOCKEYS // Emulateur clavier SIOC { &SIOCKEYS = 0 } Var 0004, name LOSIOCCMD // Commandes LOSIOCTools { &LOSIOCCMD = 0 } Var 0005, name LOCKONINIT // Initialisation variable SIOC Var 0010, name MTime // Chrono de la mission { &Time5s = MOD &MTime ,5 &Now_Tot = &MTime + &MStart &FlyTime = &FlyTime + &In_flight // Incrément de la durée de vol (si In_flight = 1) // CALL &HSI_1 // Calcul HSI WP } Var 0011, name MStart // Heure de début de la mission (test d'initialisation des chronos) { &Chrono_t0 = &MStart &Shoot_t0 = &MStart } Var 0022, name IAS // IAS (cm/s) { &IAS_kmh = &IAS * 0.036 // Calcul de l'IAS en km/h (var 0222) } Var 0023, name TAS // TAS (cm/s) { &TAS_mps = &TAS * 0.01 // Calcul de la TAS en m/sec &TAS_mpmn = &TAS * 0.6 // Calcul de la TAS en m/mn IF &TAS > 4000 // Si TAS > 144 km/h avion en vol { &In_flight = 1 } ELSE { &In_flight = 0 } } Var 0024, name QNH // Altitude QNH (Niveau Mer) (cm) { &QNH_hm = &QNH / 10000 // Altitude en hectometre } Var 0025, name QFE // Hauteur QFE au dessus du sol (cm) { IF &QFE < 2000 { &QFE_Low_Led = 1 // Low altitude Var 0725 } ELSE { &QFE_Low_Led = 0 } CALL &QFE_Range, &QFE // Envoie de la donnée au calcul d'ILS (Var 0263) } Var 0026, name AOA // Angle of Attack { IF &AOA > 1000 { &AoA_High_Led = 1 // High angle of attack Var 0726 } ELSE { &AoA_High_Led = 0 } CALL &AOA_Range, &AOA // Envoie de la donnée au calcul d'ILS (Var 0266) } Var 0027, name Acc_G // Nombre de G { If &Acc_G > &Acc_GMax { &Acc_GMax = &Acc_G } If &Acc_G < &Acc_GMin { &Acc_GMin = &Acc_G } } Var 0028, name Vario // Variometre { &VarioShow = &Vario * &Vario_mn L0 = ABS &VarioShow If L0 > 10000 // Arrondi de la valeur variometre à 100m/mn { L1 = &VarioShow / 10000 L1 = Round L1 &VarioShow = L1 * 10000 } IF &Vario < -1000 { &Vario_Low_Led = 1 // High descent alarm Var 0728 } ELSE { &Vario_Low_Led = 0 } CALL &Vario_Range, &Vario // Envoie de la donnée au calcul d'ILS (Var 0269) } Var 0029, name Mach_nbr // Mach Nbr (*10) Var 0031, name Roll // Taux de roulis Var 0034, name ILS_Up // Positionnement vertical faisceau ILS { L0 = &ILS_Up * -1 L0 = L0 + 100 L0 = L0 / 2 L0 = Limit 0 , 100 , 0 &ILS_Up_pct = L0 // %age deplacement lateral V0274 } Var 0035, name ILS_Lat // Positionnement lateral faisceau ILS { L0 = &ILS_Lat L0 = L0 + 100 L0 = L0 / 2 L0 = Limit 0 , 100 , 0 &ILS_Lat_pct = L0 // %age deplacement lateral V0275 } Var 0038, name WP_rad // Direction du WP { L0 = 628 - &WP_rad L0 = L0 * 0.5732 // Division par 628 , Multi par 360 &WP_deg = L0 // Variable 0238 (WP en degré) } Var 0039, name Route_rad // Direction de la route { L0 = 628 - &Route_rad L0 = L0 * 0.5732 &Route_deg = L0 // Variable 0239 (Route en degré) } Var 0040, name Cap_rad // Cap suivi { L0 = 628 - &Cap_rad L0 = L0 * 0.5732 &Cap_deg = L0 // Variable 0240 (Cap en degré) L1 = &Cap_rad * 0.5732 &Cap_dev = L1 // Deviation de la rosace } Var 0041, name L_rpm // regime moteur gauche (rpm) { IF &L_rpm > 500 { &L_Eng_LED = 0 } } Var 0042, name R_rpm // regime moteur droit (rpm) { IF &R_rpm > 500 { &R_Eng_LED = 0 } } Var 0047, name Fuel_I // Fuel internal (Deca-gramme = Unité Koko = UK) { &Fuel_T = &Fuel_I + &Fuel_E // Calcul de la quantité de Kéro total (UK) CALL &Refuel_Sub, &Fuel_I // SUBRUTINE Refuel control } Var 0048, name Fuel_E // Fuel external (Deca-gramme) { &Fuel_T = &Fuel_I + &Fuel_E // Calcul de la quantité de Kéro total (UK) } Var 0050, name Terrain_X // Position X du terrain selectionné { CALL &Ter_Num, &Terrain_X } Var 0055, name WP_Distance // Distance du WP selectionné (cm) Var 0064, name ResMode // Test byte input { CALL &ResM, &ResMode } Var 0071, name MCPState // Panel Alarme subroutine exploration { CALL &MCPS, &MCPState } Var 0182, name CurrentWeapon // Arme Selectionnée trigger = selection d'arme // A chaque nouvelle selection on scan le nombre de munitions disponibles { CALL &W_Adjust_Qty, &CurrentWeapon // Var0519 ajuste la valeur des munitions du pylone } Var 0183, name WeaponType // Type d'arme Var 0184, name WeaponQty // Quantité de munitions disponibles // A chaque tir on ajuste le nombre de munition disponible { CALL &W_Adjust_Qty, &CurrentWeapon // Var0519 ajuste la valeur des munitions du pylone &Shoot_t0 = &Now_Tot } Var 0187, name ScanPylon // Type d'arme sur pylone scanné Var 0188, name ScanCount // Quantité sur le pylone scanné Var 0189, name ScanNum // N° du pylone scanné { CALL &W_Scan_Typ, &ScanNum // Var0520 affectation des résultats du scan dans les variables d'emport } // Panel Weapon réagit à chaque modification d'emport pylone (larguage, ... pb jettison fuel tank , et panier roquette ...) Var 0191, name PanelWeapon { CALL &WeaponStatus, &PanelWeapon // Var0500 , testbit du panel (présence par pylone) &Shoot_t0 = &Now_Tot } // // Modification , Conversion des variables LockON ---------------------------------------------------- // Var 0200, name Now_Tot // Heure Actuelle en Seconde, incrémentée t { &Now_mnsec = MOD &Now_Tot ,3600 // Calcul des minutes &Now_sec = MOD &Now_Tot ,60 // Seconde actuelle &Chrono = &Now_Tot - &Chrono_t0 // Calcul chronometre manuel &Shoot_sec = &Now_Tot - &Shoot_t0 // Calcul chronometre de tir CALL &WP_Comput, &WP_Distance CALL &Tx_Virage, &Cap_rad } Var 0201, name Now_mnsec // Minutes Actuelles (sec) Var 0202, name Now_sec // Secondes Actuelles (sec) Var 0205, name In_flight, value 0 // Switch appareil en vol (>150km/h) { &Refuel_Stop = 0 // arrêt du ravitaillement pour éviter vide vite &Scan_Panel = &Scan_Panel * -1 // scan du panel armement au decollage } Var 0206, name FlyTime, value 0 // Durée de vol (sec) { &FlyTime_sec = MOD &FlyTime ,60 // Modulo seconde de la durée de vol } Var 0207, name FlyTime_sec, value 0 // Durée de vol (modulo secondes) Var 0210, name Chrono, value 0 // Chronomètre en secondes { &Chrono_sec = MOD &Chrono, 60 } Var 0211, name Chrono_sec // Chrono manuel Modulo Secondes 0-59 Var 0214, name Chrono_t0, value 0 // Time de départ du chrono manuel (sec) Var 0213, name Chrono_SW, value 1 // mise à zéro du chrono manuel (bolean) { &Chrono_t0 = &Now_Tot } Var 0215, name Shoot_sec // Chrono de tir { &Shoot_sec = LIMIT 0 , 90, 0 // Limite le timer de tir à 1mn30 ... PT'1 çà marche pas :-( } Var 0216, name Shoot_t0 // Time du dernier tir (sec) Var 0220, name Time5s // Temps modulus 5 secondes { IF &Time5s = 0 // Calculs consommation effectués toutes le { CALL &TankOS_Sub, &WByte03 // SUBRUTINE de Check Overspeed CALL &Conso_Sub, &Fuel_T // SUBRUTINE de calcul de Consommation CALL &Autonom_sub, &Fuel_T // SUBRUTINE de calcul d'Autonomie } } Var 0222, name IAS_kmh // IAS en km/h { IF &IAS_kmh < &IAS_min { &IAS_Low_Led = 1 // Low speed alarm V0722 } ELSE { &IAS_Low_Led = 0 } CALL &IAS_Range, &IAS_kmh // Envoie de la donnée au calcul d'ILS (Var 0260) } Var 0223, name TAS_mpmn // TAS (m/mn) Var 0224, name TAS_mps // TAS (m/s) Var 0227, name Acc_GMax // Max G dans le Vol Var 0228, name Acc_GMin // Min G dans le Vol Var 0230, name Tx_Virage, Link SUBRUTINE // Calcul du taux de virage (rd/sec) { &Cap_T1 = &Cap_T0 &Cap_T0 = &Cap_rad L0 = &Cap_T1 - &Cap_T0 // Taux de virage sur une seconde en rd L0 = L0 * 0.5732 L0 = Limit -30 , 30 , 0 &Vari_Cap = L0 } Var 0231, name Cap_T0 Var 0232, name Cap_T1 Var 0233, name Vari_Cap Var 0238, name WP_deg // WP direction en degré { L0 = &WP_deg + 179 // Truc pour afficher 360° pour cap 0 L0 = MOD L0 , 360 L0 = L0 + 1 &Bulls_deg = L0 // Calcul du BullsEye en degre (Var 0241) CALL &HSI_1 // Calcul HSI WP } Var 0239, name Route_deg // Route direction en degré { CALL &HSI_1 // Calcul HSI WP } Var 0240, name Cap_deg // Cap en degré { CALL &HSI_1 // Calcul HSI WP } Var 0241, name Bulls_deg Var 0242, name WP_dev // Deviation aiguille Jaune { L0 = &WP_Dev L0 = Limit -38 , 38 , 0 &RunWay_dev = L0 } Var 0243, name Route_dev // Deviation aiguille blanche Var 0244, name Cap_dev // Deviation de la rosace des caps Var 0245, name RunWay_dev // Direction de la piste (ILS) Var 0246, name HSI_1, Link SUBRUTINE // Calcul de position des aiguilles du HSI { L0 = &WP_deg - &Cap_deg L1 = Abs L0 L2 = L0 / L1 // Signe de la deviation IF L1 > 180 { L0 = L1 - 360 L0 = L0 * L2 } &WP_dev = L0 // Calcul de la position de l'aiguille jaune // L0 = &Route_deg - &Cap_deg L1 = Abs L0 L2 = L0 / L1 // Signe de la deviation IF L1 > 180 { L0 = L1 - 360 L0 = L0 * L2 } &Route_dev = L0 // Calcul de la position de l'aiguille blanche } // // Module Terrain et ILS ---------------------------------------------------------------------------------------- // Var 0250, name Ter_Num, Link SUBRUTINE // Numero du terrain selectionné { If &Terrain_X = -7937656 { &Ter_Num = 1 } If &Terrain_X = -7051329 { &Ter_Num = 1 } If &Terrain_X = -1754610 { &Ter_Num = 2 } If &Terrain_X = -1118214 { &Ter_Num = 2 } If &Terrain_X = -2969512 { &Ter_Num = 3 } If &Terrain_X = -2080590 { &Ter_Num = 3 } If &Terrain_X = 4975507 { &Ter_Num = 4 } If &Terrain_X = 5875507 { &Ter_Num = 4 } If &Terrain_X = 5159991 { &Ter_Num = 5 } If &Terrain_X = 5744492 { &Ter_Num = 5 } If &Terrain_X = 1003702 { &Ter_Num = 6 } If &Terrain_X = 785991 { &Ter_Num = 6 } If &Terrain_X = 2259960 { &Ter_Num = 7 } If &Terrain_X = 2885153 { &Ter_Num = 7 } If &Terrain_X = -5496775 { &Ter_Num = 8 } If &Terrain_X = -5203760 { &Ter_Num = 8 } If &Terrain_X = 3862364 { &Ter_Num = 9 } If &Terrain_X = 4446868 { &Ter_Num = 9 } If &Terrain_X = 1265645 { &Ter_Num = 10 } If &Terrain_X = 1742572 { &Ter_Num = 10 } If &Terrain_X = -1963697 { &Ter_Num = 11 } If &Terrain_X = -1086765 { &Ter_Num = 11 } If &Terrain_X = -1889207 { &Ter_Num = 12 } If &Terrain_X = -1215149 { &Ter_Num = 12 } If &Terrain_X = 1262619 { &Ter_Num = 13 } If &Terrain_X = 1215569 { &Ter_Num = 13 } If &Terrain_X = -5429721 { &Ter_Num = 14 } If &Terrain_X = -4760892 { &Ter_Num = 14 } If &Terrain_X = 730174 { &Ter_Num = 15 } If &Terrain_X = 35910 { &Ter_Num = 15 } If &Terrain_X = -1245388 { &Ter_Num = 16 } If &Terrain_X = -1944822 { &Ter_Num = 16 } If &Terrain_X = -6418658 { &Ter_Num = 17 } If &Terrain_X = -5729214 { &Ter_Num = 17 } If &Terrain_X = -17293137 { &Ter_Num = 18 } If &Terrain_X = -16870685 { &Ter_Num = 18 } If &Terrain_X = -456659 { &Ter_Num = 19 } If &Terrain_X = 157079 { &Ter_Num = 19 } If &Terrain_X = -22842953 { &Ter_Num = 20 } If &Terrain_X = -22448371 { &Ter_Num = 20 } If &Terrain_X = -21246093 { &Ter_Num = 21 } If &Terrain_X = -20458910 { &Ter_Num = 21 } } // Calcul des variables pour le Panel ILS // Var 0260, name IAS_range, Link SUBRUTINE // Conversion IAS en % dans une bande 200-400kmh { L0 = &IAS_Range L0 = L0 - 200 L0 = L0 / 2 L0 = Limit 0 , 100 , 0 L0 = 100 - L0 &IAS_pct = L0 } Var 0261, name IAS_pct // Hauteur Var 0263, name QFE_Range, Link SUBRUTINE // Conversion QFE en % dans une bande 0-400m { L0 = &QFE_Range L0 = L0 / 400 L0 = Limit 0 , 100 , 0 L0 = 100 - L0 &QFE_pct = L0 } Var 0264, name QFE_pct // Angle of attack Var 0266, name AOA_Range, Link SUBRUTINE // Conversion AOA en % dans une bande -5° > 15° { L0 = &AOA_Range L0 = L0 + 500 L0 = L0 / 20 L0 = Limit 0 , 100 , 0 L0 = 100 - L0 &AOA_pct = L0 } Var 0267, name AOA_pct // Variometre Var 0269, name Vario_Range, Link SUBRUTINE // Conversion Vario en % dans une bande -15 m/s > +5 m/s { L0 = &Vario_Range L0 = L0 + 1500 L0 = L0 / 20 L0 = Limit 0 , 100 , 0 L0 = 100 - L0 &Vario_pct = L0 } Var 0270, name Vario_pct Var 0274, name ILS_Up_pct // Positionnement vertical faisceau ILS Var 0275, name ILS_Lat_pct // Positionnement lateral faisceau ILS // // Module de Navigation ---------------------------------------------------------------------------------------- // Var 0300, name WP_Comput, Link SUBRUTINE // Calcul de Route toute les secondes { &Time2_WP = &WP_Distance / &TAS_mps // Duree de vol vers le WP (sec) &ETA_WP = &Now_Tot + &Time2_WP &ETA_WPmn = MOD &ETA_WP ,3600 &ETA_WPsec = MOD &ETA_WP ,60 &Time5s_WP = &Time2_WP / 5 // Durée de vol vers WP en multiple de 5 sec &Fuel2_WP = &Time5s_WP * &Conso_5s // Consommation Kero jusqu'au WP (UK) &TimeO2_WP = &WP_Distance / &TAS_Eco // Consommation kero à régime éco &FuelO2_WP = &TimeO2_WP * &Cons_Eco // Durée de vol à régime éco &PlayFuel = &Fuel_T - &FuelO2_WP &PlayTime = &PlayFuel / &Conso_mn // Calcul du PlayTime (Kéro total - retour) // Calcul des aiguilles du HSI (dépendent de 3 paramêtres) L0 = &Cap_deg - &WP_deg L0 = MOD L0 , 360 &WP_dev = L0 * -1 // Calcul de la position de l'aiguille jaune // L1 = &Cap_deg - &Route_deg L1 = MOD L1 , 360 &Route_dev = L1 * -1 // Calcul de la position de l'aiguille blanche } Var 0302, name Time2_WP // Time to WP régime TAC(sec) { L0 = &Vario * &Time2_WP // Calcul de l'altitude prevue au WP = QNH + Vario * Time2WP L0 = &QNH + L0 L0 = L0 / 10000 // Arrondi à 100 m L0 = Round L0 &QNH_WP = L0 * 100 // Valeur en metre } Var 0303, name Time5s_WP // Time to WP en multiple de 5sec Var 0304, name ETA_WP // ETA en secondes Var 0305, name ETA_WPmn // ETA en minutes Var 0306, name TimeO2_WP // Time to WP régime eco (sec) Var 0308, name Fuel2_WP // Fuel to WP en regime TAC (UK) Var 0309, name FuelO2_WP // Fuel to WP en regime ECO (UK) Var 0310, name PlayFuel // Kero dispo sur zone (UK) Var 0311, name PlayTime // Playtime (mn) Var 0312, name ETA_WPsec // ETA secondes Var 0315, name SW_VarioUnit, Value 1 // Switch de selection d'unite de variometre { IF &SW_VarioUnit = 1 { &Vario_mn = 60 // variometre en m/mn } ELSE { &Vario_mn = 1 // variometre en m/sec } } Var 0316, name Vario_mn, Value 60 // Vario en m/mn Var 0317, name VarioShow, Value 0 // Variometre affiché Var 0318, name QNH_WP // QNH prévu au WP // // Module de Specifications Avion ---------------------------------------------------------------------------------------- // // Mise à jour des specs // TAS_Eco = TAS de regime eco à QNH=0 Var 0350, name Spec_TasEco, value 10800 // Specification de TAS Economique (défaut Mig-29) Var 0351, name Spec_TasCA, value 33 // Specification de correction altitude de la TAS Economique Var 0352, name Spec_ConsEco, value 2960 // Specification de consommation economique de carburant (UK/mn) Var 0353, name Spec_ConsCA, value -8 // Specification de correction altitude de la consommation economique Var 0354, name Spec_Finesse, value 700 // Finesse (m / hectom) Var 0355, name FuelMax_E, value 300000 // Capacite maximale des reservoirs externe (UK) Var 0356, name FuelMax_I , value 350000 // Capacite maximale du reservoir interne (UK) { &Refuel_Lim = &FuelMax_I } Var 0362, name IAS_min, value 250 // Minimum speed spec km/h Var 0390, name Spec_29, value 1 // Switch Spec Mig-29 { &IAS_min = 250 &Spec_TasEco = 10800 // (m/mn) 650 km/h au niveau de la mer &Spec_TasCA = 33 // augmentation de la TAS eco 33 m/mn par 100m altitude &Spec_ConsEco = 2960 // (UK/mn) 29.6 kg/mn au niveau de la mer &Spec_ConsCA = -8 // diminution de consommation par hectometre d'alti &Spec_Finesse = 700 &FuelMax_I = 350000 &FuelMax_E = 300000 &Scan_Panel = &Scan_Panel * -1 } Var 0391, name Spec_25, value 1 // Switch Spec SU-25 { &IAS_min = 200 &Spec_TasEco = 9333 &Spec_TasCA = 38 &Spec_ConsEco = 4500 &Spec_ConsCA = -25 &Spec_Finesse = 700 &FuelMax_I = 283500 &FuelMax_E = 152000 &Scan_Panel = &Scan_Panel * -1 } Var 0392, name Spec_26, value 1 // Switch Spec SU-25T { &IAS_min = 200 &Spec_TasEco = 9333 &Spec_TasCA = 38 &Spec_ConsEco = 4500 &Spec_ConsCA = -25 &Spec_Finesse = 700 &FuelMax_I = 379000 &FuelMax_E = 152000 &Scan_Panel = &Scan_Panel * -1 } Var 0393, name Spec_27, value 1 // Switch Spec SU-27 { &IAS_min = 250 &Spec_TasEco = 10800 &Spec_TasCA = 33 &Spec_ConsEco = 4500 &Spec_ConsCA = -16 &Spec_Finesse = 700 &FuelMax_I = 940000 &FuelMax_E = 0 &Scan_Panel = &Scan_Panel * -1 } Var 0394, name Spec_33, value 1 // Switch Spec SU-33 { &IAS_min = 250 &Spec_TasEco = 10800 &Spec_TasCA = 33 &Spec_ConsEco = 4500 &Spec_ConsCA = -16 &Spec_Finesse = 700 &FuelMax_I = 940000 &FuelMax_E = 0 &Scan_Panel = &Scan_Panel * -1 } Var 0395, name Spec_10, value 1 // Switch Spec A-10 { &IAS_min = 180 &Spec_TasEco = 6080 &Spec_TasCA = 27 &Spec_ConsEco = 1980 &Spec_ConsCA = -4 &Spec_Finesse = 700 &FuelMax_I = 485000 &FuelMax_E = 480000 &Scan_Panel = &Scan_Panel * -1 } Var 0396, name Spec_15, value 1 // Switch Spec F-15 { &IAS_min = 250 &Spec_TasEco = 10000 &Spec_TasCA = 25 &Spec_ConsEco = 2960 &Spec_ConsCA = -11 &Spec_Finesse = 700 &FuelMax_I = 610000 &FuelMax_E = 480000 &Scan_Panel = &Scan_Panel * -1 } // // Module de Consommation ---------------------------------------------------------------------------------------- // Var 0404, name Fuel_I25 // Calcul de la quantité des bidons (bug de LO total fuel dans Fuel interne) Var 0405, name Fuel_E25 // Calcul de la quantité des bidons (bug de LO total fuel dans Fuel interne) Var 0406, name Fuel_E25_pct Var 0407, name Fuel_I_pct Var 0408, name Fuel_E_pct Var 0409, name QNH_hm // Altitude(hm) (centaine de metres) Var 0410, name Conso_Sub, Link SUBRUTINE // Calcul de Consommation { &Fuel_T1 = &Fuel_T0 &Fuel_T0 = &Fuel_T &Conso_5s = &Fuel_T1 - &Fuel_T0 // Consommation kéro sur 5 secondes (UK) &Conso_mn = &Conso_5s * 12 // Consommation kéro extrapolée sur 1 mn (UK) &TAS_Eco_ac = &Spec_TasCA * &QNH_hm &TAS_Eco = &Spec_TasEco + &TAS_Eco_ac &Cons_Eco_ac = &Spec_ConsCA * &QNH_hm &Cons_Eco = &Spec_ConsEco + &Cons_Eco_ac } Var 0411, name Fuel_T // Fuel total { L2 = &Fuel_T - &FuelMax_I // Calcul de la quantité réservoir sur SU25 L2 = Limit 0 , 400000 , 0 // Toujours positif &Fuel_E25 = L2 &Fuel_I25 = &Fuel_T - &Fuel_E25 // Quantité interne L0 = &FuelMax_I / 100 L1 = &FuelMax_E / 100 &Fuel_I_pct = &Fuel_I / L0 // %age de remplissage du kerozene interne &Fuel_E_pct = &Fuel_E / L1 // %age de remplissage du kerozene externe &Fuel_E25_pct = &Fuel_E25 / L1 // %age de remplissage du kerozene externe du SU 25 } Var 0412, name Fuel_T0 // Fuel Conso 0 : à temps t Var 0413, name Fuel_T1 // Fuel Conso 1 : à temps t-5 secondes Var 0414, name Conso_5s // Consommation UK sur les 5 secondes Var 0415, name Conso_mn // Consommation UK / mn Var 0420, name TAS_Eco, Value 10800 // TAS de régime éco (m/mn) Var 0421, name TAS_Eco_ac, Value 0 // Augmentation de la TAS avec l'altitude Var 0422, name Cons_Eco, Value 2960 // Consommation en régime eco (UK/mn) Var 0423, name Cons_Eco_ac, value 0 // Diminution de la consommation en regime eco Var 0430, name Autonom_sub, Link SUBRUTINE // Calcul d'Autonomie { &Auton_mn = &Fuel_T / &Conso_mn // Durée Kéro restant à régime TAC (mn) &Range_m = &Auton_mn * &TAS_mpmn // Distance franchissable à régime TAC(m) &Auton_Eco_mn = &Fuel_T / &Cons_Eco // Durée Kéro testant à régime Eco (mn) &Range_Eco_m = &Auton_Eco_mn * &TAS_Eco // Distance franchissable à régime Eco (m) &Range_VP_m = &Spec_Finesse * &QNH_hm &Range_Tot_m = &Range_Eco_m + &Range_VP_m } Var 0431, name Auton_mn // Autonomie TAC en mn Var 0432, name Range_m // Distance franchissable maximale TAC (m) Var 0435, name Auton_Eco_mn // Autonomie optimale en minute Var 0436, name Range_Eco_m // Distance franchissable maximale ECO (m) Var 0437, name Range_VP_m // Autonomie en vol plané (fonction QNH) Var 0439, name Range_Tot_m // Distance franchissable totale ECO (m) // // Module de Ravitaillement ---------------------------------------------------------------------------------------- // Var 0450, name Refuel_On // Flag de refuelling Var 0453, name Refuel_Lim, Value 350000 // Limite de Refuel interne Var 0454, name Refuel_Rot, Value 1 // Selecteur de refueling de Gauge Composer { IF &Refuel_Rot = 0 { &Refuel_Lim = &FuelMax_I / 2 // 50% Moitié du tank In } IF &Refuel_Rot = 1 { &Refuel_Lim = &FuelMax_I // 100% Full Tank In } IF &Refuel_Rot = 2 { &Refuel_Lim = &FuelMax_I // 130% Full Tank In + Bidon } IF &Refuel_Rot = 3 { &Refuel_Lim = 0 // Pas de refuel interne juste reload Weapon + Bidon } } Var 0455, name Refuel_SW, Value 1 // Ecoute du Switch de refueling { IF &TAS < 100 // On ne refuel qu'au sol pour éviter vide vite { IF &Refuel_Rot = 3 // Mode avec Bidon, commande de réarmement { &LOCKONCMD = 82 } ELSE { &Refuel_On = 1 // Flag de Refuel = On &LOCKONCMD = 79 // Commande de refuel IF &Refuel_Rot = 2 // Commande de réarmement si mode 2 { &LOCKONCMD = 82 } } } } Var 0457, name Refuel_Sub, Link SUBRUTINE { IF &Refuel_On = 1 { &Refuel_Stop = &Refuel_Lim - &Fuel_I // Calcul de la quantité restant à ajouter } } Var 0458, name Refuel_Stop // Detection de fin de refuel { IF &Refuel_On = 1 { IF &Refuel_Stop < 5 { &LOCKONCMD = 80 // Stop refuel &Refuel_On = 0 } } } Var 0460, name Jett_Tank, Value 1 // Jettison Fuel Tank { &LOCKONCMD = 178 &Scan_Panel = &Scan_Panel * -1 CALL &Check_Tank } // // Module de Demarrage Moteur ---------------------------------------------------------------------------------------- // Var 0480, name L_EngStar_SW, Value 1 // Ecoute du switch : Start Left Engine { IF &L_rpm < 200 // Si moteur à l'arrêt on le démarre { &LOCKONCMD = 311 &L_Eng_LED = 1 } ELSE { &LOCKONCMD = 313 &L_Eng_LED = 0 } } Var 0481, name R_EngStar_SW, Value 1 // Ecoute du switch : Start Right Engine { IF &R_rpm < 200 // Si moteur à l'arrêt on le démarre { &LOCKONCMD = 312 &R_Eng_LED = 1 } ELSE { &LOCKONCMD = 314 &R_Eng_LED = 0 } } Var 0483, name L_EngStop_SW, Value 1 // Ecoute du switch : Stop Left Engine { IF &L_rpm > 200 // Si moteur en marche on l'arrête { &LOCKONCMD = 313 &L_Eng_LED = 1 } } Var 0484, name R_EngStop_SW, Value 1 // Ecoute du switch : Stop Right Engine { IF &R_rpm > 200 // Si moteur en marche on l'arrête { &LOCKONCMD = 314 &R_Eng_LED = 0 } } Var 0485, name L_Eng_LED, Value 0 // Temoin de demarrage moteur Gauche Var 0486, name R_Eng_LED, Value 0 // Temoin de demarrage moteur Droit // // Module d'armement ---------------------------------------------------------------------------------------- // Var 0500, name WeaponStatus, Link SUBRUTINE // Scan de présence sur les différents pylones (valeur 0 ou 1) { &WByte01 = TESTBIT &panelWeapon ,0 &WByte02 = TESTBIT &panelWeapon ,1 &WByte03 = TESTBIT &panelWeapon ,2 &WByte04 = TESTBIT &panelWeapon ,3 &WByte05 = TESTBIT &panelWeapon ,4 &WByte06 = TESTBIT &panelWeapon ,5 &WByte07 = TESTBIT &panelWeapon ,6 &WByte08 = TESTBIT &panelWeapon ,7 &WByte09 = TESTBIT &panelWeapon ,8 &WByte10 = TESTBIT &panelWeapon ,9 &WByte11 = TESTBIT &panelWeapon ,10 &WByte12 = TESTBIT &panelWeapon ,11 } // Quand la présence sur un pylone change on scan l'arme présente et la quantité // Le resultat est ajusté par la subroutine Var0520 // Declanché par Var0189 // Var 0501, name WByte01 { &SPECIALCMD = 501 // Scan Pylone 1 } Var 0502, name WByte02 { &SPECIALCMD = 502 } Var 0503, name WByte03 { &SPECIALCMD = 503 } Var 0504, name WByte04 { &SPECIALCMD = 504 } Var 0505, name WByte05 { &SPECIALCMD = 505 } Var 0506, name WByte06 { &SPECIALCMD = 506 } Var 0507, name WByte07 { &SPECIALCMD = 507 } Var 0508, name WByte08 { &SPECIALCMD = 508 } Var 0509, name WByte09 { &SPECIALCMD = 509 } Var 0510, name WByte10 { &SPECIALCMD = 510 } Var 0511, name WByte11 { &SPECIALCMD = 511 } Var 0512, name WByte12 { &SPECIALCMD = 512 } // // // Subroutine de mise à jour des quantité de munition disponibles // Var 0519, name W_Adjust_Qty, Link SUBRUTINE // Mise à jour du nombre de munitions disponibles { IF &W_Adjust_Qty = 1 { &B1Qty = &WeaponQty } IF &W_Adjust_Qty = 2 { &B2Qty = &WeaponQty } IF &W_Adjust_Qty = 3 { &B3Qty = &WeaponQty } IF &W_Adjust_Qty = 4 { &B4Qty = &WeaponQty } IF &W_Adjust_Qty = 5 { &B5Qty = &WeaponQty } IF &W_Adjust_Qty = 6 { &B6Qty = &WeaponQty } IF &W_Adjust_Qty = 7 { &B7Qty = &WeaponQty } IF &W_Adjust_Qty = 8 { &B8Qty = &WeaponQty } IF &W_Adjust_Qty = 9 { &B9Qty = &WeaponQty } IF &W_Adjust_Qty = 10 { &B10Qty = &WeaponQty } IF &W_Adjust_Qty = 11 { &B11Qty = &WeaponQty } IF &W_Adjust_Qty = 12 { &B12Qty = &WeaponQty } } // // // Subroutine de Scan des pylones // Var 0520, name W_Scan_Typ, Link SUBRUTINE // Le resultat du scan est stocke dans les variables de chaque pyloneType { IF &W_Scan_Typ = 1 { &B1Type = &ScanPylon &B1Qty = &ScanCount } IF &W_Scan_Typ = 2 { &B2Type = &ScanPylon &B2Qty = &ScanCount } IF &W_Scan_Typ = 3 { &B3Type = &ScanPylon &B3Qty = &ScanCount } IF &W_Scan_Typ = 4 { &B4Type = &ScanPylon &B4Qty = &ScanCount } IF &W_Scan_Typ = 5 { &B5Type = &ScanPylon &B5Qty = &ScanCount } IF &W_Scan_Typ = 6 { &B6Type = &ScanPylon &B6Qty = &ScanCount } IF &W_Scan_Typ = 7 { &B7Type = &ScanPylon &B7Qty = &ScanCount } IF &W_Scan_Typ = 8 { &B8Type = &ScanPylon &B8Qty = &ScanCount } IF &W_Scan_Typ = 9 { &B9Type = &ScanPylon &B9Qty = &ScanCount } IF &W_Scan_Typ = 10 { &B10Type = &ScanPylon &B10Qty = &ScanCount } IF &W_Scan_Typ = 11 { &B11Type = &ScanPylon &B11Qty = &ScanCount } IF &W_Scan_Typ = 12 { &B12Type = &ScanPylon &B12Qty = &ScanCount } } // Subroutine de classification des armes // * Quand une arme est chargée sur son pylone , le type est examiné avec la subroutine B_Class // * La catégorie est stockée dans la variable B_Cat et sera affichée dans Gauge Composer // Var 0521, name B1Type { IF &B1Type = 0 { &B1Cat = 0 } ELSE { &B_Num = 1 &B_Type = &B1Type CALL &B_Class, &B_Num &B1Cat = &B_Cat } } Var 0522, name B2Type { IF &B2Type = 0 { &B2Cat = 0 } ELSE { &B_Num = 2 &B_Type = &B2Type CALL &B_Class, &B_Num &B2Cat = &B_Cat } } Var 0523, name B3Type { IF &B3Type = 0 { &B3Cat = 0 } ELSE { &B_Num = 3 &B_Type = &B3Type CALL &B_Class, &B_Num &B3Cat = &B_Cat } } Var 0524, name B4Type { IF &B4Type = 0 { &B4Cat = 0 } ELSE { &B_Num = 4 &B_Type = &B4Type CALL &B_Class, &B_Num &B4Cat = &B_Cat } } Var 0525, name B5Type { IF &B5Type = 0 { &B5Cat = 0 } ELSE { &B_Num = 5 &B_Type = &B5Type CALL &B_Class, &B_Num &B5Cat = &B_Cat } } Var 0526, name B6Type { IF &B6Type = 0 { &B6Cat = 0 } ELSE { &B_Num = 6 &B_Type = &B6Type CALL &B_Class, &B_Num &B6Cat = &B_Cat } } Var 0527, name B7Type { IF &B7Type = 0 { &B7Cat = 0 } ELSE { &B_Num = 7 &B_Type = &B7Type CALL &B_Class, &B_Num &B7Cat = &B_Cat } } Var 0528, name B8Type { IF &B8Type = 0 { &B8Cat = 0 } ELSE { &B_Num = 8 &B_Type = &B8Type CALL &B_Class, &B_Num &B8Cat = &B_Cat } } Var 0529, name B9Type { IF &B9Type = 0 { &B9Cat = 0 } ELSE { &B_Num = 9 &B_Type = &B9Type CALL &B_Class, &B_Num &B9Cat = &B_Cat } } Var 0530, name B10Type { IF &B10Type = 0 { &B10Cat = 0 } ELSE { &B_Num = 10 &B_Type = &B10Type CALL &B_Class, &B_Num &B10Cat = &B_Cat } } Var 0531, name B11Type { IF &B11Type = 0 { &B11Cat = 0 } ELSE { &B_Num = 11 &B_Type = &B11Type CALL &B_Class, &B_Num &B11Cat = &B_Cat } } Var 0532, name B12Type { IF &B12Type = 0 { &B12Cat = 0 } ELSE { &B_Num = 12 &B_Type = &B12Type CALL &B_Class, &B_Num &B12Cat = &B_Cat } } Var 0541, name B1Qty Var 0542, name B2Qty Var 0543, name B3Qty Var 0544, name B4Qty Var 0545, name B5Qty Var 0546, name B6Qty Var 0547, name B7Qty Var 0548, name B8Qty Var 0549, name B9Qty Var 0550, name B10Qty Var 0551, name B11Qty Var 0552, name B12Qty Var 0560, name Jett_Arme, Value 1 // Jettison Armement { &LOCKONCMD = 82 &Scan_Panel = &Scan_Panel * -1 } Var 0561, name SW_LA, Value 1 // Override Shoot { &LOCKONCMD = 349 } // Commande de scan du panel weapon // utilisé quand jettison because bug jett fueltank qui ne met pas l'emport à zero // Var 0565, name Scan_Panel, value 1 { &SPECIALCMD = DELAY 501 5 &SPECIALCMD = DELAY 502 10 &SPECIALCMD = DELAY 503 15 &SPECIALCMD = DELAY 504 20 &SPECIALCMD = DELAY 505 25 &SPECIALCMD = DELAY 506 30 &SPECIALCMD = DELAY 507 35 &SPECIALCMD = DELAY 508 40 &SPECIALCMD = DELAY 509 45 &SPECIALCMD = DELAY 510 50 &SPECIALCMD = DELAY 511 55 &SPECIALCMD = DELAY 512 60 } // Section de classification de l'armement // // Category of weapon 1=Fox1 , 2=Fox2, 3=Fox3, 4=Roquette, 5=Missile, 6=BalBmb, 7=ClusterBmb, 8=ChuteBmb, 9=ExplosBmb, 10=GuidedBmb, 99=Tank Var 0571, name B1Cat { CALL &Check_Tank, &B1Cat } Var 0572, name B2Cat { CALL &Check_Tank, &B2Cat } Var 0573, name B3Cat { CALL &Check_Tank, &B3Cat } Var 0574, name B4Cat { CALL &Check_Tank, &B4Cat } Var 0575, name B5Cat { CALL &Check_Tank, &B5Cat } Var 0576, name B6Cat { CALL &Check_Tank, &B6Cat } Var 0577, name B7Cat { CALL &Check_Tank, &B7Cat } Var 0578, name B8Cat { CALL &Check_Tank, &B8Cat } Var 0579, name B9Cat { CALL &Check_Tank, &B9Cat } Var 0580, name B10Cat { CALL &Check_Tank, &B10Cat } Var 0581, name B11Cat { CALL &Check_Tank, &B11Cat } Var 0582, name B12Cat { CALL &Check_Tank, &B12Cat } Var 0585, name B_Num // numéro du pylone examiné Var 0586, name B_Type // type d'arme sur le pylone scanné Var 0587, name B_Cat // catégorie de l'arme sur le pylone scanné Var 0590, name B_Class, Link SUBRUTINE // Subroutine de classification d'armement (Type BxType >> Catégorie BxCat) { &B_Cat = 0 if &B_Type = 44713 { &B_Cat = 1 } if &B_Type = 44714 { &B_Cat = 1 } if &B_Type = 44717 { &B_Cat = 1 } if &B_Type = 44721 { &B_Cat = 1 } if &B_Type = 44710 { &B_Cat = 2 } if &B_Type = 44715 { &B_Cat = 2 } if &B_Type = 44716 { &B_Cat = 2 } if &B_Type = 44718 { &B_Cat = 2 } if &B_Type = 44722 { &B_Cat = 2 } if &B_Type = 443250 { &B_Cat = 2 } if &B_Type = 44719 { &B_Cat = 3 } if &B_Type = 44724 { &B_Cat = 3 } if &B_Type = 47321 { &B_Cat = 4 } if &B_Type = 47326 { &B_Cat = 4 } if &B_Type = 47329 { &B_Cat = 4 } if &B_Type = 473268 { &B_Cat = 4 } if &B_Type = 473334 { &B_Cat = 4 } if &B_Type = 44875 { &B_Cat = 5 } if &B_Type = 4432107 { &B_Cat = 5 } if &B_Type = 4432108 { &B_Cat = 5 } if &B_Type = 4432109 { &B_Cat = 5 } if &B_Type = 4596 { &B_Cat = 6 } if &B_Type = 4597 { &B_Cat = 6 } if &B_Type = 45931 { &B_Cat = 6 } if &B_Type = 45954 { &B_Cat = 6 } if &B_Type = 453294 { &B_Cat = 7 } if &B_Type = 453295 { &B_Cat = 7 } if &B_Type = 453818 { &B_Cat = 7 } if &B_Type = 453820 { &B_Cat = 7 } if &B_Type = 453823 { &B_Cat = 7 } if &B_Type = 453835 { &B_Cat = 7 } if &B_Type = 453845 { &B_Cat = 7 } if &B_Type = 45958 { &B_Cat = 8 } if &B_Type = 45372 { &B_Cat = 8 } if &B_Type = 45373 { &B_Cat = 8 } if &B_Type = 45374 { &B_Cat = 8 } if &B_Type = 454016 { &B_Cat = 9 } if &B_Type = 454129 { &B_Cat = 9 } if &B_Type = 453611 { &B_Cat = 10 } if &B_Type = 453612 { &B_Cat = 10 } if &B_Type = 453638 { &B_Cat = 10 } if &B_Type = 473269 { &B_Cat = 11 } if &B_Type = 134310 { &B_Cat = 99 } if &B_Type = 134317 { &B_Cat = 99 } if &B_Type = 134353 { &B_Cat = 99 } if &B_Type = 134354 { &B_Cat = 99 } } Var 0595, name Fuel_Tank_nb // Nombre de fuel tank Var 0596, name Check_Tank, Link SUBRUTINE { &Fuel_Tank_nb = 0 if &B1Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } if &B2Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } if &B3Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } if &B4Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } if &B5Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } if &B6Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } if &B7Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } if &B8Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } if &B9Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } if &B10Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } if &B11Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } if &B12Cat = 99 { &Fuel_Tank_nb = &Fuel_Tank_nb + 1 } } // // Module d'Alarmes Perso ---------------------------------------------------------------------------------------- // Var 0722, name IAS_Low_Led // Low speed alarm (M-29) 250km/h Var 0725, name QFE_Low_Led // Low altitude alarm (20m) Var 0726, name AoA_High_Led // High AoA alarm (>10°) Var 0728, name Vario_Low_Led // High descent alarm for landing (-10 m/s) Var 0760, name TankOS_LED // Tank Overspeed Var 0761, name TankOS_Sub, Link SUBRUTINE { IF &Fuel_Tank_nb > 0 { IF &Mach_nbr > 9 { &TankOS_LED = 1 // Alarme OverSpeed si Bidon et Vitesse sup } ELSE { &TankOS_LED = 0 } } ELSE { &TankOS_LED = 0 } } // // Module d'Alarmes ---------------------------------------------------------------------------------------- // Var 0800, name R_TailPlan // panne aile droite Var 0801, name EOS_fail // Panne EOS, TV Var 0802, name ECM_fail // panne ECM Var 0803, name R_FlapPlan // panne aileron Droit Var 0804, name MW // Master Warning Var 0805, name R_engfail // Panne Moteur Droit Var 0806, name cann_fail // Panne Canon Var 0807, name MLWS_fail // Panne MLWS Var 0808, name ACS_fail // Panne ACS Var 0809, name Radar_fail // Panne Radar Var 0810, name Helmet_fail // Panne Casque Var 0811, name Hud_fail // Panne HUD Var 0812, name L_mainpomp // Panne Pompe Principale Gauche Var 0813, name R_Wingpomp // Panne Pompe aile Droite Var 0814, name L_Wingpomp // Panne Pompe aile Gauche Var 0815, name MDF_fail // Panne MDF Var 0816, name RWS_fail // Panne RWS Var 0817, name Gear_fail // Panne Train Var 0818, name Hydro_fail // Panne Hydraulique Var 0819, name Autopil_fail // Panne Auto_pilote Var 0820, name FueltankD // Panne Reservoir Carburant Var 0821, name L_FlapPlan // Panne aileron Gauche Var 0822, name Canopyop // Detection Ouverture Canopy Var 0823, name R_mainpomp // Panne Pompe Principale Droite Var 0824, name Stallsig // Indication décrochage Var 0825, name L_engfail // Panne Moteur Gauche Var 0826, name autopil_on // Autopilote On Var 0827, name L_tailPlan // Panne aile Gauche Var 0830, name MCPS, Link SUBRUTINE // Gestion du MCP { &EOS_fail = TESTBIT &MCPState ,1 &ECM_fail = TESTBIT &MCPState ,2 &MW = TESTBIT &MCPState ,4 &R_engfail = TESTBIT &MCPState ,5 &Radar_fail = TESTBIT &MCPState ,9 &Hydro_fail = TESTBIT &MCPState ,18 &Autopil_fail = TESTBIT &MCPState ,19 &Canopyop = TESTBIT &MCPState ,20 &L_engfail = TESTBIT &MCPState ,25 &autopil_on = TESTBIT &MCPState ,26 } // // Module du Pilote Automatique ---------------------------------------------------------------------------------------- // Var 0870, name Baro_Hold // Auto_alti_baro Var 0871, name Radio_Hold // Auto_alti_radio Var 0872, name B_Roll_Hold // Auto_baro_roll Var 0873, name Horizon_Hold // Auto_horizon Var 0874, name Pitch_B_Hold // Auto_pitch_bank Var 0879, name Route_Hold // Auto_route Var 0880, name ResM, Link SUBRUTINE // Gestion du ResMode { &Route_Hold = TESTBIT &ResMode ,19 &Baro_Hold = TESTBIT &ResMode ,20 &Radio_Hold = TESTBIT &ResMode ,21 &B_Roll_Hold = TESTBIT &ResMode ,22 &Horizon_Hold = TESTBIT &ResMode ,23 &Pitch_B_Hold = TESTBIT &ResMode ,24 } // // Switch de commandes ---------------------------------------------------------------------------------------- // Var 0900, name SW_Eject, Value 1 // Ejection { &LOCKONCMD = 83 &LOCKONCMD = 83 &LOCKONCMD = 83 } Var 0901, name SW_Canopy, Value 1 // Close Canopy { &LOCKONCMD = 71 } Var 0902, name SW_HudColor, Value 1 // Change Hud Color { &LOCKONCMD = 156 } Var 0903, name SW_LightInst, Value 1 // Eclairage Instrument panel { &LOCKONCMD = 300 } Var 0904, name SW_LightNav, Value 1 // Feu de nav { &LOCKONCMD = 175 } Var 0905, name SW_LightGear, Value 1 // Feu de train { &LOCKONCMD = 328 } Var 0910, name SW_ResetWarn, Value 1 // Acquis Reset alarme { &LOCKONCMD = 144 } Var 0911, name SW_ResetTrim, Value 1 // Reset trim { &LOCKONCMD = 97 } Var 0912, name SW_3Vertes, Value 1 // Flaps Down + Gear Down { &LOCKONCMD = 431 &LOCKONCMD = 145 } Var 0915, name SW_Nav, Value 1 // Mode Navigation { &LOCKONCMD = 105 } Var 0920, name SW_BVR, Value 1 // Mode BVR { &LOCKONCMD = 106 } Var 0921, name SW_RadarOn, Value 1 // Radar On { &LOCKONCMD = 86 } Var 0922, name SW_RadarFre, Value 1 // Radar Fréquence (Hi, Med, ILV) { &LOCKONCMD = 394 } Var 0923, name SW_RadarMod, Value 1 // Radar Mode (TWS, RWS) { &LOCKONCMD = 285 } Var 0930, name SW_EOS, Value 1 // Radar Thermique { &LOCKONCMD = 87 } Var 0931, name SW_ECM, Value 1 // Electronic Contre Mesure { &LOCKONCMD = 136 } Var 0932, name SW_JAM, Value 1 // Electronic Contre Mesure { &LOCKONCMD = 391 } Var 0940, name SW_CanRoF, Value 1 // Canon rate of fire { &LOCKONCMD = 280 } Var 0941, name SW_RippleQ, Value 1 // Change ripple quantity { &LOCKONCMD = 281 } Var 0942, name SW_RippleI, Value 1 // Change ripple interval { &LOCKONCMD = 282 } Var 0943, name SW_RippleM, Value 1 // Change ripple interval down { &LOCKONCMD = 308 } Var 0944, name SW_MasterArm, Value 1 // Master Arm { &LOCKONCMD = 283 } Var 0945, name SW_RelMod, Value 1 // Release Mode { &LOCKONCMD = 284 } Var 0948, name SW_Laser, Value 1 // Release Mode { &LOCKONCMD = 392 } Var 0949, name SW_TV, Value 1 // Release Mode { &LOCKONCMD = 393 } Var 0953, name SW_Refuel, Value 1 // Release Mode { &LOCKONCMD = 155 } Var 0954, name SW_TOShip, Value 1 // Release Mode { &LOCKONCMD = 120 } Var 0955, name SW_Wings, Value 1 // Release Mode { &LOCKONCMD = 70 } Var 0956, name SW_Cross, Value 1 // Release Mode { &LOCKONCMD = 69 } // // // Module RADIO ; TS // Var 1000, name SW_TS, link KEYS // emulation clavier pour TS Var 1002, name SW_Chan, Value 0 // ecoute switch canal principal { // mise à jour de la valeur du chan-TS , pour affichage GC IF &SW_Chan > 0 { &TS_Chan = &SW_Chan &TS_SubChan = 0 } // Envoi de la commande TS // et remise à zero des interrupteurs IF &SW_Chan = 300 { &SW_TS = 50 &SW_TS = 0 &SW_Chan = 0 } IF &SW_Chan = 310 { &SW_TS = 51 &SW_TS = 0 &SW_Chan = 0 } IF &SW_Chan = 320 { &SW_TS = 52 &SW_TS = 0 &SW_Chan = 0 } IF &SW_Chan = 330 { &SW_TS = 53 &SW_TS = 0 &SW_Chan = 0 } IF &SW_Chan = 340 { &SW_TS = 54 &SW_TS = 0 &SW_Chan = 0 } IF &SW_Chan = 350 { &SW_TS = 55 &SW_TS = 0 &SW_Chan = 0 } IF &SW_Chan = 360 { &SW_TS = 56 &SW_TS = 0 &SW_Chan = 0 } IF &SW_Chan = 390 { &SW_TS = 59 &SW_TS = 0 &SW_Chan = 0 } } Var 1003, name SW_SubChan, Value 1 // ecoute switch sous canal { // mise à jour de la valeur du sous-chan TS , pour affichage GC IF &SW_SubChan < 9 { &TS_SubChan = &SW_SubChan } // Envoi de la commande TS // et remise à zero des interrupteurs IF &SW_SubChan = 1 { &SW_TS = 61 &SW_TS = 0 &SW_SubChan = 9 } IF &SW_SubChan = 2 { &SW_TS = 62 &SW_TS = 0 &SW_SubChan = 9 } IF &SW_SubChan = 3 { &SW_TS = 63 &SW_TS = 0 &SW_SubChan = 9 } IF &SW_SubChan = 4 { &SW_TS = 64 &SW_TS = 0 &SW_SubChan = 9 } } Var 1005, name TS_Chan // valeur canal principal Var 1006, name TS_SubChan // valeur canal decimal // // Module de saisie du calculateur de vol // Var 1050, name key, value 10 { if &key < 10 { &digit3 = &digit2 &digit2 = &digit1 &digit1 = &key } &key = 10 } Var 1051, name digit1 { L0 = &digit3 * 100 L1 = &digit2 * 10 L2 = L0 + L1 &Sum_Input = L2 + &digit1 } Var 1052, name digit2 Var 1053, name digit3 Var 1054, name Sum_Input, value 0 Var 1055, name enter_key, value 10 { if &enter_key = 0 { &digit3 = 0 &digit2 = 0 &digit1 = 0 } if &enter_key = 1 { &Bull1_deg = &Sum_Input } if &enter_key = 2 { &Bull1_cm = &Sum_Input * 100000 } if &enter_key = 3 { &Bull2_deg = &Sum_Input } if &enter_key = 4 { &Bull2_cm = &Sum_Input * 100000 } if &enter_key = 5 { &Bull3_deg = &Sum_Input } if &enter_key = 6 { &Bull3_cm = &Sum_Input * 100000 } if &enter_key = 7 // entrée instantanée de la position actuelle dans bulls1 { &Bull1_cm = &WP_Distance &Bull1_deg = &Bulls_deg } if &enter_key = 8 // entrée instantanée de la position actuelle dans bulls2 { &Bull2_cm = &WP_Distance &Bull2_deg = &Bulls_deg } if &enter_key = 9 // entrée instantanée de la position actuelle dans bulls3 { &Bull3_cm = &WP_Distance &Bull3_deg = &Bulls_deg } &enter_key = 10 } // // Module Calcul de route vers position Bullseye // // // Valeurs calculée à partir WP_Distance (v0055) et WP_rad (v0038) // Mettre l'appel de subroutine à jour dans v055 et v38 Var 1100, name WP_x // composante Nord de la position Waypoint { CALL &Bull_DCalc CALL &Bull_CCalc } Var 1101, name WP_y // composante Est de la position waypoint { CALL &Bull_DCalc CALL &Bull_CCalc } Var 1105, name WP_calc, Link SUBRUTINE { L0 = &WP_rad / 100 L1 = Cos L0 L2 = Sin L0 &WP_x = &WP_Distance * L1 &WP_y = &WP_Distance * L2 } // // Coordonnées de l'objectif n°1 coordonnée Bullseye Var 1110, name Bull1_deg // relèvement , input de Gauge Composer { CALL &Bull_PCalc CALL &Bull_DCalc CALL &Bull_CCalc } Var 1111, name Bull1_cm // distance , input de GC { CALL &Bull_PCalc CALL &Bull_DCalc CALL &Bull_CCalc } Var 1113, name Bull1_x // composante Nord Var 1114, name Bull1_y // composante Est Var 1115, name Distance1_cm // distance avion Objectif 1 // ___________________________________________________________ // Coordonnées de l'objectif n°2 coordonnée Bullseye Var 1120, name Bull2_deg // relèvement , input de Gauge Composer { CALL &Bull_PCalc CALL &Bull_DCalc CALL &Bull_CCalc } Var 1121, name Bull2_cm // distance , input de GC { CALL &Bull_PCalc CALL &Bull_DCalc CALL &Bull_CCalc } Var 1123, name Bull2_x // composante Nord Var 1124, name Bull2_y // composante Est Var 1125, name Distance2_cm // distance avion Objectif 2 // ___________________________________________________________ // Coordonnées de l'objectif n°3 coordonnée Bullseye Var 1130, name Bull3_deg // relèvement , input de Gauge Composer { CALL &Bull_PCalc CALL &Bull_DCalc CALL &Bull_CCalc } Var 1131, name Bull3_cm // distance , input de GC { CALL &Bull_PCalc CALL &Bull_DCalc CALL &Bull_CCalc } Var 1133, name Bull3_x // composante Nord Var 1134, name Bull3_y // composante Est Var 1135, name Distance3_cm // distance avion Objectif 3 // ___________________________________________________________ // // Subroutine de calcul des Latitude/Longitude >> Objectifs Var 1137, name Bull_PCalc, Link SUBRUTINE { L0 = &Bull1_deg / 57.32 L1 = Cos L0 L2 = Sin L0 &Bull1_x = &Bull1_cm * L1 &Bull1_y = &Bull1_cm * L2 L0 = &Bull2_deg / 57.32 L1 = Cos L0 L2 = Sin L0 &Bull2_x = &Bull2_cm * L1 &Bull2_y = &Bull2_cm * L2 L0 = &Bull3_deg / 57.32 L1 = Cos L0 L2 = Sin L0 &Bull3_x = &Bull3_cm * L1 &Bull3_y = &Bull3_cm * L2 } // ___________________________________________________________ // // Subroutine de calcul de distance Avion >> Objectifs Var 1138, name Bull_DCalc, Link SUBRUTINE { L0 = &Bull1_x + &WP_x L1 = &Bull1_y + &WP_y L0 = POWER L0 2 L1 = POWER L1 2 L2 = L0 + L1 &Distance1_cm = POWER L2 0.5 L0 = &Bull2_x + &WP_x L1 = &Bull2_y + &WP_y L0 = POWER L0 2 L1 = POWER L1 2 L2 = L0 + L1 &Distance2_cm = POWER L2 0.5 L0 = &Bull3_x + &WP_x L1 = &Bull3_y + &WP_y L0 = POWER L0 2 L1 = POWER L1 2 L2 = L0 + L1 &Distance3_cm = POWER L2 0.5 if &Obj_Selec = 1 { &Bull_x = &Bull1_x &Bull_y = &Bull1_y } if &Obj_Selec = 2 { &Bull_x = &Bull2_x &Bull_y = &Bull2_y } if &Obj_Selec = 3 { &Bull_x = &Bull3_x &Bull_y = &Bull3_y } } // ___________________________________________________________ // // Route vers l'objectif choisi Var 1140, name Obj_Selec, value 1 // numero de l'objectif selectionné { CALL &Bull_DCalc CALL &Bull_CCalc } Var 1141, name Bull_x // composante Nord du bulls Var 1142, name Bull_y // composante Est du bulls Var 1143, name Route_x // composante Nord de la route Var 1144, name Route_y // composante Est de la route Var 1145, name Obj_deg // Cap en Degree vers l'Objectif Var 1146, name Obj_rad // Cap en Radian (output from Bull_CCalc) { L0 = &Obj_rad / 628 &Obj_deg = L0 * 360 } // Variables pour la subroutine de calcul de cap // Var 1148, name Cadran_cap // ___________________________________________________________ // // Subroutine du cap de la route Avion >> Objectifs Var 1150, name Bull_CCalc, Link SUBRUTINE { if &Obj_Selec > 0 { &Route_x = &Bull_x + &WP_x &Route_y = &Bull_y + &WP_y // Pour eviter denominateur = 0 dans calcul de tangente if &Route_x = 0 { if &Route_y > 0 { &Route_rad = 157 } else { &Route_rad = 471 } } // // Calcul du cadran cardinal // L0 = Abs &Route_x L1 = Abs &Route_y if L0 > L1 { if &Route_x > 0 { &Cadran_cap = 1 } else { &Cadran_cap = 3 } } else { if &Route_y > 0 { &Cadran_cap = 2 } else { &Cadran_cap = 4 } } // // Calcul du cap pour chaque cadran // // Cap : 315 à 045 if &Cadran_cap = 1 { L0 = &Route_y / &Route_x L1 = Power L0 2 // Calcul de l'ArcTangente par atan(x) = x /(1 + 0.28x²) L1 = L1 * 0.28 L1 = L1 + 1 L2 = L0 / L1 L2 = L2 * 100 L2 = L2 + 628 // Modulo pour les caps négatifs autour du 000 &Obj_rad = Mod L2 628 } // Cap : 045 à 135 if &Cadran_cap = 2 { L0 = &Route_x / &Route_y L1 = Power L0 2 // Calcul de l'ArcTangente par atan(x) = x /(1 + 0.28x²) L1 = L1 * 0.28 L1 = L1 + 1 L2 = L0 / L1 L2 = 1.57 - L2 &Obj_rad = L2 * 100 } // Cap : 135 à 225 if &Cadran_cap = 3 { L0 = &Route_y / &Route_x L1 = Power L0 2 // Calcul de l'ArcTangente par atan(x) = x /(1 + 0.28x²) L1 = L1 * 0.28 L1 = L1 + 1 L2 = L0 / L1 L2 = 3.14 + L2 &Obj_rad = L2 * 100 } // Cap : 225 à 315 if &Cadran_cap = 4 { L0 = &Route_x / &Route_y L1 = Power L0 2 // Calcul de l'ArcTangente par atan(x) = x /(1 + 0.28x²) L1 = L1 * 0.28 L1 = L1 + 1 L2 = L0 / L1 L2 = 4.71 - L2 &Obj_rad = L2 * 100 } } }