Commit 455fe95a authored by Ribrag Pierre's avatar Ribrag Pierre

Commit pythonMaster documentation

Data, Process, Robot, Tools & Tray:
- documentation des classes et du code
- suppression de portions de code inutile
parent fd9e492b
......@@ -2,14 +2,25 @@
# coding: utf-8
# ----------------------------------------------------------------------------------------------------------------------
"""
Fichier regroupant 2 classes : Position et PosTray
Ces deux classes sont pratiques et viennent en support des classes "actives" du robot
Position : classe gerant simplement une position (X, Y) en micrometres
PosTray : classe gerant simplement une position dans un rack de puces 15x6 cases
"""
# ----------------------------------------------------------------------------------------------------------------------
class Position:
# Position absolue sur le plancher robot ( X , Y )
# X en um (micrometres)
# Y en um (micrometres
# envisager un controle des positions, exception si position en dehors du plateau
def __init__(self, posx, posy):
self.positionX = posx
self.positionY = posy
......@@ -45,10 +56,8 @@ def sub(pos1, pos2):
class PosTray:
# Position case dans un Tray
# X entre 1 et 15
# Y entre 1 et 6
# envisager un controle des coordonnees, exception si coordonnees en dehors du tray
# X entre 1 et 6
# Y entre 1 et 15
def __init__(self, posx, posy):
self.caseX = posx
......@@ -66,20 +75,5 @@ class PosTray:
def setY(self, posy):
self.caseY = posy
def addX(self, n):
return self.caseX + n
# THROW EXCEPTION IF OUT OF [1, 6]
def addY(self, n):
return self.caseY + n
# THROW EXCEPTION IF OUT OF [1, 15]
def mul(posTray, pos):
# multiplier membre a membre un objet PosTray et un objet Position
newPos = Position(posTray.x()*pos.x(), posTray.y()*pos.y())
return newPos
# ----------------------------------------------------------------------------------------------------------------------
#!/usr/bin/env python
# coding: utf-8
# ----------------------------------------------------------------------------------------------------------------------
"""
Fichier contenant la classe Process
Process : gere le processus de tri. C'est elle qui contient la liste des racks de puces utilises et leurs positions.
Elle abstrait les positions des puces en des fonctions simples :
- prochaine puce a recuperer
- prochaine case de puce valide
- prochaine case de puce defectueuse
Chaque fois qu'un rack est vide/plein (selon le cas) elle passe au suivant
"""
# ----------------------------------------------------------------------------------------------------------------------
import Tray, Data, Server, GlobalVar
# ----------------------------------------------------------------------------------------------------------------------
......@@ -11,13 +28,14 @@ class Process:
# - ou on en est du processus de tri
# - les positions des elements sur le plancher du robot
# Trays
# Positions des Trays
palette_haut_gauche = Tray.Tray(0, [32004 , 647309], [137002, 931297])
palette_haut_droite = Tray.Tray(0, [31814 , 767 ], [137002, 285422])
palette_bas_gauche = Tray.Tray(0, [183230, 648309], [288227, 932298])
palette_bas_centre = Tray.Tray(0, [182944, 325106], [287989, 609095])
palette_bas_droite = Tray.Tray(0, [183627, 1913 ], [288189, 286911])
# Noms plus parlants et reset state (plein : 0 | vide pour puces valides : 1 | vide pour puces defectueuses : 2)
palette_src = palette_bas_droite
palette_src.resetState(0)
......@@ -30,6 +48,7 @@ class Process:
palette_temp = palette_bas_centre
palette_temp.resetState(0)
# Liste des trays utilises
tr0 = palette_valid
tr1 = palette_src
tr2 = "Non assigne"
......@@ -43,24 +62,26 @@ class Process:
self.tr = [tr0, tr1, tr2, tr3, tr4, tr5, tr6, tr7, tr8, tr9]
# On commence par les trays :
self.currentTestTray = 1
self.currentValidTray = 0
self.currentDefectTray = 8
# On finit par les trays :
self.lastTestTray = 1
self.lastDefectTray = 8
# Carte de test
self.posTest = Data.Position(117699, 469803)
self.posTemp1 = palette_temp.getPosCoord(1, 7)
self.posTemp2 = palette_temp.getPosCoord(1, 8)
# Position de la carte de test
self.posTest = Data.Position(117699, 469803) # pos carte de test
self.posTemp1 = palette_temp.getPosCoord(1, 7) # pos buffer intermediaire 1
self.posTemp2 = palette_temp.getPosCoord(1, 8) # pos buffer intermediaire 2
# Etat du processus
self.state = 0 # 0 : running | 1 : end | 2 : pause/stop
def getPosNextPuce(self):
# renvoie la position de la prochaine puce a recuperer du tray de test courant
# Renvoie la position de la prochaine puce a recuperer du tray de test courant
posNextPuce = self.tr[self.currentTestTray].getPosPuce()
......@@ -69,8 +90,9 @@ class Process:
def getNextPuce(self):
# renvoie la position de la prochaine puce a recuperer du tray de test courant
# passe au tray de test suivant si on a fini le courant
# Renvoie la position de la prochaine puce a recuperer du tray de test courant
# Incremente la position dans le tray : on a recupere la puce, au prochain coup on veut la suivante
# Passe au tray de test suivant si on a fini le courant
Server.printIHM("GET - Tray " + str(self.currentTestTray))
......@@ -87,7 +109,7 @@ class Process:
def getPosNextValid(self):
# renvoie la position de la prochaine puce a recuperer du tray de puces valides
# Renvoie la position du prochain emplacement vide du tray de puces valides
posNextValid = self.tr[self.currentValidTray].getPosHole()
......@@ -95,8 +117,9 @@ class Process:
def getNextValid(self):
# renvoie la position de la prochaine puce a recuperer du tray de puces valides
# passe au tray de puces valides suivant si on a fini le courant
# Renvoie la position du prochain emplacement vide du tray de puces valides
# Incremente la position dans le tray : on a depose la puce, au prochain coup on veut l'emplacement suivant
# Passe au tray de puces valides suivant si on a fini le courant
Server.printIHM("VALID - Tray " + str(self.currentValidTray))
......@@ -109,7 +132,7 @@ class Process:
def getPosNextDefect(self):
# renvoie la position de la prochaine puce a recuperer du tray de puces defectueuses
# Renvoie la position du prochain emplacement vide du tray de puces defectueuses
posNextDefect = self.tr[self.currentDefectTray].getPosHole()
......@@ -117,8 +140,9 @@ class Process:
def getNextDefect(self):
# renvoie la position de la prochaine puce a recuperer du tray de puces defectueuses
# passe au tray de puces defectueuses suivant si on a fini le courant
# Renvoie la position du prochain emplacement vide du tray de puces defectueuses
# Incremente la position dans le tray : on a depose la puce, au prochain coup on veut l'emplacement suivant
# Passe au tray de puces defectueuses suivant si on a fini le courant
Server.printIHM("DEFECT - Tray " + str(self.currentDefectTray))
......@@ -134,15 +158,28 @@ class Process:
return posNextDefect
def getPosTest(self):
# Accesseur de la position de la carte de test
return self.posTest
def getPosTemp1(self):
# Accesseur de la position du buffer intermediaire 1
return self.posTemp1
def getPosTemp2(self):
# Accesseur de la position du buffer intermediaire 2
return self.posTemp2
def getState(self):
# Accesseur de l'etat du tri
# 0 : running | 1 : end | 2 : pause/stop
return self.state
# ----------------------------------------------------------------------------------------------------------------------
......
This diff is collapsed.
This diff is collapsed.
#!/usr/bin/env python
# coding: utf-8
# ----------------------------------------------------------------------------------------------------------------------
"""
Fichier contenant la classe Tray
Tray : gere les positions dans un rack de puces 15x6. Elle permet d'abstraire le decalage vers la prochaine case du tray
ou encore le calcul de la position en micrometres d'une case.
Chaque tray peut etre de plusieurs types :
- 0 (plein) : un ensemble de puces a recuperer
- 1 ou 2 (vide) : un ensemble de cases vides a remplir
Chaque tray est parametre par 2 positions : celles de ses coins haut-droit et bas-gauche. Les positions des cases
sont alors ensuite interpolees entre ces deux points, ce qui permet de gerer le fait que l'alignement des racks
et des axes du robot est imparfait.
"""
# ----------------------------------------------------------------------------------------------------------------------
from __future__ import division
import Data, Server, GlobalVar
......@@ -8,14 +28,18 @@ import Data, Server, GlobalVar
class Tray:
# Classe qui gere les palettes 15x6 d'ASICs
# X : coordonnee ou il y a 6 cases
# Y : coordonnee ou il y a 15 cases
def __init__(self, initState, pos1, pos2):
self.state = initState # 0 : test | 1 : valid | 2 : defect
self.state = initState # 0 : test | 1 : valid | 2 : defect
# Ecarts en X et Y entre 2 cases d'un tray en micrometres
ex = 21040
ey = 20360
self.ecart = Data.Position(ex, ey) # ecart (hor, ver) entre 2 cases (micrometres)
# Decalage des positions en X et Y pour saisir les puces au centre
self.decalx = 1300
self.decaly = 5700
......@@ -51,7 +75,7 @@ class Tray:
def resetState(self, state):
# resets the state of a tray
# Reinitialise l'etat d'un tray
# state = 1 ou 2 | rack vide, receveur de puces
# state = 0 | rack plein, fournisseur de puces
......@@ -65,7 +89,7 @@ class Tray:
def getPosCoord(self, x, y):
# renvoie la position de la puce de coordonnees (x , y)
# Renvoie la position de la puce de coordonnees (x , y) en micrometres
# x dans [1, 6]
# y dans [1, 15]
......@@ -88,7 +112,7 @@ class Tray:
def getPosPuce(self):
# renvoie la position de la prochaine puce a recuperer
# Renvoie la position de la prochaine puce a recuperer dans le tray en micrometres
m = 15 - self.posPuce.y() # [1, 15] -> [14, 0]
n = self.posPuce.x() - 1 # [1, 6] -> [0, 5]
......@@ -109,8 +133,8 @@ class Tray:
def getPuce(self):
# renvoie la position de la prochaine puce a recuperer
# decale la prochaine puce a recuperer
# Renvoie la position de la prochaine puce a recuperer dans le tray en micrometres
# Incremente la position dans le tray : on a recupere la puce, au prochain coup on veut la suivante
positionPuce = self.getPosPuce()
......@@ -128,7 +152,7 @@ class Tray:
def getPosHole(self):
# renvoie la position de la prochaine case vide a remplir
# Renvoie la position de la prochaine case vide a remplir en micrometres
m = 15 - self.posEmpty.y()
n = self.posEmpty.x() - 1
......@@ -149,8 +173,8 @@ class Tray:
def getHole(self):
# renvoie la position de la prochaine case vide a remplir
# decale la prochaine case vide a remplir
# renvoie la position de la prochaine case vide a remplir en micrometres
# Incremente la position dans le tray : on a depose la puce, au prochain coup on veut l'emplacement suivant
positionHole = self.getPosHole()
......@@ -168,7 +192,7 @@ class Tray:
def isEmpty(self):
# renvoie 0 si le tray n'est pas vide et 1 s'il est vide
# Renvoie 0 si le tray n'est pas vide et 1 s'il est vide
if self.posEmpty.x() == 1 and self.posEmpty.y() == 1 :
return True
......@@ -177,7 +201,7 @@ class Tray:
def isFull(self):
# renvoie 0 si le tray n'est pas plein et 1 s'il est plein
# Renvoie 0 si le tray n'est pas plein et 1 s'il est plein
if self.posPuce.x() == 1 and self.posPuce.y() == 1 :
return True
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment