Tour:MoriSeiki:SL0

= Tour Mori Seiki SL0=

Historique
Notre tour numérique SL-0 Mori Seiki (dit Maurice pour les intimes) a été acheté en juin 2013 à la société MTA (MECANIQUE TECHNOLOGIE ASSOCIEE) près de Dijon.

Achetée en panne sur le plan électronique, c'est le bon état mécanique de la machine et les possibilités intéressantes permises par cet outil à la rigidité exceptionnelle qui ont poussé l'Electrolab à cette acquisition.

Des devis de remise en état de la commande par une société tierce étaient fournis par le vendeur, et le diagnostic présenté laissait supposer une réparation délicate, mais possible. Dès cette étape, nous avions envisagé, en dernier ressort, qu'un reconditionnement de la machine avec une commande moderne pouvait être sereinement envisagé et représenterait certes un coût élevé pour l'association, mais rapport investissement/fonctionnalité plus qu’intéressant.

La mise en œuvre du projet "Electrolab 2.0" au cours de l'année 2013 (les plus gros travaux d'aménagement du local ayant commencé en janvier 2014) on mis les efforts de remise en état de ce cher "Maurice" en pause pour plusieurs années.

En mars 2015, après avoir effectué les premières réparation sur l'électronique de puissance, nous avons buté sur la remise en état de la carte mère principale Fanuc (voir "remise en état"), le projet retombant en pause pour de longs mois.

En septembre 2015, l'achat de notre tour CNC Cazeneuve, le point mort sur les perspective de réparation de la carte mère Fanuc, et la mobilisation à 100% des énergies des membres autour de l'aménagement du local nous ont poussé à remettre en cause le projet "SL-0". Devant participer au financement du tour Cazeneuve, le "SL-0" fût (timidement) mis en vente auprès de professionnels.

L'échec de cette mise en vente a même pendant un temps signé l'acte de démantèlement de la machine... Achetée au prix de la ferraille, il fallait récupérer la mise de fonds initiale, et la perspective de revente du bâti "au poids" pouvait avoir du sens. Par chance, dans notre contexte associatif, le sens n'est pas tout, et, il faut le dire, ce "passage par les armes" était pour chacun d'entre nous un véritable crève-cœur...

Entre deux eaux, attendant les bons offices des uns ou les coups de masse des autres, Maurice est resté caché au fond de l'atelier... Patient...

En juillet 2016, après la tenue dans les locaux de l'Electrolab du meeting européen autour du projet "Machinekit", nouveau revirement de situation : les bons offices reprennent le dessus, et la décision de passer à une phase de reconditionnement de ce cher Maurice est enfin prise.

Caractéristiques

 * Tour à commande numérique 2 axes à tourelle porte-outils automatique 8 positions de marque Mori Seiki
 * Diamètre d'usinage max : 150mm
 * Longueur d'usinage max : environ 190mm
 * Commande CNC 2 axes en boucle fermée
 * Moteur d'entrainement du mandrin : 5,5 kW (surcharge possible à 7,5kW pendant 30mn)
 * Vitesse de rotation maximale : 6000 rpm
 * Entrainement des axes : servomoteurs DC
 * Graissage centralisé
 * Année de fabrication : 1986
 * Poids : 2,5 tonnes (sans accessoires externes)
 * Précision des pièces usinées : 0,01mm
 * Mandrin à serrage hydraulique (force de serrage programmable).
 * Puissance installée : 18,5 kVA

Remise en état
Selon les informations et documents fournis par le vendeur, les éléments en panne étaient sensés être les suivants :


 * depuis longtemps (alors que la machine était toujours en production), une panne thermique (se manifestant au bout de plusieurs heures) provoquait la mise en erreur du driver d'axes
 * panne du driver de broche lors d'une surcharge pendant une opération de tournage musclée

Les deux drivers avaient été démontés, mis en caisse et expédiés à une société de réparation. Le devis se montant à 3000€ et MTA ayant décidé d'investir dans une machine plus récente, le devis a été refusé, et les drivers ré-expédiés à MTA. Ils étaient toujours dans leurs caisses lorsque nous avons acheté la machine, et donc jamais remontés.

Session du 15 mars 2015
A ce stade, la machine n'a jamais été branchée par l'Electrolab. Nous nous lançons avant toute tentative dans un audit des pièces supposées en panne par l'ancien propriétaire.

Une analyse fine montre que les drives en notre possession on en réalité été vandalisés : des connexions incohérentes (court-circuit entre phases) sont réalisées dans les modules. Il apparait assez logiquement que la société de "réparation", suite au refus du devis, s'est "payée" en pièces détachées fonctionnelles sur les modules. Des pièces ont très clairement été remplacées par des mauvaises, et qui plus est par des références incohérentes avec le matériel en présence.

Décision est prise de relever l'intégralité du schéma de la partie "puissance", et de contrôler chacun des éléments.

Session du 17 mars 2015
Tentative de relevé du schéma de la parie puissance... De très grosses incohérences nous laissent perplexes...

Session du 19 mars 2015
Suite à la découverte d'un autre amateur (M. Pierfrancesco Marini) s'étant lancé dans la réparation d'un driver de même type, nous avons pu échanger des informations cruciales avec lui... Notamment, les "faux" blocs de résistance hors service montés dans notre drive ne disposaient pas du même nombre de connexions (le câblage fantaisiste en résultant réalisait un CC entre phases), et il nous était impossible de procéder au relevé de schéma dans ces conditions. Un échange de photos et de mesures à l'ohm-mètre avec cette personne a permis de lever tous les doutes...

Session du 19 mars 2015
Schéma de la partie puissance relevé : [TBC avec le PDF... Version papier stockée dans l'armoire de doc en meca heavy]

Session du 22 mars 2015
Audit de chacune des pièces de la partie puissance...

Sont trouvé HS :
 * un relais de commutation
 * un IGBT
 * le bloc de résistances à re-fabriquer
 * tous les fusibles 75A

Session du 26 mars 2015
Remplacement de tous les éléments HS, et fabrication d'un nouveau bloc de résistances de puissance à partir de résistances de puissance discrètes ad-hoc (l'original de ce module étant introuvable, ou alors à des tarifs astronomiques)...

Audit du driver d'axes : un résistance de freinage est trouvée HS. Remplacement provisoire par... la résistance d'un convecteur de chauffage domestique 1.5kW...

Recâblage de la machine complète (transfo tri 380->110, machine, et tous les modules de la machine

Session du 29 mars 2015
La mise sous tension se passe bien, les drives font leur initialisation et sont dans l'attente du démarrage de la carte mère.

La carte mère présente un code d'erreur non documenté sur son afficheur 7 segments.

Sessions des 1, 2, 5 et 7 avril 2015

 * Remplacement de la majorité des CI logique TTL de la carte mère (ref : A16B-1010-0040)
 * Remplacement des RAM
 * Echange des processeurs 68000

Pas de progrès

Session du 11 avril 2015
Dump des mémoires UVPROM de la carte mère [TBC avec les fichiers...]

Mise en place d'un analyseur logique sur les bus d'adresses et de données du système à double 68000...

Le programme s'arrête après un saut faisant appel à une adresse correspondant à un asic Fanuc (en réalité, un ancêtre de CPLD 8kportes "grillé" par Fanuc).

Arrêt des investigations après 300h cumulées de tentative de dépannage de cette carte.

Session du 16 juillet 2016
Lancement d'un reconditionnement sur une base Machinekit (Yehaaaa !)


 * Identification du brochage des connecteurs des servos
 * Recherche d'une interface compatible Machinekit : la Mesanet 7I33TA devrait convenir
 * Dessoudage des connecteurs Honda bleus
 * Reconnexion du transfo sur roulettes

Objectif : envoyer des signaux de commande à la main pour tester les drive de servo "supposés" réparés...

Next steps:
 * Câblage breadboard pour appliquer les commandes à la main
 * démontage de la courroie Z
 * déconnexion servo X
 * alimentation tri
 * tests avec la breadboard

Session du 26 juillet 2016
Au programme :
 * Câblage breadboard pour appliquer les commandes à la main
 * tests du contrôleur de broche avec la breadboard

Bilan :
 * Pour le moment, pas de rotation de la broche, mais des incertitudes sur le prog du contrôleur, et sur la fonction de certaines broches
 * Identification d'un potentiel problème avec le transfo : même avec le secondaire débranché, de forts courants circulent dans la tôle du boîtier, mais on ne mesure aucun défaut d'isolation sur aucun enroulement (mesuré sous haute tension), et le différentiel de saute pas...
 * De temps en temps, à la mise sous tension, le disjoncteur saute en sur-courant (pas en différentiel)

Hypothèses :
 * Le disjoncteur utilisé était un C32, Schneider recommande un D40 pour un transfo de cette taille
 * L’absence d'anomalie d'isolation électrique pousserait vers le fait que ce comportement soit "normal"...

Session du 27 juillet 2016 (Steve+Ellyan+Zenos)
Programme:
 * Diagnostic du transfo
 * Changement disjoncteur
 * Investigation driver de broche

Bilan: (entre SRV(46),OS(14),SFR(45) sur CN1 pour le reverse/forward. cf schema elec page 8, branché sur la platine RRC-1)
 * Disjoncteur changé pour le D40 recommandé
 * Un fois le transfo refermé, ça semble marcher sans trop arquer ni ronronner. Mais peut-être le bruit est couvert par les ventilos...
 * Point chaud à la cam thermique quand même sur la carcasse du transfo (50-60 degrés), probablement dû à des courants de Foucault
 * Conso électrique à peu près équilibrée, mais ça reste une grosse vache. Pas de fuite sur la terre.
 * Inter monté sur la platine relais de la broche pour driver le reverse/forward. Ça tourne pas pour autant...
 * Tentative de lire les paramètres du driver de broche. Ne marche pas, faudra essayer avec le jumper drive/set.

Session du 28 juillet 2016 (Steve+François)
Programme: Bilan:
 * Faire tourner la broche !
 * Shunt du drive reset (ST1,ST2) depuis la board RRC-1
 * Shunt du spindle emergency (SP1,SP2) sur board RRC-1. Un relais claque ! ah ah !
 * Test en forward/reverse: La broche tourne doucement, dans les deux sens :-)
 * Shunt DA2 et SVC sur RRC-1 pour passer en spindle auto
 * Et là on contrôle la vitesse de la broche
 * Début vérification de la commande du circuit de lub (même si la broche n'en a pas besoin)
 * Pas encore reussi a lire les params du driver de broche. A tester avec le jumper
 * Câbles rallongés

Session du 2 août 2016 (Frédéric,François,Yannick,Steve)
Programme: Bilan:
 * Comprendre comment marche le drive de servo, et le faire marcher
 * Ingestion massive de PDFs mal branlés pour comprendre le câblage du drive d'axes. On a à peu près tout trouvé et compris.
 * Validation du câblage de l'encodeur Z, alimentation, tests, tout OK
 * Montage d'un convertisseur F/V via un compteur programmable Fluke (sans sens de rotation, juste sur une pin de l'encodeur)
 * Plaque d'essai pour un axe, avec commande de vélocité + enable.
 * Test: le driver d'axe ne s'allume même pas (led PRDY toujours off)

Quick-Session du 3 août 2016 (François,Steve)
Programme: Bilan:
 * 1/4h pour faire marcher le drive d'axes, on n'avait pas plus...
 * Après avoir branché le PRDY sur l'autre axe (X), la belle led verte du drive s'allume enfin. Yeepee!
 * Mais on a aussi une alarme affichée (LVAL: Low-Voltage ALarm), et donc ça ne tourne pas encore.

Session du 24 août 2016 (Steve,Ellyan,Yannick)
Programme: Bilan:
 * Régler le problème de l'alarme LVAL, fair tourner le servo
 * Plus de 2V d'ondulation sur le 24V; changement du condo de lissage en sortie du pont (provisoire, il faudra un mettre un neuf, low ESR)
 * Maintenant le drive s'allume sans erreur ! Plus que ~1V de ripple. Pas terrible...
 * Le défaut de ce condo pourrait expliquer l'ancienne panne thermique
 * Mais le servo ne tourne pas pour autant avec notre montage
 * Relevé une incohérence sur le chopping (testpoint T1). Mesuré 800us, pas cohérent avec le S16 ouvert, mais 2 S16: S16L et S16M pour un TP (p231). à voir

Session du 25 août 2016 (Steve,François,Ellyan,Yannick)
Programme: Bilan: à tourner, mais tout de suite une alarme TGLS s'affiche
 * Faire tourner le servo
 * Encore quelques erreurs LVAL, il faudra retarder le shunt PRDY (Seul celui du L(Z) est pris en compte)
 * Après avoir remis le 100V (Disjoncteur de la pompe de lub qui coupait le circuit par sécurité), ça commence
 * Shunt S23 pour désactiver cette alarme, car le compteur ne réagit pas assez vite, et le drive pleure
 * Du coup le servo tourne, on le coupe juste rapidement, car le feedback n'est pas présent
 * Et le drive du second axe marche aussi, yeepee !

Session du (NSP) (Steve,Frédéric)
(à détailler)
 * Étude des différentes solutions possibles pour l'interface TR.
 * À priori on s'oriente sur du mesa en PCIe.
 * On pense faire la synthèse du feed-back de velocité dans le fpga (nécessite plus de canaux), mais l'option de faire une carte reste possible.

Session du (NSP) (Steve,Frédéric)

 * Début de recensement de toutes les I/Os dont on va avoir besoin.

Session du 1er septembre 2016 (Steve,Frédéric)

 * Fin du recensement des I/Os. Il en faut pas mal...
 * Farfouille dans le stock pour trouver un PLC qui pourrait le faire.

Session du 17 septembre 2016 (Steve,Frédéric)
(à détailler)
 * Test du PLC Advantys: semble ok en modbus/tcp. Nous manquera quelques modules.

Session du 22 septembre 2016 (Steve,François)

 * Cartes Mesa 7i48 et 6i24-25 commandées
 * Vérification du circuit de lub: ça marche (juste que ça pompe pas souvent, by design...)

Session du 29 septembre 2016 (Steve,Frédéric,François)

 * Cartes Mesa reçues - merci la douane française :-P
 * On a un beau PC, linux RT/machinekit installé dessus
 * Bon le boitier est un pneu gros, va falloir un chausse-pied, mais on peut bosser dessus
 * Début remontage du groupe hydraulique

Session du 4 octobre 2016 (Steve,Frédéric)

 * Tentative de configuration de la carte Mesa avec pncconf : curieux, seule la 5i25 est proposée (TBC)
 * Recherche de la carte avec "lspci" : elle est bien là, "DPIO module: Device 2718:5124"
 * Nouvel essai avec la conf de base : erreur "operation not permitted" au chargement de Machinekit
 * Les ref sur Internet disent que le firmware n'a pas besoin d'être spécifié dans le fichier de conf car il est stocké en flash sur la carte.
 * Même pb après modif de la conf
 * Plongée dans les outils de flahsage "mesaflash"
 * Le binaire livré est 32bits, notre OS est 64bits
 * Recompilation de la version livrée dans 5i24.zip, installée dans ~/machinekit/5i24/utils/linux/source
 * La carte n'est pas détectée, avec la commande "./mesaflash --device 5i24 --list"
 * Installation d'une version plus récente dispo ici: https://github.com/micges/mesaflash
 * Compilation dans ~/machinekit/mesaflash/
 * L'option --list a disparu, mais la commande "./mesaflash --device 5i24 --readhmid" fonctionne. Cependant les caractéristiques de la carte ne sont pas reportées correctement (0k gates), tout ce qui est lu est à 0
 * Lecture de http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Recover_Corrupt/Blank_EEPROM_5i24%2C6i24%2C7i24%2C_6i25
 * Il y a un remède pour une EEPROM vide, donc on y va, on reflash
 * Tentative d'installation du firmware 5i24_25_sv12im_2x7i48.bit : mesaflahs nous dit "BootSector corrupted"
 * Installation en mode recover du firmware 5i24_25_justio.bit, qui se fait, mais à la fin un message d'erreur indique une incohérence de ref du FPGA (ftpg256 versus ftg144)
 * Rien n'a changé pour la commande "--readhmid"
 * Tentative avec le firmware 5i24_16_justio.bit
 * Toujours le même message d'erreur en fin de flashage
 * Rien de nouveau avec "./mesaflash --device 5i24 --readhmid"
 * Et finalement la machine freeze sur la commande "./mesaflash --device 5i24 --verbose"
 * Elle ne boot plus, le POST se bloque
 * Démontage de la 6i24, le PC repart
 * Basculement du cavalier W10 en fallback: pareil, le PC reste bloqué au boot
 * La carte est brickée. Nous ne sommes pas les premiers: http://russjury.blogspot.fr/2016/02/unbricking-mesa-6i24.html
 * En attente d'une sonde JTAG pour la suite des aventures

Session du 10 novembre 2016 (Steve, François, Frédéric, Ellyan)



 * Création d'un fichier toto.hal pour les tests unitaires
 * Connexion d'un encodeur 100ppr pour vérifier le comptage
 * Ca marche avec toto.hal.
 * Ca marche aussi avec la conf complète
 * Connexion du servomoteur de l'axe Z sur la carte Mesa
 * Ca marche, le drive régule bien la vitesse du moteur en utilisant l'info de vélocité calculée par Machinekit !
 * Mais avec halscope on voit des oscillations sur la vitesse, même avec la consigne à 0
 * pb de conversion F/V ?
 * tuning à faire dans le drive ?
 * ou c'est normal car le moteur n'est pas chargé ?
 * Ensuite intégration avec la boucle PID
 * au début, ça s'emballe, Machinekit passe en "following error"
 * augmentation de la tolérance à 100mm ... plus de "following error", mais le driver passe en erreur
 * détermination expérimentale du signe des paramètres scale
 * tuning des paramètres du PID : P=0.1 au lieu de P=100, et tous les autres paramètres à 0
 * ça marche, on arrive à commander la position, le moteur suit et se stabilise autour de la consigne !
 * avec halscope on peut suivre tous les signaux
 * avec P plus grand, on augmente les oscillations
 * reste des oscillations, même avec P faible, comme si en dessous d'une certaine valeur, l'oscillation vient d'autre part (le driver ?)
 * bidouillage des paramètres D, I, FF1 et FF2 : ça ne change pas grand chose sur l'oscillation

Session du 24 janvier 2017 (Steve, Frédéric)

 * Caractérisation du convertisseur F/V Mesa avec un générateur Siglent SDG 2042X
 * Génération du vecteur avec https://github.com/f1oat/pySimEncoder/blob/master/PySimEncoder/PySimEncoder.py
 * Attention, il faut mettre le générateur en mode "TrueArb" et non "DDS", sinon le signal n'est pas propre
 * Toutes les mesures montrent que la Mesa se comporte parfaitement
 * La delay line a aussi été validée

Mesures

Utilisation d'une double rampe -1000rpm à +1000rpm sur 500ms, avec 500ms de pause

Le pattern mesuré correspond bien au profil de vitesse programmé dans le script Python En zoomant, on voit que la Mesa répond sans délai (mesure disponible dès l'arrivée du front) En ajoutant une delay line de 5ms, on voir bien la courbe se décaler de 5ms Avec un délai de 125ms, on voit que la pointe du triangle est bien au temps 125ms, ce qui confirme la réaction rapide de la Mesa

Next steps
(voir http://www.cnczone.com/forums/fanuc/46949-fanuc-ac-main-spindle-problem.html - plus précis que le maintenance manual)
 * Tuning du PID
 * étudier la doc du drive pour voir comment le tuner (est-ce nécessaire ? avec ou sans charge ?)
 * trouver un petit utilitaire pour bidouiller facilement les paramètres PID en direct live
 * vérifier les fins de course
 * rétablir le following error dans Machinekit
 * limiter la vitesse de rotation côté consigne
 * coupler Z
 * tester sous charge avec le chariot Z en position centrale
 * Reconfigurer le contrôleur de broche... Ou verifier que sa config est cohérente (Voir F-01 à F-04, F-09)
 * Changer certains condos (dont le +24V) sur le drive d'axe
 * Remettre en marche le groupe hydraulique
 * Tester l'hydraulique et la commande de la tourelle
 * Lister les modules qu'il nous manque sur le PLC
 * Réfléchir à ce qu'on va mettre comme interface
 * Des zillions d'autres trucs

BILAN (provisoire)
Détail des réparations :
 * étage de puissance broche : 120 heures de réparation, à peu près abouti mais on a jamais pu tester in situ a cause de la carte processeur HS => testé, la broche tourne dans les 2 sens de circulation
 * étage de puissance servos : 30 heures de réparation, à peu près abouti (reste une pièce originale à refaire/commander), mais on a jamais pu tester in situ a cause de la carte processeur HS
 * carte processeur propriétaire : 300 heures de réparation, non abouti (manifestement, un ASIC FANUC est mort)
 * parties mécaniques de la machine (remontage/entretien/audit) : 50 heures

Lancement d'une opération de reconditionnement sur une base Machinekit. Fred, F1OAT, notemment, est sur le coup et nous apporte toute sa science !

How to...
(Ressources pédagogiques sur la machines...) [TO DO]

Driver de broche

 * Ref: A06B-6055-H106 Pcb: A20B-1001-0120 [Model 6, Digital, Internal cooling]
 * Manuel de maintenance : http://cncmanual.com/fanuc-ac-spindle-servo-unit-maintenance-manual-53425e/

Driver d'axes (Velocity Control Unit)

 * Ref: A06B-6047-H208 (Autres PCBs: A16B-1200-0230/07B et A20B-1000-0220/07B)

DC Servo Z

 * A06B-0642-B011 2000M (Model 5M, 9A) (0-2000 rpm)
 * Encoder: A860-0300-T001 (2000 ppr)

DC Servo X

 * A06B-0641-B011 (Model 0M, 7A)

CN FANUC 10T-A

 * Manuel de maintenance: http://cncmanual.com/fanuc-10-11-12-maintenance-manual-54815e/

Carte mère (Qu'on va jeter)

 * A16B-1010-0040/09D

Groupe hydraulique

 * Pompe Daikin V8A 1RXT-10 https://www.bibus-technology.com/fileadmin/editors/countries/sab/Produkte/Daikin/PDF/J-V_Piston_Pump.pdf

Carte Mesanet 6i24-25 (FPGA based PCIe Anything I/O card)

 * http://store.mesanet.com/index.php?route=product/product&product_id=300
 * http://www.mesanet.com/pdf/parallel/6i24man.pdf

Carte Mesanet 7i48 (6 channel Analog servo interface)

 * http://store.mesanet.com/index.php?route=product/product&product_id=100
 * http://www.mesanet.com/pdf/motion/7i48man.pdf

Other interesting docs

 * http://www.centroidcnc.com/downloads/CENTROID_Fanuc_Retrofit_Manual.pdf

Servo with LinuxCNC/Machinekit

 * Servo concept: http://www.machinekit.io/docs/common/Integrator_Concepts/#servo-systems
 * Machinekit servo config example: https://github.com/machinekit/machinekit/tree/master/configs/by_interface/mesa/hm2-servo
 * Servo tuning: http://gnipsel.com/linuxcnc/tuning/servo.html
 * Velocity vs torque mode: https://forum.linuxcnc.org/forum/38-general-linuxcnc-questions/30289-velocity-vs-torque-mode
 * Mesa configuration wizard: http://www.machinekit.io/docs/config/pncconf/

Ressources pour la maintenance
(références de consommables etc...) [TO DO]

Les membres formés sur cette machine
Machine en cours de rétrofit.... ??? <- Ajoutez votre nom/pseudo ici le cas échéant !