Reparation Chaine CMS
Objectifs :
L'objectif est d'avoir une chaine complète pour la réalisation de carte avec des composant CMS. La réutilisation des machines Precidot 30, Novar 33
Cahier des charges
precidot
- récupération des coordonnées des points de soudure à partir d'un logiciel de CAD (en mm).
- les transformer en unité machine (1U=0,0508mm)
- les transformer en ligne de commande en ordonnant le parcours pour aller de droite à gauche (contrainte liée au stoppeur)
- les écrire au bon endroit sur la disquette en hexa
- Cas 1 seul circuit : Il faut prendre la référence à la machine
- Cas plusieurs circuits : Il faut ajouter des boucles et prendre toutes les références intermédiaires
- gérer le dépôt en fonction de la dimension du pad. par ex 2 point cote a cote pour pad long ...
- gérer les composants comme des mask (possibilité de définition dans la machine
- gérer la correction automatique de positionnement
- gestion des rejets (si option)
- gérer les paramètres machine
novar 33
- récupération des coordonnées du centre des composants à partir d'un logiciel de CAD (en mm) et la rotation.
- les transformer en unité machine (1U=0,0508mm)
- les transformer en ligne de commande
- ajout du magasin ou est le composant (input utilisateur)
- les écrire au bon endroit sur la disquette en hexa
- Cas 1 seul circuit : Il faut prendre la référence à la machine
- Cas plusieurs circuits : Il faut ajouter des boucles et prendre toutes les références intermédiaires
- gérer le changement de buse et de vitesse en fonction des composants
- gérer la correction automatique de positionnement
- gestion des rejets (si option)
- gérer les contournements de points haut
- gérer les paramètres machine
avancement
Descriptif de la machine
Numéro de Série : 2290104
Documentation
Exemple d'utilisation
Maintenance / Etat
Analyse de la disquette
Récupération du contenu d'une disquette créée par la nova
Récupération du contenu de la disquette
sudo dd if=/dev/fd0 of=/tmp/nomfichier.bin
Edition du fichier binaire
sudo apt-get install ghex sudo ghex2 /tmp/nomfichier.bin
Ecriture de la disuette
sudo dd of=/dev/fd0 if=nomfichier.bin
Effacer la disquette
sudo dd if=/dev/zero of=/dev/fd0 bs=512 conv=notrunc
Notes d'édition
- La modification d'un parametre d'une ligne existante est bien répercuté
- variables sur 16bit [confirmations ?]
- Magasin
- Rotation
- Dx
- DY
- Encodage en Little Endian: Les bloc d'octets sont inversés! pour avoir la valeur décimale 1853 il faut avoir "3d 07" et non "07 3d"
- Pas de déplacement effectif si aucun magasin d'indiqué
Adresses
Début des bank : 04000 bank 1 16000 bank 2 28000 bank 3 3a000 bank 4 à partir de 3A208 (programme) position magasin 03600,15600 ...39608 >>> du coup les @ des banks ci-dessus ne sont peuetre pas bonne ... type magasin 03906,15906 ... param ... 28032 à 2808C ...3A042 à 3A098 offset pour l’écriture des lignes d'un programme : 208 offset pour l’écriture des Magasins : ?? offset pour l’écriture des paramètres machine : 42 (à vérifier) autres offset : ??
Modifier la disquette
fabmanager@fab1:~/Documents/Novar30$ sudo python [sudo] password for fabmanager: Python 2.6.5 (r265:79063, Oct 1 2012, 22:07:21) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> f = open('/dev/fd0','rw+') >>> f.seek(0x3a208,0) >>> f.read(8) '\x00\x00\x00\x00\x01\x00\x02\x00' >>> f.seek(0x3a208,0) >>> f.write('\x00\x00\x00\x00\x01\x00\x02\x99') >>> f.seek(0x3a208,0) >>> f.read(8) '\x00\x00\x00\x00\x01\x00\x02\x99' >>> f.close()
MAPPING de la disquette
0x4000 bank 1
=== Début des Paramètres Machine Précidot ===
- @bank + 0x000 Param 01
- @bank + 0x099 Param 44
=== Début du programme Précidot ===
- @bank + 0x208 Position x, y du premier point de référence
- @bank + 0x210 contrôle du point de Référence
- @bank + 0x218 1ère boucle de dépose répétée 1 fois
- @bank + 0x220 Début des Dépôt sur les point aux coordonnées X,Y
- @bank + 0x2DF Fin des dépôt
- @bank + 0x2EF Fin de Programme Precidot
0x39600 bank4P
=== Début des Magasins Novar ===
- @bank + 0x606 Position x, y du premier rang de référence du magasin 01
- @bank + 0x6E7 Fin des magasin à Bande
- @bank + 0x6EC Position x, y du premier rang de référence magasin à vibration 41
0x3A000 bank 4
=== Début des Paramètres Machine Novar ===
- @bank + 0x042 Param 01
- @bank + 0x099 Param 44
- @bank + 0x032 Nb de Ligne du programme
- @bank + 0x035 Fin du Nb de Ligne
- @bank + 0x036 Nb de Ligne de Positions Mag
- @bank + 0x038 Fin du Nb de Ligne
=== Début du Programme Novar ===
- @bank + 0x208 REF
- @bank + 0x212 Controle de Ref
- @bank + 0x218 Prise du 1er Outil
- @bank + 0x222 Vitesse
- @bank + 0x228 Début boucle
- @bank + 0x230 à @bank + 0x24F placement composant
- @bank + 0x250 Fin 1er Boucle
- @bank + 0x258 Depose
- @bank + 0x260 Prise nouvel Outil
- @bank + 0x268 Vitesse
- @bank + 0x270 Début 2eme boucle
- @bank + 0x278 placement du composant
- @bank + 0x280 Fin 2eme Boucle
- @bank + 0x288 Depose
- @bank + 0x290 Prise nouvel Outil
- @bank + 0x298 Vitesse
- @bank + 0x2A0 Début 3eme boucle
- @bank + 0x2A8 à @bank + 0x2B7 placement du composant
- @bank + 0x280 Fin 3eme Boucle fin de programme
Dev IHM
Partons du cas : testeur de pile ( cartes et composants dispo au Fablab).
ici se trouve le projet eagle.
Un script ulp permet d'extraire les données interessantes, dans un fichier :
- position des pins (ie point où déposer la soudure)
- position et rotation des composants
Precidot :
demander le nb de carte : n
- n=1 :
LIGNE MOD DT DX DY 1 0 0 0 0 // le point de référence sera définit sur la machine ... //ligne de coordonnée de point récupérer dans le fichier export .pnp : ligne commençant par -pin-
- n>1 :
// pour amélioration future demander : offset vertical et offset horizontal (mm) >> voir pour vérification des point de ref
LIGNE MOD DT DX DY 1 0 0 0 0 // le point de référence de chaque carte sera définit sur la machine ... // n 0 0 0 0 n+1 0 1 n 0 //début boucle ... //ligne de coordonnée de point fin 0 2 0 0 // fin boucle
à ajouter : contrôle des mires (si dispo); gestion du dépôt fonction dimension des pattes ...
Novar33:
il faut gérer les magasins.
- sur la machine :
procédure de chargement magasin :
-visuel des zones. ZONE0 et Zone 20 composant en Bande. ZONE40, composant en barette.
-visuel de l'orientation des composant
- config magasin
- sur le mag :
au démarrage de la novar : touche BAS (mag bande) ou touche mod(mag reglette) = configuration numéro
touche du haut : configuration de l'avance pour les bandes (puis touche haut : choix de la bande (. indique dizaine)/touche bas choix avance 2-4-8-12)
- novar en route : avance bonde manuelle (Haut sélection de la bande /bas avance)
touche MOD pour changer de menu :
0 STOP U vibration (clignotant: fonction mémoire pour la configuration) A sélectionne la zone du magasin t réglage de la période de vibration de t=18 HF à t=42 BF P réglage de l’amplitude de l’oscillation de P=0 à P=40 S réglage de la force des impulsions de S=2 à S=98
touche +/- pour modifier
pour mémoriser le changement touche mem (U apparait)recherche (touche +/-) zone dispo (indiquer par :) puis de nouveau MEM.
- Dans l'ihm :
lister les composants (ligne commençant par -composant-)
pour chaque composant demander dans quel magasin il est et son orientation dans le magasin.
- créer la ligne Ligne MAG ROT DX DY
pour ROT :La machine considère le composant orienté a 0° dans son magasin et ajoute la rotation informée dans la ligne de programme.
et 0>>360 pour centrer le composant???? a voir s'il est necessaire de configurer les contours pour ça.
- demander le nb de carte : n
n=1 : LIGNE MAG rot DX DY 1 0 0 0 0 // le point de reference sera definit sur la machine ... //ligne de coordonnée des composants recuperer dans le fichier export .pnp : ligne commençant par -composant-
n>1 : // pour amélioration future demander : offset vertical et offset horizontal (mm) >> voir pour verification des point de ref LIGNE MAG rot DX DY 1 0 0 0 0 // le point de reference de chaque carte sera definit sur la machine ... // n 0 0 0 0 n+1 0 1 n 0 //debut boucle ... //ligne de coordonnée de point fin 0 2 0 0 // fin boucle
ajout : gestion contour, changement de buse et vitesse fonction du type de composant, correction de mire, ajout de contournement de point haut marquage incorrect (si option ok)