Appel aux matheux : programmation IAS non linéaire

Questions de programmation / Offset FSUIPC et IOCP

Appel aux matheux : programmation IAS non linéaire

Messagede Colibri » Dim 28 Fév 2010 15:55

Bonjour tout le monde,

J'avance dans mon tableau de bord, j'en suis à L'IAS, avec le problème suivant : je me suis basé sur un modèle réel dont l'échelle est non linéaire. Mes capacités en math sont ce qu'elles sont ...
Comment on fait pour programmer çà ?
A titre indicatif, pour vous aider à m'aider gratgrat , voici quelques équivalences :
0 knots = 1023 sur le servo
50 kts = 922
80 kts = 785
110 kts = 618
140 kts = 451
170 kts = 299
200 kts (maximum) = 142

Merci d'avance !
Vincent
Avatar de l’utilisateur
Colibri
 
Messages: 1456
Inscription: 13/05/09
Localisation: Guérande (44)

Re: Appel aux matheux : programmation IAS non linéaire

Messagede JeeHell » Dim 28 Fév 2010 17:24

Le plus simple dans ton cas c'est de faire une approximation linéaire entre les valeurs que tu nous donne (par exemple, à toi de vérifier quelles valeurs sont les plus intéressantes), ce qui revient à assembler des segments de droites.

Rappel de maths:
équation d'une droite : y = a*x+b
avec:
a= (Y1-Y2)/(X1-X2)
b=Y1-a*X1

donc par exemple, si IAS est comprise entre 50 et 80kts, tu prends comme valeurs:
X1=50 Y1=922
X2=80 Y2=785

tu trouves a=-4.567 et b=1150.334

donc ta position du servo sera : (toujours pour IAS entre 50 et 80kts).
servo=IAS*(-4.567)+1150.334

bonne chance cligneoeil
JeeHell
 
Messages: 1853
Inscription: 18/05/09

Re: Appel aux matheux : programmation IAS non linéaire

Messagede algue14 » Dim 28 Fév 2010 17:30

Salut

Ben pourtant c'est linéaire entre 50 et 200 ( trace la courbe avec en X les vitesses et en Y les valeurs servos )
tu verra que c'est quasiment droit sur la portion 50KTS-200KTS par contre ça colle pas pour 0
Sinon jehell a tout dit rigolus
A+

Alain
Avatar de l’utilisateur
algue14
 
Messages: 1626
Inscription: 20/04/09
Localisation: Caen ; Normandie

Re: Appel aux matheux : programmation IAS non linéaire

Messagede Colibri » Dim 28 Fév 2010 17:59

Merci à vous deux. Tu as raison Algue, j'aurais dû tracer la droite.
Donc, en synthèse de vos infos à tous les deux :
- je portionne la zone non linéaire et j'y applique l'équation de JeeHell
- je laisse en linéaire pour le reste
J'ai bon ?
Vincent
Avatar de l’utilisateur
Colibri
 
Messages: 1456
Inscription: 13/05/09
Localisation: Guérande (44)

Re: Appel aux matheux : programmation IAS non linéaire

Messagede algue14 » Dim 28 Fév 2010 18:52

Colibri a écrit:J'ai bon ?


Je dirais bien oui ,mais j'avoue que ,pour l'instant, je suis plus à l'aise avec les maths qu'avec SIOC ecroulerire
Jehell t'apportera peut-être un avis plus éclairé.

A+
Alain

edit
L'équation de jehell est simplement celle d'une fonction linéaire de type y= Ax+B adaptée a tes valeurs.
Elle est valable pour chaque tronçon linéaire.
A+

Alain
Avatar de l’utilisateur
algue14
 
Messages: 1626
Inscription: 20/04/09
Localisation: Caen ; Normandie

Re: Appel aux matheux : programmation IAS non linéaire

Messagede Colibri » Dim 28 Fév 2010 19:07

t'as de la chance, moi c'est les maths ET SIOC qui me posent problème.
Je suis en train de me dire que si c'est uniquement la portion en dessous de 50 kts qui pose problème, je vais plutôt me simplifier la vie en redessinant une échelle linéaire. Je fais une reproduction réaliste et "inspirée de" mais je ne suis pas à cheval sur ce genre de détail au point de me compliquer la programmation...
Vincent
Avatar de l’utilisateur
Colibri
 
Messages: 1456
Inscription: 13/05/09
Localisation: Guérande (44)

Re: Appel aux matheux : programmation IAS non linéaire

Messagede JeeHell » Dim 28 Fév 2010 19:32

Niveau SIOC c'est pas beaucoup plus difficile, un petit exemple avec deux portions:

Code: Tout sélectionner

Var 0001, name Servo, Value 1023

Var 0002, name IAS, Link FSUIPC_INOUT, Offset $02BC, Length 4, Value 0
{
  L0 = &IAS / 128
  IF L0 < 50
  {
//rappel y=a*x+b
    &Servo = L0 * 2.02  // ici 2.02 correspond à -a
    &Servo = 1023 - &Servo  //ici 1023 correspond à b et on fait donc y =b - (-a*x)= a*x+b
  }
  ELSE
  {
    &Servo = L0 * 5.19
    &Servo = 1181.5 - &Servo
  }
}




Et avec quelques IF de plus tu peux rajouter autant d'intervalles linéarisés.
Bonne chance cligneoeil
JeeHell
 
Messages: 1853
Inscription: 18/05/09

Re: Appel aux matheux : programmation IAS non linéaire

Messagede airmontblanc » Dim 28 Fév 2010 19:53

Hein ? je commence à avoir mal au crane moi ....

dire que je vais bientôt recevoir une carte usb servos motors, j'ai déjà peur par avance cligneoeil

mais bon ... le forum est la grandsoleil , vous êtes trop forts,

je vais relire tout ça tranquillement ...



Amicalement
Rémy
Pour voir mon cockpit générique http://airmontblanc.monsite.orange.fr/

i7-2600K @ 5Ghz / Boitier CORSAIR 800D / ASUS P8P67 Pro 3.1 / G.SKILL Ripjaws 8GB DDR3-2133Mhz / ZOTAC GTX580 3GB AMP!2 / DD 2 x CRUCIAL M4 SSD (128/256GB) / SEASONIC 760W / WCool
airmontblanc
 
Messages: 103
Inscription: 19/04/09
Localisation: entre Genève et Chamonix Mont Blanc

Re: Appel aux matheux : programmation IAS non linéaire

Messagede Colibri » Dim 28 Fév 2010 20:12

Ok, JeeHell, merci pour l'exemple.
Il est instructif non seulement pour le calcul en question, mais également pour la syntaxe.
Petit question : dans ta variable 2, pourquoi tu mets le link FSUIPC en in/out ? IN devrait suffire dans le cas présent ? ou je me trompe ?

(qui se porte volontaire pour écrire un tuto exhaustif et un manuel pédagogique sur SIOC, hein ??? Qui, qui ??? yeuxhaut )
Vincent
Avatar de l’utilisateur
Colibri
 
Messages: 1456
Inscription: 13/05/09
Localisation: Guérande (44)

Re: Appel aux matheux : programmation IAS non linéaire

Messagede Colibri » Dim 28 Fév 2010 20:29

JeeHell, çà marche nickel !
Je pense que dorénavant et grâce à toi, je devrais passer moins d'une journée par programmation de servo etonneyeux peurefrayé
Surtout que j'ai préparé la petite feuille de calcul qui va bien ...
merci affiche
Vincent
Avatar de l’utilisateur
Colibri
 
Messages: 1456
Inscription: 13/05/09
Localisation: Guérande (44)

Suivante

Retourner vers Programmation Sioc





Qui est en ligne

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