Code SIOC engines indicators pour T44 A et autre bi

Questions de programmation / Offset FSUIPC et IOCP

Code SIOC engines indicators pour T44 A et autre bi

Messagede olivier64 » Jeu 8 Mar 2012 18:47

Bonjour,

Ci-dessous le code SIOC que je vais utiliser pour le T44-A.
En espérant que cela puisse aider le plus grand nombre.

Olivier



********************************************************
* INSTRUCTIONS
********************************************************


--> Déclarer dans SIOC.INI les cartes USB Servos comme suit:
USBServos=1,xx
USBServos=2,yy
USBServos=3,zz

xx, yy, zz sont les numéros USB donnés par Windows (c'est le numéro "Device = ..." dans la fenêtre SIOC "Devices")

--> Pour affiner la rotation des servos (tour complet de cadran, 270°, 90°...) change le multiplicateur appliqué à L0
(exemple : L0 = &FS_ENG1_ITT * 0.04)


--> Brancher les servos en respectant les variables 4001-4014 (ex la gauge ITT engine #1 se branche sur la
première broche de la première carte USB Servo; la gauge Oil Pressure de l'engine #2 se branche sur la deuxième broche de
la troisième carte USB Servos)


--> Inverser les fils de couleurs de chaque servo (rouge/jaune ou rouge/blanc)...c'est une contrainte des cartes opencockpit

--> alimenter les cartes USB Servos avec du +5V


********************************************************
* CODE SIOC
********************************************************


Var 4001, name SERV_ENG1_ITT, Link USB_SERVOS, Device 1, Output 1, PosL 0, PosC 512, PosR 1023

Var 4002, name SERV_ENG2_ITT, Link USB_SERVOS, Device 1, Output 2, PosL 0, PosC 512, PosR 1023

Var 4003, name SERV_ENG1_TOR, Link USB_SERVOS, Device 1, Output 3, PosL 0, PosC 512, PosR 1023

Var 4004, name SERV_ENG2_TOR, Link USB_SERVOS, Device 1, Output 4, PosL 0, PosC 512, PosR 1023

Var 4005, name SERV_ENG1_RPM, Link USB_SERVOS, Device 1, Output 5, PosL 0, PosC 512, PosR 1023

Var 4006, name SERV_ENG2_RPM, Link USB_SERVOS, Device 1, Output 6, PosL 0, PosC 512, PosR 1023

Var 4007, name SERV_ENG1_TURB, Link USB_SERVOS, Device 2, Output 1, PosL 0, PosC 512, PosR 1023

Var 4008, name SERV_ENG2_TURB, Link USB_SERVOS, Device 2, Output 2, PosL 0, PosC 512, PosR 1023

Var 4009, name SERV_ENG1_FF, Link USB_SERVOS, Device 2, Output 3, PosL 0, PosC 512, PosR 1023

Var 4010, name SERV_ENG2_FF, Link USB_SERVOS, Device 2, Output 4, PosL 0, PosC 512, PosR 1023

Var 4011, name SERV_ENG1_OT, Link USB_SERVOS, Device 2, Output 5, PosL 0, PosC 512, PosR 1023

Var 4012, name SERV_ENG2_OT, Link USB_SERVOS, Device 2, Output 6, PosL 0, PosC 512, PosR 1023

Var 4013, name SERV_ENG1_OP, Link USB_SERVOS, Device 3, Output 1, PosL 0, PosC 512, PosR 1023

Var 4014, name SERV_ENG2_OP, Link USB_SERVOS, Device 3, Output 2, PosL 0, PosC 512, PosR 1023



Var 4100, name FS_ENG1_ITT, Link FSUIPC_INOUT, Offset $2038, Length 8
{
L0 = &FS_ENG1_ITT * 0.04 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG1_ITT = L1
}



Var 4101, name FS_ENG2_ITT, Link FSUIPC_INOUT, Offset $2138, Length 8
{
L0 = &FS_ENG2_ITT * 0.04 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG2_ITT = L1
}



Var 4102, name FS_ENG1_TOR, Link FSUIPC_INOUT, Offset $08F4, Length 4
{
L0 = &FS_ENG1_TOR * 0.0055 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG1_TOR = L1
}


Var 4103, name FS_ENG2_TOR, Link FSUIPC_INOUT, Offset $098C, Length 4
{
L0 = &FS_ENG2_TOR * 0.0055 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG2_TOR = L1
}


Var 4104, name FS_ENG1_RPM, Link FSUIPC_INOUT, Offset $0898, Length 2
{
L0 = &FS_ENG1_RPM * 0.0024 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG1_RPM = L1
}


Var 4105, name FS_ENG2_RPM, Link FSUIPC_INOUT, Offset $0930, Length 2
{
L0 = &FS_ENG2_RPM * 0.0024 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG2_RPM = L1
}


Var 4106, name FS_ENG1_TURB, Link FSUIPC_INOUT, Offset $2000, Length 8 // N1
{
L0 = &FS_ENG1_TURB * 0.9 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG1_TURB = L1
}


Var 4107, name FS_ENG2_TURB, Link FSUIPC_INOUT, Offset $2100, Length 8 // N1
{
L0 = &FS_ENG2_TURB * 0.9 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG2_TURB = L1
}



Var 4108, name FS_ENG1_FF, Link FSUIPC_INOUT, Offset $2020, Length 8 // FUEL FLOW
{
L0 = &FS_ENG1_FF * 0.1 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG1_FF = L1
}


Var 4109, name FS_ENG2_FF, Link FSUIPC_INOUT, Offset $2020, Length 8 // FUEL FLOW
{
L0 = &FS_ENG2_FF * 0.1 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG2_FF = L1
}


Var 4110, name FS_ENG1_OT, Link FSUIPC_INOUT, Offset $08B8, Length 2 // 16384 = 55 psi
{
L0 = &FS_ENG1_OT * 0.01 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG1_OT = L1
}

Var 4111, name FS_ENG2_OT, Link FSUIPC_INOUT, Offset $0950, Length 2 // 16384 = 55 psi
{
L0 = &FS_ENG2_OT * 0.01 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG2_OT = L1
}



Var 4112, name FS_ENG1_OP, Link FSUIPC_INOUT, Offset $08BA, Length 2 // 16384 = 55 psi
{
L0 = &FS_ENG1_OP * 0.002 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG1_OP = L1
}


Var 4113, name FS_ENG2_OP, Link FSUIPC_INOUT, Offset $0952, Length 2 // 16384 = 55 psi
{
L0 = &FS_ENG2_OP * 0.002 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
IF L1 > 1022 // UPPER LIMIT
{
L1 = 1022
}
IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}
&SERV_ENG2_OP = L1
}
olivier64
 
Messages: 1052
Inscription: 5/02/10
Localisation: Pau

Re: Code SIOC engines indicators pour T44 A et autre bi

Messagede stevelep » Jeu 8 Mar 2012 20:18

Merci le code.

2 petites remarques:

Pour ta limite basse, tu écris:

IF L1 < 1 // LOWER LIMIT
{
L1 = 100
}

normalement les 2 chiffres devraient être les mêmes ...

IF L1 < 100 // LOWER LIMIT
{
L1 = 100
}

Ensuite en SIOC pour faire des limites, il y a la fonction LIMIT qui te permet d'économiser une trentaine de lignes et de IF

Var 4100, name FS_ENG1_ITT, Link FSUIPC_INOUT, Offset $2038, Length 8
{
L0 = &FS_ENG1_ITT * 0.04 // 0 à 100%
L1 = L0 * 10.22 // 1022 positions
L1 = LIMIT 100 1022 0
&SERV_ENG1_ITT = L1
}
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse


Retourner vers Programmation Sioc





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 35 invités