Vous êtes ici : Accueil / TECHNICAL PAGES / Projets / Installation codeurs LIDA 2021 / Reprise en main de jouvence pour l'integration des nouveaux codeur Lida

Reprise en main de jouvence pour l'integration des nouveaux codeur Lida

Compilation, technique, gitlab, algorithme, suivi, etc ...


Prembule

en avril 2019, Bruno et Luc démarrent le debugging des objets alongés sur T4. Bruno determine qu'une instabilité de la mesure de position génère des oscillation en elevation.

Afin de debugger ce problème il est nécessaire de reprendre en main le logiciel de contrôle de T4 basé sur les serveur tsrv_srv (treg_srv et topt_srv) (rem tsrv_srv n'existe plus depuis les premieres implantation de Beckhoff pour l'hydraulique, la safety et le cooling).

Lors de ce debuging, le doigt est pointé sur une tete elevation défaillante et déplus on remarque que l'initialisation par le passage sur le top zero n'a jamais fonctionné.

Bruno a profité de cette période pour passer le développement sous SVN à GitLab.

De nouveau codeurs ont été achetés et demandera une modification du code.

Ainsi en novembre 2020, Luc remet le soft à jour.



Suivit

L'idee est de travailler avec GitLab et Eclipse, ainsi installation de eclipse 2020-09 et le java openJDK-11 nécessaire pour le  nouvel eclipse

voir ce document

travail sur glstreg sous weber: synchronisation de src/jouvence src/jouvence2 pour faire des test de recompilation et dégraisser le soft des braconne inutiles qui perturbe eclipse dans les recherches de reference et definitions.

Travail sous jouvence02/trunk/tsrv_srv

rm Linux_2.6_i686/*

Le premier make se passe mal avec des message liés à undefined reference:

/home/weber/lib/Linux_2.6_i686/libsdb.a(libsdb.o): In function `sdb_scan_arg':
libsdb.c:(.text+0x1ad): undefined reference to `__isoc99_sscanf'

Le probleme se résout avec un make clean; make dans ~weber/src/libsdb et ~weber/src/libgop. Pas vraiment d'explication, peut-etre du à une compilation sur un autre machine.

Travail dans /home/weber/src/jouvence2/trunk/libt120jvc

rm *.o rm *.so* ; make ==> OK

Travail dans /home/weber/src/jouvence2/trunk/libtsrv

rm  Linux_2.6_i686/shared/* ; make ==> OK
rm Linux_2.6_i686/*.o Linux_2.6_i686/*.so* Linux_2.6_i686/*.a ; make ==> OK

Travail dans /home/weber/src/jouvence2/

make de tsrv_srv OK

Au final suppression de l'ensemble des .o .a .so* dans libt120jvc, libtsrv et tsrv_srv puis make dans les 3 meme directories => OK on fabrique correctement le

/home/weber/src/jouvence2/trunk/tsrv_srv/Linux_2.6_i686/tsrv_srv

Installation validée on peut enlever tags/ et tsrv_srv/trunk/



Git

la version en cours n'est pas bien gérée sous gitlab (on a pas été très sérieux). plus de détail des opérations dans ~weber/src/jouvence/LogDiffProblemLidaSept2019.txt

Pour permettre l'utilisation de meld lors avec git difftool (et git mergetool), il faut mettre cela dans son ~/.gitconfig:

#
# https://stackoverflow.com/questions/34119866/setting-up-and-using-meld-as-your-git-difftool-and-mergetool
#
# utilisation de meld pour git difftool
#
[diff]
    tool = meld
[difftool]
    prompt = false
[difftool "meld"]
    cmd = meld "$LOCAL" "$REMOTE"
#
# utilisation de meld pour git mergetool
#
[merge]
    tool = meld
[mergetool "meld"]
    # Choose one of these 2 lines (not both!) explained below.
    cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"
    cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"

 

 

(à l'aide de git log <file> | grep commit on obtient les No de commit concernant les mise à jouer 2019 pour se les afficher avec meld il faut taper:

git difftool 12b3feb741a554196ab81a194faa0005ee88a439 534af585b020ea6abf8701bb9590edfdb8b07a24  trunk/libt120jvc/libraries/AXIS_AZI.c
git difftool 12b3feb741a554196ab81a194faa0005ee88a439 534af585b020ea6abf8701bb9590edfdb8b07a24  trunk/libt120jvc/libraries/AXIS_ELE.c
git difftool 12b3feb741a554196ab81a194faa0005ee88a439 5f68bf57e4d8cca7f0ac475f40098185a808b819  trunk/libt120jvc/libraries/Encoder.c
git difftool 12b3feb741a554196ab81a194faa0005ee88a439 5f68bf57e4d8cca7f0ac475f40098185a808b819  trunk/libt120jvc/libraries/Encoder.h
git difftool 12b3feb741a554196ab81a194faa0005ee88a439 1c60456d9522fcf6ca7f2ff674fda95e70b78650  trunk/libt120jvc/libraries/LIDA.c
git difftool bb3749d04f63ac6d13aae0216fea139e5ef82e56 5f68bf57e4d8cca7f0ac475f40098185a808b819  trunk/libt120jvc/libraries/LIDA.h
git difftool bb3749d04f63ac6d13aae0216fea139e5ef82e56 104a415071c1d96fc7ba58a717eaf0e50f094027  trunk/libt120jvc/libraries/SCR.c

ou comparer la version actuelle avec $THOME/src/simond/libt120jvc/libraries/<file>

 


Suppression du code inutile (ancienne branches SVN)

 
cd src/jouvence
git rm -r tags
git commit -m"remove tags (old branchs SVN) (I think)"
git push
cd trunk/tsrv_srv/
git rm -r trunk
git commit -m"remove trunk (old branchs SVN) (I think)"
git push


ETUDE DU CODE

 

 


 


Resolution LIDA dans libt120jvc/libraries/UnitConverter.h: #define LIDA_RESOLUTION 18'000'000.0

Utilisé dans UnitConverter.c SCT_To_LIDA_Position et LIDA_To_SCT_Position

Ces 2 fonctions sont utilisées uniquement dans AXIS_AZI.c et AXIS_ELE.c d'une manière identique

Solution: dupliquer le LIDA_RESOLUTION en LIDA_AZI_RESOLUTION et LIDA_ELE_RESOLUTION et ajuster la résolution en ELE



 Reprise de la reprise le 16 juillet 2021

J'avais laissé src/jouvence2 et src/jouvence3, mais pas de diff on voit seulement ceci, certainement dans le but de faire les modifications dans jouvence3 et ne plus toucher jouvence2 (reference apres nettoyage):

 

Only in jouvence3/trunk/libt120jvc/libraries: AXIS_AZI.c.sav
Only in jouvence3/trunk/libt120jvc/libraries: AXIS_ELE.c.sav
Only in jouvence3/trunk/libt120jvc/libraries: Encoder.c.sav
Only in jouvence3/trunk/libt120jvc/libraries: Encoder.h.sav
Only in jouvence3/trunk/libt120jvc/libraries: LIDA.c.sav
Only in jouvence3/trunk/libt120jvc/libraries: LIDA.h.sav
Only in jouvence3/trunk/libt120jvc/libraries: SCR.c.sav

 

 

 

 

 

 

 

 








Mesure sur banc de test sur Fraiseuse atelier

 

Les tests se font sur réseau Labo Beckhoff (gvanuc01) et compilé et lancé sur gvapc01.

(Voir ce document pour l'installattion du driver de la carte NI6602 (compteur))

Utilisation de x2go sur gvanuc01 pour se simplifier les taches d'édition (depusi mac a l'atelier)

Le programme NIReadTop0 mesure le delta du compteur entre 2 top zéro.

On constate la chose suivante: remarque importante: on lit 4 coups par incrément, selon les spécifications on a:

52'000 increments gravés par tour et un interpolateur x 400 ainsi on a 20'800'000 incréments par tour

Notre carte de comptage compte 4 fois plus ainsi on a 83'200'000 incréments par tour

voir ce document en gros:

QuadratureDecoderStateMachine

 

Les listing suivants montrent les resulats de NIReadTop0 dans les 2 sens (2 listing)

Egalement l'algorithme permetant de determiner la postion en fonction de la valeur comptee sur un top zero depuis le precedent top zero.

Autrement dit, apres un mouvement continu qui permet de detecter un premier topZero declenchant le comptage d'increment jusqu'a un deuxieme top zero, on est capable de determiner la position du second top zero en fonction de la valeur comptee.

Il est evident que le mouvement doit etre continu pour que le systeme fonctionne. Donc un vraie recherche de top Zero.

Remarque importante: les valeurs utilisees dependent de l'interpolateur et de la maniere de compter du compteur.

Dans le cas teste, on interpolateur Hedeinam de 400 et un quadrature encodeur.

Ceci implique que la valeur 1'600'000 utilisee ci-dessous provient dun nombre d'increments entre 2 top zero multiplie selon ce qui est decrit juste ci-dessus.

Dans notre cas:

incP = increments physiques
incI = increments sortie interpolateur
incC = increment comptabilise

52'000[incP/tour] / 52 [topZero/tour] == 1000 [inc/topZero]


1000 [inc/topZero] * 400[incI/inc] * 4[incC/incI] = 1'600'000 [incC/topZero]
#          = Le no du top zero
counter    = valeur du compteur lue au passage du top0 est dans la colonne 
count      = valeur comptee depuis le dernier top zero

Si count > 0 := sens positif
Si count < 0 :  sens negatif et count = abs(count)
 
moduloPos = (count modulo 1'600'000) si le resultat est plus grand que zero (sinon 0)
moduloNeg = (1'600'000 - count)      si le resultat est plus grand que zero (sinon 0)

ComputedPosition:

      direction = count>0;
      if(count<0) count *= -1;
      
      moduloPos = count%1600000;
      moduloNeg = 1600000-count;
   
      if(direction == positive){
        if(moduloPos>0){
          position = (360./52.)*((int)(moduloPos/1600.+0.5)*2-1);
        } else {
          position = (360./52.)*((int)(moduloNeg/1600.+0.5)*2);
        }
      } else {
        if(moduloPos>0){
          position = (360./52.)*(((int)(moduloPos/1600.+0.5)-1)*2);
        } else {
          position = (360./52.)*(((int)(moduloNeg/1600.+0.5)-1)*2+1);
        }
      }

Cas avec deplacement dans sens des aiguilles de la montre

counter      count     moduloPos   moduloNeg  # computedPosition
--------     -------   ---------   --------- -- ----------------
 1601606     1601596        1596           0  1   6.923077
 3200009     1598403           0        1597  2  13.846154
 4803210     1603201        3201           0  3  20.769231
 6400007     1596797           0        3203  4  27.692308
 8004809     1604802        4802           0  5  34.615385
 9600009     1595200           0        4800  6  41.538462
11206409     1606400        6400           0  7  48.461538
12800010     1593601           0        6399  8  55.384615
14408009     1607999        7999           0  9  62.307692
16000009     1592000           0        8000 10  69.230769
17609609     1609600        9600           0 11  76.153846
19200010     1590401           0        9599 12  83.076923
20811206     1611196       11196           0 13  90.000000
22400012     1588806           0       11194 14  96.923077
24012809     1612797       12797           0 15 103.846154
25600010     1587201           0       12799 16 110.769231
27214410     1614400       14400           0 17 117.692308
28800012     1585602           0       14398 18 124.615385
30416009     1615997       15997           0 19 131.538462
32000009     1584000           0       16000 20 138.461538
33617609     1617600       17600           0 21 145.384615
35200011     1582402           0       17598 22 152.307692
36819210     1619199       19199           0 23 159.230769
38400007     1580797           0       19203 24 166.153846
40020812     1620805       20805           0 25 173.076923
41600012     1579200           0       20800 26 180.000000
43222412     1622400       22400           0 27 186.923077
44800009     1577597           0       22403 28 193.846154
46424012     1624003       24003           0 29 200.769231
48000009     1575997           0       24003 30 207.692308
49625611     1625602       25602           0 31 214.615385
51200010     1574399           0       25601 32 221.538462
52827209     1627199       27199           0 33 228.461538
54400012     1572803           0       27197 34 235.384615
56028809     1628797       28797           0 35 242.307692
57600011     1571202           0       28798 36 249.230769
59230410     1630399       30399           0 37 256.153846
60800012     1569602           0       30398 38 263.076923
62432009     1631997       31997           0 39 270.000000
64000011     1568002           0       31998 40 276.923077
65633614     1633603       33603           0 41 283.846154
67200010     1566396           0       33604 42 290.769231
68835210     1635200       35200           0 43 297.692308
70400012     1564802           0       35198 44 304.615385
72036812     1636800       36800           0 45 311.538462
73600009     1563197           0       36803 46 318.461538
75238408     1638399       38399           0 47 325.384615
76800008     1561600           0       38400 48 332.307692
78440014     1640006       40006           0 49 339.230769
80000009     1559995           0       40005 50 346.153846
81641611     1641602       41602           0 51 353.076923
83200008     1558397           0       41603 52 360.000000

Cas avec deplacement dans le sens inverse des aiguilles de la montre

counter       count      moduloPos   moduloNeg  # computedPosition
----------    --------   ---------   --------- -- ----------------
4293408888    -1558399           0       41601  1 353.076923
4291767288    -1641600       41600           0  2 346.153846
4290207287    -1560001           0       39999  3 339.230769
4288567289    -1639998       39998           0  4 332.307692
4287005686    -1561603           0       38397  5 325.384615
4285367288    -1638398       38398           0  6 318.461538
4283804087    -1563201           0       36799  7 311.538462
4282167281    -1636806       36806           0  8 304.615385
4280602486    -1564795           0       35205  9 297.692308
4278967288    -1635198       35198           0 10 290.769231
4277400886    -1566402           0       33598 11 283.846154
4275767290    -1633596       33596           0 12 276.923077
4274199287    -1568003           0       31997 13 270.000000
4272567288    -1631999       31999           0 14 263.076923
4270997685    -1569603           0       30397 15 256.153846
4269367286    -1630399       30399           0 16 249.230769
4267796087    -1571199           0       28801 17 242.307692
4266167288    -1628799       28799           0 18 235.384615
4264594488    -1572800           0       27200 19 228.461538
4262967287    -1627201       27201           0 20 221.538462
4261392889    -1574398           0       25602 21 214.615385
4259767288    -1625601       25601           0 22 207.692308
4258191288    -1576000           0       24000 23 200.769231
4256567287    -1624001       24001           0 24 193.846154
4254989688    -1577599           0       22401 25 186.923077
4253367284    -1622404       22404           0 26 180.000000
4251788083    -1579201           0       20799 27 173.076923
4250167285    -1620798       20798           0 28 166.153846
4248586489    -1580796           0       19204 29 159.230769
4246967288    -1619201       19201           0 30 152.307692
4245384886    -1582402           0       17598 31 145.384615
4243767288    -1617598       17598           0 32 138.461538
4242183285    -1584003           0       15997 33 131.538462
4240567287    -1615998       15998           0 34 124.615385
4238981689    -1585598           0       14402 35 117.692308
4237367289    -1614400       14400           0 36 110.769231
4235780084    -1587205           0       12795 37 103.846154
4234167288    -1612796       12796           0 38  96.923077
4232578476    -1588812           0       11188 39  90.000000
4230967291    -1611185       11185           0 40  83.076923
4229376885    -1590406           0        9594 41  76.153846
4227767288    -1609597        9597           0 42  69.230769
4226175289    -1591999           0        8001 43  62.307692
4224567290    -1607999        7999           0 44  55.384615
4222973686    -1593604           0        6396 45  48.461538
4221367289    -1606397        6397           0 46  41.538462
4219772087    -1595202           0        4798 47  34.615385
4218167284    -1604803        4803           0 48  27.692308
4216570490    -1596794           0        3206 49  20.769231
4214967286    -1603204        3204           0 50  13.846154
4213368889    -1598397           0        1603 51   6.923077
4211767291    -1601598        1598           0 52 0.000000

 

LW/18/12/2020