Affichage des articles dont le libellé est Code APT. Afficher tous les articles
Affichage des articles dont le libellé est Code APT. Afficher tous les articles

jeudi 17 avril 2014

Calcul G02 ou G03 depuis l'APT

Bonsoir,

Suite à une demande sur ma messagerie de Martin, voici comment je calcul le code ISO pour un cercle à partir de l'APT. Voici donc quelques explications sur l'instruction CIRCLE dans l'APT et un exemple de code VB6 pour calculer la direction de l'arc.

Notation de CIRCLE dans l'APT

La notation la plus courante de l'instruction cercle dans l'APT est CIRCLE . Elle donne le point de centre et la normal ainsi que le rayon. Cette normal permet de spécifier le sens de parcours ( G02 ou G03 par exemple pour Z=1 avec un cercle dans le plan G17 ( XY) on aura une interpolation trigo G03 et G02 si Z=-1.

Syntaxe APT
CIRCLE/ XCentre,YCentre,ZCcentre, XNormal,YNormal,ZNormal, Rayon)
GOTO/ XPointFin,YPointFin,ZPointFin



Exemple :
CIRCLE/508.000,762.000,0.000,0.000,0.000,1.000,137.000
GOTO/645.000,762.000,0.000

Autre notation en utilisant INDRIV

L'autre notation reconnue et utilisée par exemple par les sorties de CATIA utilise le code TLON,GOFWD avec la notation INDIRV qui donne le sens de parcours au premier point du cercle. Le vecteur ainsi défini permet de connaitre le sens de parcours G02 / G03.

Syntaxe APT
INDIRV/ x, y, z
TLON,GOFWD/(CIRCLE/ xcentre,ycentre,zcentre,rayon),ON,(LINE/ xcentre,ycentre,zcentre, xPointFin,yPointFin,zPointFin)

Exemple :
INDIRV/ 0.99503, 0.09957, 0.000
TLON,GOFWD/ (CIRCLE/ 16.933, 12.173, 0.000,4.177),ON,(LINE/ 16.933, 12.173, 0.000,20.325, 14.611, 0.000)

Enfin la même notation est aussi traitée si les codes CIRCLE et LINE sont défini en leur affectant une référence (Lx et Cx ) qui sera utilisée dans le code TLON,GOFWD comme dans l'exemple suivant :
C1=CIRCLE/41.6,-1.0681,14.7351,3
L1=LINE/41.6,-1.0681,14.7351,38.6,-1.0681,14.7351
INDIRV/-1,0,0
TLON,GOFWD/C1,ON,L1

Attention dans ce cas la déclaration des commandes CIRCLE et LINE doit se faire avant l'appel par TLON,GOFWD. Il n'est ainsi pas possible de définir en début de code APT toutes les références CIRCLE & LINE.

Autre syntaxe APT déjà rencontré

INDIRV/ x, y, z TLON,GOFWD/(CIRCLE/ xcentre,ycentre,zcentre,rayon), ON, 2,INTOF,(LINE/ xcentre,ycentre,zcentre, xPointFin,yPointFin,zPointFin)


Où :
xcentre, ycentre, zcentre = coordonnées centre arc
xPointFin, yPointFin, zPointFin = Point fin arc
x, y, z = Vecteur de direction INDIRV



Exemple de code VB6 utilisé pour calculer le code G



Option Explicit
'---------------------------------------------------------------------------------------
' Module    : Calcul_cercle
' DateTime  : 05/12/2006 15:08
' Author    : usinage5axes
' Purpose   : Calcul des informations pour sortie circulaires
'---------------------------------------------------------------------------------------

Type INTERPO_CIRCULAIRE
 Code As String                     ' Code sous forme G02 ou G03
 GCode As Integer                   ' valeur du Code G  02 ou 03
 Centre As Point3                   ' Coordonnées point de centre
 Centre_Relatif As Point3           ' Coordonnées point de centre en relatif depuis point de départ pour certaines notation ISO
 P1 As Point3                       ' Point depart
 P2 As Point3                       ' Point millieu dans le cas de définition par 3 points
 P3 As Point3                       ' Point de fin
 Rayon As Double                    ' Rayon du cercle
 Normal As Point3                   ' Vecteur Normal du cercle utilisé pour calculer par exemple G02 ou G03
 Angle As Double                    ' Angle de l'arc de cercle
 Angle_Machine As PosAngulaire      ' Angle des axes rotatifs machine A/B/C pour sortie avec CN acceptant la notation
End Type

'---------------------------------------------------------------------------------------
' Procedure : Calcul_Info_Cercle
' DateTime  : 05/12/2006 15:10
' Author    : usinage5axes
' Purpose   : Avec les infos relues dans le fichier APT (P1, P3 , Point de centre
'---------------------------------------------------------------------------------------
'

Sub Calcul_Info_Cercle(Cercle_Cur As INTERPO_CIRCULAIRE, Optional INDIRV_Vect As Point3)

Dim VectP1 As Point3  ' Vecteur du point de centre au point 1
Dim VectNP1 As Point3 ' Vecteur normal

Dim Po1 As Point3
Dim Po2 As Point3
Dim Po3 As Point3
Dim Angle As Double
      
        ' Se produit si l'on traite une instruction TLON,GOFWD dans ce cas il n'y a pas de notion de normal défini
        ' mais on utilise le vecteur INDIRV

        If Longueur(Cercle_Cur.Normal) = 0 Then
           ' Normal_Plan_Courant = Variable globale de type point défini selon G17/G18/G19
            Cercle_Cur.Normal = Normal_Plan_Courant
        End If
       
        'P1 Point de départ
        'P3 Point de fin


        Po1 = VecSub(Cercle_Cur.P3, Cercle_Cur.P1)
        Po2 = VecteurUnitaire(VecProd(Po1, Cercle_Cur.Normal))
        Po3 = VecteurUnitaire(PointMilieu(Cercle_Cur.P1, Cercle_Cur.P3))
        VectP1 = VecteurUnitaire(VecSub(Cercle_Cur.P1, Cercle_Cur.Centre))
            ' VectNP1 est le vecteur direction calculé au point de départ. il donne normalement le sens Trigo
            ' Comparé avec INDIRV il servira à déterminer G02 ( horaire ) ou G03 (Trigo)

        VectNP1 = VecProd(Cercle_Cur.Normal, VectP1)
           
        ' Calcul de l'angle
        Cercle_Cur.Angle = Angle3Pt(Cercle_Cur.P1, Cercle_Cur.Centre, Cercle_Cur.P3)

                   
        ' Détermine le sens de l'intero circulaire
        If Longueur(INDIRV_Vect) Then ' INDIRV_Vect :  Détermination du sens avec info INDIRV
            If Dot(VectNP1, INDIRV_Vect) < 0 Then
               Cercle_Cur.Code = PP_ARC_R 'G02 ( horaire )
               Cercle_Cur.GCode = 2
               Cercle_Cur.P2 = VecAdd(Cercle_Cur.Centre, Po2, -Cercle_Cur.Rayon)
            Else
               Cercle_Cur.Code = PP_ARC_L ' G03 (Trigo)
               Cercle_Cur.GCode = 3
               Cercle_Cur.P2 = VecAdd(Cercle_Cur.Centre, Po2, Cercle_Cur.Rayon)
            End If
        Else
            ' Notation CERCLE avec vecteur NORMAL pas d'indication du sens de parcours : utilisation de la normal
            If Dot(Cercle_Cur.Normal, Normal_Plan_Courant) < 0 Then
               Cercle_Cur.Code = PP_ARC_R ' G02 ( horaire )
               Cercle_Cur.GCode = 2
               Cercle_Cur.P2 = VecAdd(Cercle_Cur.Centre, Po2, -Cercle_Cur.Rayon)
            Else
               Cercle_Cur.Code = PP_ARC_L ' G03 (Trigo)
               Cercle_Cur.GCode = 3
               Cercle_Cur.P2 = VecAdd(Cercle_Cur.Centre, Po2, Cercle_Cur.Rayon)
            End If
        End If

        Cercle_Cur.Centre_Relatif = VecSub(Cercle_Cur.Centre, Cercle_Cur.P1)
       
        ' Remise à Zéro du vecteur INDIRV_Vect
        INDIRV_Vect.X = 0
        INDIRV_Vect.Y = 0
        INDIRV_Vect.Z = 0
End Sub

dimanche 27 octobre 2013

APT comme inadAPTé

  J'ai souvent eu l'occasion de dire tout le mal que je pensais des solutions utilisant le code APT comme interface de sortie des parcours outils. La norme APT est un vieux système que nous ne retrouvons que sur des systèmes Catia, NX, ProE. Les nouvelles génération de système CFAO ont leur propre postprocesseur. Il n'y a donc plus d'utilisation d'un autre système complémentaire. De même aujourd'hui sur les FAO les plus en pointe : PowerMill, Tebis , TopSolid, WorKNC ... L’intégration de la machine est maintenant la base du processus de calcul des parcours. Le calcul des parcours est donc directement lié à la machine. Ainsi en choisissant une machine on a directement la géométrie des outils, les conditions de coupe définis pour la machine la gestion des numéros outils, des outils frère, etc. http://www.tebis.com/cms/index.php?id=45&L=3 


Machine Simulateur (Image Tebis)
La FAO calcul aussi directement les cordonnées XYZ et les angles A/C B/C. Ceci permet d'avoir une simulation assez proche de la réalité ce qui élimine le recours à des solutions de vérification. L'on peut aussi gérer les limites angulaires de la machine dans la FAO. Comme on peut le voir par exemple avec la solution de Tebis : http://www.youtube.com/watch?v=cL9QzQNy6Uw 
 L'on peut aussi améliorer la qualité des parcours 5 axes en gérant la variation angulaire sur les axes rotatifs et pas uniquement sur la notion de variation du vectoriel. Ceci permet par exemple le calcul comme la Redistribution de points angulaires. La redistribution de points angulaires permet à l’utilisateur de contrôler l’angle maximum toléré par l’outil entre deux points. Bénéfices : 
  • Idéale pour les changements rapide d’angle sur les courtes distances.
  • Améliore l’état de surface pour une meilleure qualité de pièce.
  • Lissage des avances machines afin d’augmenter la durée de vie.
Cette évolution permet d'apporter de nouvelle stratégie comme par exemple le polar Milling : http://www.delcam.tv/pm2012/lz/fr/videos/video-Polar.html 

 Si cette stratégie existait dans un système utilisant une notation APT, le code donnerait toujours une sortie X,Y,Z, 0,0,1 pour le vecteur outil. Difficile avec ces infos de convertir en une sortie calculant l'axe C. Autre limite de l'APT. Dans certains système il est possible d'activer le calcul de la normal de contact (PowerMill) ainsi le logiciel permet d'utiliser des fonctions de compensation 3D pour gérer par exemple une correction d'usure d'outil. Pour cela je dois avoir les informations sur U,V,W de la normal de contact qui n'existe pas dans l'APT. L'avenir est donc résolument de mon point de vue à l'intégration du contexte machine est d'un lien de plus en plus fort avec le contexte machine pour le calcul de parcours. Les derniers développement de l'éditeur Delcam avec son concept de machine ADN : http://www.vortexmachining.com/machinedna/index.asp.

Machine DNA (Image DELCAM) 

Les derniers communiqués de presse de MORI SEIKI/DMG concernant la solution de post-processeur Manufacturing Suite de DMG MORI SEIKI. http://www.moriseiki.fr/2013/07/le-post-processeur-manufacturing-suite-de-dmg-mori-seiki-rend-superflues-les-solutions-definies-par-lutilisateur/ 
 MORI-APT (Image Mori Seiki/ DMG)
Cette solution me semble donc aller à contre-courant. En effet pour les différentes raisons indiqués précédemment, je pense que la sortie APT est une limitation à l'évolution des solutions de programmation. Comme autre argument je reprendrai aussi une demande récurrente des industriels aujourd'hui qui est de pouvoir gérer les modifications apportées à la programmation au travers de la chaine numérique. Un des principaux problèmes est de pouvoir remonter les modifications intervenues lors de la programmation des pièces. Il est commun que le régleur soit obligé de modifier un programme pour adapter les conditions théoriques à la réalité de l'atelier. Ces modifications réalisées sur la machine sont difficile à remonter dans la partie FAO pour assurer la traçabilité des modifications et garantir la validité des parcours dans les futurs évolutions des produits. En rajoutant un maillon à la chaine on rique encore de complexifier ce travail.

 Et vous quel est votre avis sur ce sujet ?

mardi 30 juillet 2013

Winpost Version 0.5.3

Modifications sur la visualisation du code APT :

Dans cette version j'ai complété la relecture du code APT avec un nouvel exemple de code SEQNO fourni par Yves (Merci). 
SEQNO : numérotation de bloc
Syntaxe reconnue dans Winpost 0.5.3
  SEQNO / valeur               ->  numéro du bloc suivant
  SEQNO / ON                   ->  activation de la numérotation des lignes
  SEQNO / OFF                  ->  arrêt de numérotation des lignes
  SEQNO / INCR , valeur    ->  incrément de numérotation modifié avec la nouvelle valeur
  SEQNO / STEP , valeur    ->  saut de numérotation sur la nouvelle valeur