Reprise en main de jouvence pour l'integration des nouveaux codeur Lida
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:
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