Re: Testeur SIOC Level-D

Posté:
Sam 14 Mai 2011 13:33
de jerealexcopa
Voila le code que j'ai récupéré, j'ai ensuite modifié les variable et le nom des entrées sorties. Cependant j'ai une question pour les affichages (dsiplay) je ne comprend pas comment cela fonctionne comme dire combien d'afficheur 7 segments pour l'alltitude et pour le VS.... En gros quel réglages il faut mettre et ou?
voila" mon" code issue de celui du MCP 737:
Var 2000, Value 0
{
V0601 = 2 // COURSE
V0603 = 1 // HDG
V0604 = 10 // ALT
V0718 = 1 // 00 DEL ALT (el 00 es fijo)
V2250 = SETBIT 23 // Pone MODO IAS
V2257 = V2104 // IAS leidas en IAS temporal
V2258 = V2105 // MATH leidas en MATH temporal
V0602 = V2104 // Pone por IAS en display
}
Var 2101, Link FSUIPC_IN, Offset $04E6, Length 2 // VS de entrada
{
L0 = V2101 // En L0 el valor leido
C0 = TESTBIT V2101 ,15 // Comprueba si es Negativo
IF C0
{
V2800 = L0 - 65536 // Si es negativo binario pasa a negativo d
}
ELSE
{
V2800 = L0 // No es negativo, deja igual dejando siemp
}
CALL V2900 // Pone valor en el display
}
Var 2102, Link FSUIPC_IN, Offset $051C, Length 2 // Indicadores MCP
{
C0 = TESTBIT V2102 ,0 // Está apagado el Display del VS ?
IF C0 // SI, entonces
{
V0705 = 0 // Quita el 00 final del display
V0600 = -999999 // Apaga resto de digitos
V0704 = 0 // Me aseguro de apagar el signo -
}
ELSE // NO, entonces
{
V0705 = 1 // Enciende los 00 del display
CALL V2900 // Pone el V/S en el display
}
}
Var 2103, Link FSUIPC_IN, Offset $04F0, Length 2 // LUCES del MCP
{
V0702 = TESTBIT V2103 ,2 // V/S
V0701 = TESTBIT V2103 ,12 // F/D
V0700 = TESTBIT V2103 ,11 // A/T
V0706 = TESTBIT V2103 ,9 // SPEED
V0707 = TESTBIT V2103 ,10 // N1
V0708 = TESTBIT V2103 ,3 // ALT HOLD
V0709 = TESTBIT V2103 ,4 // APP
V0710 = TESTBIT V2103 ,5 // VORLOC
V0711 = TESTBIT V2103 ,6 // LNAV
V0712 = TESTBIT V2103 ,7 // HDG
V0713 = TESTBIT V2103 ,8 // LVL CHG
V0714 = TESTBIT V2103 ,14 // VNAV
V0715 = TESTBIT V2103 ,0 // AP1
V0716 = TESTBIT V2103 ,1 // AP2
C0 = TESTBIT V2103 ,15 // Modo MATH o IAS ?
IF C0 // MATH MODE
{
V2258 = V2105 // Cargo valor en temporal
V0717 = 1 // Enciendo el punto decimal
CALL V2901 // Display del valor
}
ELSE // IAS MODE
{
V2257 = V2104 // Cargo valor en temporal
V0717 = 0 // Apago el punto decimal
CALL V2901 // Display del valor
}
}
Var 2104, Link FSUIPC_IN, Offset $04E0, Length 2 // IAS
{
CALL V2901 // Display del valor
}
Var 2105, Link FSUIPC_IN, Offset $04E8, Length 2 // MATH
{
CALL V2901 // Display del valor
}
Var 2250, Link FSUIPC_OUT, Offset $5410, Length 4 // Pulsadores-I PM
Var 2251, Link FSUIPC_OUT, Offset $5414, Length 4 // Pulsadores-II PM
Var 2252, Link FSUIPC_OUT, Offset $540C, Length 2 // V/S de salida
Var 2253, Link FSUIPC_OUT, Offset $5414, Length 4 // Botones MCP
Var 2254, Link FSUIPC_OUT, Offset $0C4E, Length 2 // COURSE
Var 2255, Link FSUIPC_OUT, Offset $5408, Length 2 // HDG
Var 2256, Link FSUIPC_OUT, Offset $540A, Length 2 // ALT
Var 2257, Link FSUIPC_OUT, Offset $5406, Length 2 // IAS
Var 2258, Link FSUIPC_OUT, Offset $540E, Length 2 // MATH
Var 0400, Link IOCARD_SW, Input 1 // Interrupteur A/T
{
IF V0400 = 1 // Si está encendido
{
V2250 = TOGGLE 19 // Hago toggle del bit 19
}
ELSE
{
V2250 = TOGGLE 20 // Si apagado, toggle del bit 20
}
}
Var 0401, Link IOCARD_SW, Input 2 // Interrupteur F/D
{
IF V0401 = 1
{
V2251 = TOGGLE 5
}
ELSE
{
V2251 = TOGGLE 6
}
}
Var 0403, Link IOCARD_SW, Input 3, Type P // Bouton V/S
{
V2253 = CHANGEBIT 11 ,V0403 // Si pulsador encendido, bit 11 a 1, si ap
}
Var 0404, Link IOCARD_SW, Input 4, Type P // Bouton SPEED
{
V2250 = CHANGEBIT 22 ,V0404
}
Var 0405, Link IOCARD_SW, Input 5, Type P // Bouton N1
{
V2250 = CHANGEBIT 21 ,V0405
}
Var 0406, Link IOCARD_SW, Input 6, Type P // Bouton LVL CHG
{
V2250 = CHANGEBIT 24 ,V0406
}
Var 0407, Link IOCARD_SW, Input 7, Type P // Bouton HDG
{
V2250 = CHANGEBIT 25 ,V0407
}
Var 0408, Link IOCARD_SW, Input 8, Type P // Bouton ALT HOLD
{
V2250 = CHANGEBIT 30 ,V0408
}
Var 0409, Link IOCARD_SW, Input 9, Type P // Bouton APP
{
V2250 = CHANGEBIT 29 ,V0409
}
Var 0410, Link IOCARD_SW, Input 10, Type P // Bouton VORLOC
{
V2250 = CHANGEBIT 28 ,V0410
}
Var 0411, Link IOCARD_SW, Input 11, Type P // Bouton LNAV
{
V2250 = CHANGEBIT 27 ,V0411
}
Var 0412, Link IOCARD_SW, Input 12, Type P // Bouton VNAV
{
V2250 = CHANGEBIT 26 ,V0412
}
Var 0413, Link IOCARD_SW, Input 13, Type P // Bouton DISENGAGE
{
IF V0413 = 0
{
V2253 = TOGGLE 8 // Si apago pongo el bit a 0
}
ELSE
{
V2253 = TOGGLE 9 // Si está encendido, pongo el BIT a 1
}
}
Var 0414, Link IOCARD_SW, Input 14, Type P // Bouton AP1
{
V2253 = CHANGEBIT 0 ,V0414
}
Var 0415, Link IOCARD_SW, Input 15, Type P // Bouton AP2
{
V2253 = CHANGEBIT 1 ,V0415
}
Var 0416, Link IOCARD_SW, Input 16, Type P // Bouton MATH
{
V2250 = CHANGEBIT 23 ,V0416
}
Var 0500, Link IOCARD_ENCODER, Input 1, Aceleration 6 // Encodeur VS
{
L0 = V0500 * 100 // Incrementa de 100 en 100
V2800 = ROTATE -9000 ,9000 ,L0 // Suma o resta del valor temporal de V/S
IF V2800 < 0 // Si temporal V/S es negativo
{
V2252 = V2800 + 65536 // pasa a binario negativo.
}
ELSE
{
V2252 = V2800 // Si no, deja igual pasando el valor al PM
}
}
Var 0501, Link IOCARD_ENCODER, Input 2, Aceleration 6 // Encodeur COURSE
{
V0601 = ROTATE 0 ,359 ,V2401 // Roto el valor del COURSE
}
Var 0502, Link IOCARD_ENCODER, Input 3, Aceleration 6 // Encodeur IAS Y MATH
{
C0 = TESTBIT V2103 ,15 // Indicador MATH o IAS ?
IF C0 // MATH MODE
{
V2258 = LIMIT 25 ,95 ,V2402 // Inc o decremento el valor del MATH
}
ELSE
{
V2257 = LIMIT 0 ,340 ,V2402 // Inc o decremento el valor del IAS
}
}
Var 0503, Link IOCARD_ENCODER, Input 4, Aceleration 6 // Encodeur HDG
{
V0603 = ROTATE 0 ,359 ,V2403
}
Var 0504, Link IOCARD_ENCODER, Input 5, Aceleration 6 // Encodeur ALT
{
V0604 = LIMIT 0 ,500 ,V2404
}
Var 0600, Link IOCARD_DISPLAY, Digit 12, Numbers 2 // affichage VS
Var 0601, Link IOCARD_DISPLAY, Digit 0, Numbers 3 // affichage COURSE
{
V2254 = V0601 // Pasa el valor al PM
}
Var 0602, Link IOCARD_DISPLAY, Digit 3, Numbers 3 // affichage IAS Y MATH
Var 0603, Link IOCARD_DISPLAY, Digit 6, Numbers 3 // affichage HEADING
{
V2255 = V0603 // Pasa el valor al PM
}
Var 0604, Link IOCARD_DISPLAY, Digit 9, Numbers 3 // Affichage ALT
{
V2256 = V0604 // Pasa el valor al PM
}
Var 0700, Link IOCARD_OUT, Output 1 // Led A/T
Var 0701, Link IOCARD_OUT, Output 2 // Led F/D
Var 0702, Link IOCARD_OUT, Output 3 // Led del boton V/S
Var 0704, Link IOCARD_OUT, Output 4 // Signo - del display V/S
Var 0705, Link IOCARD_OUT, Output 5 // 00 del VS
Var 0706, Link IOCARD_OUT, Output 6 // Led SPEED
Var 0707, Link IOCARD_OUT, Output 7 // Led N1
Var 0708, Link IOCARD_OUT, Output 8 // Led ALT HOLD
Var 0709, Link IOCARD_OUT, Output 9 // Led APP
Var 0710, Link IOCARD_OUT, Output 10 // Led VORLOC
Var 0711, Link IOCARD_OUT, Output 11 // Led LNAV
Var 0712, Link IOCARD_OUT, Output 12 // Led HDG
Var 0713, Link IOCARD_OUT, Output 13 // Led LVL CHG
Var 0714, Link IOCARD_OUT, Output 14 // Led VNAV
Var 0715, Link IOCARD_OUT, Output 15 // Led AP1
Var 0716, Link IOCARD_OUT, Output 16 // Led AP2
Var 0717, Link IOCARD_OUT, Output 17 // Led . DECIMAL
Var 0718, Link IOCARD_OUT, Output 18 // 00 del ALT
Var 2800 // Valor temporal del V/S
Var 2900, Link SUBRUTINE // Pinta V/S
{
C0 = TESTBIT V2102 ,0 // Comprueba si deben de estar apagados
C0 = NOT C0
IF C0 // Sólo en el caso de estar encendidos
{
IF V2800 < 0 // Si V/S es negativo, pasa a positivo
{
L0 = ABS V2800
V0704 = 1 // Enciendo el signo -
}
ELSE
{
V0704 = 0 // Apago el signo -
L0 = V2800
}
V0600 = L0 / 100 // Manda el valor ajustado de V/S a display
}
}
Var 2901, Link SUBRUTINE // Pinta IAS / MATH
{
C0 = TESTBIT V2103 ,15 // Modo MATH o IAS ?
IF C0 // MATH MODE
{
V0602 = V2105 // Pone valor MATH en el display
}
ELSE
{
V0602 = V2104 // Pone valor IAS en el display
}
}
Merci et bon vols