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

vendredi 23 mai 2014

WinPost 0.5.11


Une nouvelle version de Winpost permet la sortie des codes X au diamètre pour les machines de tournage. Une option"X au diamètre" permet de sortir les valeurs des coordonnées X multipliées par 2 par rapport à la valeur dans le code APT.

Version 0.5.11 Dernière modification 21/05/2014

Exécutable et installation (Version 0.5.X) : WinPost005X.exe (2.22 Mo)

Manuel d'utilisation (Version 0.5.X) : WinPost.pdf (1.12 Mo)

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

jeudi 25 juillet 2013

Winpost Translation


As all my programs Winpost is designed to be translated. If you want to make your own translation or edit messages or menus you can do so using the following procedure:
In the installation directory of the software create an empty text  file called :  lexique.txt
The file will initially be a null size.

Then run Winpost. The program will automatically fill in the file.

You can then edit the text using a utility such as Notepad.

Traduction de Winpost


Comme tous mes programmes Winpost est prévu pour être traduit.
Si vous voulez réaliser vous-même la traduction ou modifier les messages ou menu vous pouvez le faire en utilisant la procédure suivante :
Dans le répertoire d’installation du logiciel créé un fichier lexique.txt
Le fichier aura au départ une taille nulle.

Lancez ensuite Winpost. Le programme va automatiquement remplir le fichier.
Vous pouvez ensuite éditer les textes à l’aide d’un utilitaire comme Notepad.

mercredi 24 juillet 2013

Winpost 0.4.12



Nouvelle version de Winpost 0.4.12. des modifications sur le traitement des cycles de perçage ainsi qu'une nouvelle fenêtre pour le traitement des paramètres utilisant un code avancé sous forme de variables.
La coloration syntaxique permet de valider le code et les variables utilisées.

 

mercredi 27 juin 2012

Winpost 0.4.10

Petite modification sur Winpost pour répondre à une demande.

Dans les Cycles Fixes, il est possible d'utiliser des variables pré-calculées à partir des données APT.
en version 0.4.10 les valeurs disponible sont  au nombre de 16:

PP_CYCLE_FIRST_X-PP_CYCLE_DEPTH
PP_CYCLE_FIRST_X+PP_CYCLE_DEPTH
PP_CYCLE_FIRST_Y-PP_CYCLE_DEPTH
PP_CYCLE_FIRST_Y+PP_CYCLE_DEPTH
PP_CYCLE_FIRST_Z-PP_CYCLE_DEPTH
PP_CYCLE_FIRST_Z+PP_CYCLE_DEPTH
PP_CYCLE_X-PP_CYCLE_DEPTH
PP_CYCLE_X+PP_CYCLE_DEPTH
PP_CYCLE_Y-PP_CYCLE_DEPTH
PP_CYCLE_Y+PP_CYCLE_DEPTH
PP_CYCLE_Z-PP_CYCLE_DEPTH
PP_CYCLE_Z+PP_CYCLE_DEPTH
PP_CYCLE_CLEARENCE-PP_CYCLE_DEPTH
PP_CYCLE_CLEARENCE+PP_CYCLE_DEPTH
-PP_CYCLE_DEPTH
-PP_CYCLE_RETRACT

mercredi 2 mai 2012

Winpost 0.4.9

Suite à la remarque d'anthony; J'ai modifié la version de Winpost pour rajouter une option permettant de supprimer les codes de vitesses si l'on a une répétition de la vitesse avec des valeurs identiques:

L'activation de ce code va permettre de gérer les codes APT du type :

SPINDL/15000.0000,RPM,CLW
RAPID
GOTO  / -249.00000, -126.00000,    9.00200, 0.000000,-1.000000, 0.000000
RAPID
GOTO  / -249.00000,  -26.00000,    9.00200, 0.000000,-1.000000, 0.000000
FEDRAT/ 5000.0000,MMPM
GOTO  / -249.00000,  -24.00000,    9.00200, 0.000000,-1.000000, 0.000000
FEDRAT/ 5000.0000,MMPM
GOTO  /  249.00000,  -24.00000,    9.00200, 0.000000,-1.000000, 0.000000


Version 0.4.9 : http://5axes.free.fr/WinPost/WinPost004X.exe

dimanche 15 janvier 2012

Création de postprocesseur

Bonjour,

Voilà quelques conseils que j'avais déjà donnés à ceux qui seraient « tentés » par l'aventure postprocesseur. Qui n'est pas a mon avis un sujet insurmontable avec un peu de préparation. Premièrement il faut savoir qu'il existe plusieurs niveaux de difficulté et de complexité.

Niveau 1 ) Postprocesseur 3 axes et 3+2
Niveau 2 ) Postprocesseur 5 axes
Niveau 3 ) Postprocesseur 2 axes 1/2
Niveau 4 ) Pos processeur 2 axes 1/2 5 faces (Utilisation des fonctions de transformation et plan incliné)
Niveau 5) Postprocesseur de 2 à 5 axes

Si l'on rajoute à sa la possibilité de faire un postprocesseur généralisé comme j'ai essayé de le faire ( quelque chose qui permettrait de prendre en compte toute les CN à partir d'options de configuration : WinPost) On obtient une grosse usine à gaz assez indigeste. Il est donc préférable pour démarrer de repartir de quelque chose de neuf et de vous contenter de créer un pp pour une machine spécifique.

Ce que je conseil, c'est dans un premier temps de préparer votre travail en créant des fichiers exemples. Il en en effet indispensable avant de commencer à créer le postprocesseur de connaître le code CN de la machine.

Création d'une pièce type avec plusieurs type de parcours outil (surfaçage, perçage, taraudage, 3+2 et parcours 5 axes) Avoir les mêmes exemples mais écrient à la main , testés sur machine à vide qui permettront de faire un jeu de test.
Vous devez aussi définir quel niveau de complexité vous voulez atteindre 1, 2, 3,4 … 5.

Vous pouvez en parallèle commencer à travailler sur la partie Info et/ou math par exemple comment calculer B et C en fonction de I J K (pour votre machine).
Analyser la structure d'un fichier APT. Etc...

Si vous débutez dans le domaine , il y a déjà pas mal de travail préparatoire avant de se lancer dans le truc. Il faut aussi voir le temps que vous avez pour faire ce travail ( C'est un projet de fin d'étude, un projet d'un mois un stage ???)

Vous pouvez aussi travailler sur la partie décodage de l'APT (A savoir que tous les codes APT ne sont pas identiques, un APT Catia ne sera pas le même qu'un APT Cadds etc ) . Ce que je vous conseil c'est d'utiliser un format intermédiaire : APT -> Votre Format de travail -> ISO ou conversationnel Heidenhain. De cette manière vous isoler les problèmes que vous pouvez rencontrer et vous pouvez aussi plus facilement séparer les tâches . Un s'occupe de l'interface et de la relecture APT vers votre format , l'autre travail sur la partie » Mon format » vers sortie Machine.

Pourquoi utiliser son format ??? : Vous verrez je pense que la sortie APT ne peut pas toujours être traduite Ligne à Ligne ( Une ligne de code APT = Une ligne de Code langage machine) en passant par son format à soi cela permet de s'affranchir de problèmes qui peuvent apparaître selon les cas traités. J'ai pas d'exemple concret mais c'est le souvenir que m'a laissé ce projet.