Post Processeurs

Le format des fichiers Gcode générés peut être contrôlé à l'aide des fichiers de définition des post processeurs. Ces définitions peuvent être crées, copiées et modifiées depuis la section Post Processeurs de l'onglet System.

Le post-processeur utilisé pour un projet spécifique est défini dans les options d'usinage.

Sélectionnez le dossier d'usinage (Machining) dans l'arborescence du projet et regarder dans le groupe Post Processor des propriétés d'usinage.

Si aucun post processeur n'est spécifié, un post processeur interne est utilisé, compatible avec la spécification RS274 NIST tel qu'il est utilisé par de nombreux contrôleurs CNC communs tels que Mach3, EMC et USBCNC.

PostProcessor

Cette option fournis une liste déroulante permettant de sélectionner un des post processeurs disponibles dans le dossier \post.

PostProcessorMacros

Cette option est utilisée pour passer des macro utilisateur au post processeur. C'est un texte multiligne contenant des définitions de macros au format $macro=valeur. Quelques exemples de macros sont donnés ci-dessous.

Si un fichier post processeur est modifié ou si un nouveau est crée en dehors de CamBam, la liste des post processeurs doit être rafraîchie par le menu Tools – Reload Post Processors (Outils – Recharger Post processeur)

Pour définir un post processeur par défaut pour tout nouveau projet, vous devez sauver un fichier projet vide (.cb) dans lequel vous aurez défini le post processeur à utiliser. Dans les options générales (menu Tools – Options) sous la section Divers, vous devrez définir ce fichier comme modèle par défaut dans la propriété DrawingTemplate. (chemin d'accès du fichier) en cliquant sur le symbole qui apparaît après sélection de la ligne pour ouvrir un sélecteur de fichiers.

Les post processeurs sont des fichiers XML avec une extension .cbpp situés dans le sous dossier \post du dossier système de CamBam.

Sections du post processeur

Le fichier XML contient un certain nombre de sections. Chaque section peut contenir un mélange de texte littéral, qui est transcrit directement dans le fichier Gcode de destination, et des macros texte au format ${format}. Les définitions de macros sont définies dans le fichier. cbpp, en interne par le post-processeur, ou en définissant des macros utilisateur dans l'option d'usinage PostProcessorMacros du projet. Les macros sont évaluées et les valeurs texte qui en résultent sont écrites dans le Gcode.

Si des sections de la liste suivante ne sont pas visibles dans les propriétés, assurez-vous que vous êtes en mode Avancé (Advenced) dans l'éditeur de propriétés.

(Main) - PostFile

Cette section définit la structure générale du fichier gcode. Elle comprend généralement trois macros qui sont évalués en interne à partir des règles définies dans d'autres sections du fichier .cbpp

{$header} - Cette macro est évaluée en utilisant la section <header> décrites ci-dessous.
{$mops} - Cette macro est évaluée comme une liste de blocs de texte, un bloc pour chaque opération d'usinage. Chaque bloc est formaté en utilisant les règles de la section <MOP>.
{$footer} - Cette macro est évaluée en utilisant la section <footer> décrites ci-dessous.

Exemple:

%
O{$o}
( MY FANUC POST )
{$header}
G0 X10Y10Z0
{$mops}
{$footer}
%

Note: la valeur de la macro {$o} est passée au post processeur en utilisant la propriété PostProcessorMacro qui contiendra quelque chose comme '$o=1234'.

Le caractère % est écrit littéralement est sera omis si vous n'utilisez pas un programme de transfert de fichiers via le port RS232.

(Main) - Header

Définit les règles utilisées par la macro {$header}.

Exemple:

{$comment} {$cbfile.name} {$date} {$endcomment}
{$tooltable}
{$comment} CUTVIEWER {$endcomment}
{$comment} FROM/0,0,5 {$endcomment}
{$comment} TOOL/MILL,1,0,20.0,0 {$endcomment}
{$comment}STOCK/BLOCK,{$stock_width},{$stock_length},
    {$stock_height},{$stock_x},{$stock_y},{$stock_z} {$endcomment}
{$cbfile.header}
{$units} {$distancemode} {$velocitymode} {$cuttercomp(off)}
{$toolchange(first)}
G54 ( Use fixture 1 )
{$clearance}

Une fois de plus, la propriété PostProcessorMacro est utilisée pour passer la macro {$stock_...} au post processeur qui, dans cet exemple pourrait contenir un texte comme:

$stock_length=150
$stock_width=150
$stock_height=12.7
$stock_x=75
$stock_y=75
$stock_z=12.7

(Main) - Footer

Définit les règles utilisées par la macro {$footer}.

Exemple:

{$clearance}
G28 G91 Z0
G90 G53 X-15.0 Y0.0
M09
{$spindle(off)}
{$endrewind}

(Main) - MOP

Defines how each item of the {$mops} macro is formatted. This information will be repeated in the gcode output for each active machining operation.

Exemple:

{$comment} {$mop.name} {$endcomment}
{$toolchange}
{$velocitymode} {$workplane}
{$mop.header}
{$spindle} {$s}
{$blocks}
{$mop.footer}

Tools - ToolTableItem

Définit comment chaque entrée de la macro {$tooltable} est produite. Les tables d'outils sont généralement insérées dans l'en tête du fichier et contiennent un texte de commentaire décrivant la liste d'outils utilisés dans le fichier Gcode.

Exemple:

{$comment} T{$tool.index} : {$tool.diameter} {$endcomment}

Tools - ToolChange

Définit le formatage de la macro {$toolchange}.

Exemple:

{$clearance}
{$comment} T{$tool.index} : {$tool.diameter} {$endcomment}
{$comment} Tool Radius and Taper coming soon {$endcomment}
{$comment} TOOL/MILL, {$tool.diameter}, {$tool.radius}, 
    {$tool.length}, 0 {$endcomment}
T{$tool.index} M6

G Codes - G0, G1, G2, G3, G81, G82, G83

Ces sections définissent le formatage des fonctions Gcode courantes.

Options - ArcCenterAbsolute

Utilisé dans la macro {$mop.header} pour spécifier ArcCenterMode en mode absolu. (G90.1 sous Mach3)

Options - ArcCenterIncremental

Utilisé dans la macro {$mop.header} pour spécifier ArcCenterMode en mode incrémental. (G91.1 sous Mach3)

G Codes - CutterCompOff, CutterCompLeft, CutterCompRight

[Nouveau 0.9.8h]

Utilisé dans la macro {$cuttercomp(off|L|R)}. Généralement Off=G40, Left=G41, Right=G42.

G Codes - CannedCycleStart

[Nouveau 0.9.8h]

Séquence de codes utilisés au début d'un bloc de cycle de perçage. Généralement G98 pour un retour au niveau initial à la fin du cycle.

G Codes - CannedCycleEnd

[Nouveau 0.9.8h]

Séquence de codes utilisés à la fin d'un bloc de cycle de perçage. Généralement G80.

G Codes - DistanceAbsolute, DistanceIncremental

[Nouveau 0.9.8h]

Généralement absolue=G90, incrémentale=G91. Note! Le mode incrémental n'est pas supporté pour l'instant.

G Codes - UnitsInches, UnitsMM

[Nouveau 0.9.8h]

inches=G20, millimeters=G21.

G Codes - VelocityModeExactStop, VelocityModeConstantVelocity

[Nouveau 0.9.8h]

exact stop=G61, constant velocity=G64.

G Codes - WorkplaneXY, WorkplaneXZ, WorkplaneYZ

[Nouveau 0.9.8h]

XY=G17, XZ=G18, YZ=G19.

G Codes - XModeDiameter

Utilisé dans la macro {$lathexmode} pour spécifier que les valeurs de X sont données en mode diamètre.(G7 sur EMC2).

G Codes - XModeRadius

Utilisé dans la macro {$lathexmode} pour spécifier que les valeurs de X sont données en mode rayon.(G8 sur EMC2).

M Codes - EndRewind

[Nouveau 0.9.8h]

Généralement M30.

M Codes - Repeat

[Nouveau 0.9.8h]

Généralement M47.

M Codes - SpindleCW, SpindleCCW, SpindleOff

[Nouveau 0.9.8h]

Généralement CW=M3, CCW=M4, Off=M5.

M Codes - Stop

[Nouveau 0.9.8h]

Généralement M0.

Moves - Rapid, FeedMove, ArcCW, ArcCCW

Cette section définit le formatage des fonctions Gcode de déplacement.

Exemple:

Rapid
{$g0} {$_f} {$_x} {$_y} {$_z} {$_a} {$_b} {$_c}
FeedMove
{$_g1} {$_f} {$_x} {$_y} {$_z} {$_a} {$_b} {$_c}
ArcCW
{$g2} {$_f} {$_x} {$_y} {$_z} {$i} {$j}
ArcCCW
{$g3} {$_f} {$_x} {$_y} {$_z} {$i} {$j}

Note: Les opérateurs gcode {$g...} et leurs paramètres peuvent être spécifiés en utilisant un préfixe trait de soulignement (_). Il s'agit de montrer les valeurs qui sont modales (persistantes). Elles ne seront écrites dans le code que si la valeur actuelle a changée.

L'omission du trait de soulignement force l'écriture du paramètre.

Canned Cycles - Drill, DrillDwell, DrillPeck

Cette section définit le formatage des fonctions Gcode de cycle de perçage.

Drill
{$g81} {$_x} {$_y} {$_z} {$_r} {$_f}
DrillDwell
{$g82} {$_x} {$_y} {$_z} {$p} {$_r} {$_f}
DrillPeck
{$g83} {$_x} {$_y} {$_z} {$p} {$_q} {$_r} {$_f}

Lathe - LatheXMode

Pour les opérations de tournage, spécifie si les valeurs de X sont fournies en diamètre ou en rayon.

Options - ArcOutput

Détermine le mode de sortie des arcs dans le Gcode. Si a ConvertToLines, de courtes lignes seront utilisées à la place des arcs.

Options - ArcToLinesTolerance

Si ArcOutput=ConvertToLines est utilisé, cette valeur contrôle l'erreur maximum autorisée pour la conversion des arcs en lignes. Une faible tolérance produit des courbes plus lisses mais des fichiers plus gros.

Options - ClearancePlaneAxis

Utilisé pour définir dans quelle direction les déplacements vers le plan de dégagement seront fait. Généralement Z, mais doit être réglé à X ou Z pour les opérations de tournage.

Options - Comment, EndComment

Définit le texte qui sera utilisé au début et à la fin d'un commentaire.

Exemple 1:

Comment: (
EndComment: )

Exemple 2:

Comment: ;
EndComment:

Options - EndOfLine

[Nouveau 0.9.8h]

Séquence de caractère utilisée à la fin d'une ligne. Les codes d'échappement \r et \n peuvent être utilisés.

Options - InvertArcs

Si à true, les arcs en sens horaire seront sortis en arc anti-horaire et vice-versa. Cela peut être utile en usinage de face sur un tour.

Options - MinimumArcLength

Une valeur numérique qui contrôle la précision maximum utilisée pour la génération des déplacements en arcs de cercle (G2, G3). Si la longueur d'un arc est inférieure à la valeur MinimumArcLength un mouvement en ligne droite (G1) est utilisé à la place. Ceci est utile pour les utilisateurs de TurboCNC où des arcs très faibles peuvent causer quelques problèmes qui peuvent apparaître comme des fossettes dans le parcours d'outil.

Exemple:
MinimumArcLength=1e-4

Options - MaximumArcRadius

Une valeur numérique qui contrôle le rayon maximum autorisé pour les déplacements en arc de cercle. Si le de l'arc rayon dépasse cette valeur, un mouvement en ligne droite (G1) est utilisé.

Exemple:
MaximumArcRadius=1e6

Options - NumberFormat

Il s'agit d'un modèle de formatage qui contrôle la façon dont les nombres à virgule flottante sont affichés.

Un caractère dièse (#) désigne un emplacement optionnel pour un chiffre et un caractère 0 représente un chiffre qui sera toujours affiché, en ajoutant des zéros de remplissage si nécessaire.

Cela peut aussi modifier les instructions Gcode nécessaires. Par exemple, si un parcours d'outil contient un passage de X = 1,234 à X = 1,233 et si un format de nombre de #. # 0 est utilisé, aucune instruction de mouvement ne sera écrite dans le Gcode car si elle sont formatées à 2 décimales, ces deux coordonnées sont identiques.

Options - RapidDownToClearance

[Nouveau 0.9.8i]

Si mise à False elle interdira la descente rapide depuis le plan de dégagement.

Options - UpperCase

Si la valeur est à True, le post-processeur convertit tout le texte écrit dans le fichier gcode en majuscules. Ceci est particulièrement utile pour les systèmes Fanuc qui ne supportent pas les caractères minuscules.

Post Build - PostBuildCommand and PostBuildCommandArgs

[Nouveau 0.9.8j]

PostBuildCommand can be used to specify an external application to modify the gcode produced from the post processor.

PostBuildCommandArgs contains any arguments to pass to the application.
The following macros are recognised: {$outfile} is the filename of the raw gcode output.
{$cbfile.name} is the short name of the current CamBam document.

Note: Double quotes should be used in command arguments to avoid problems with spaces in filenames.

Exemple:
PostBuildCommand=C:\bin\gcodelinenums.exe
PostBuildCommandArgs="{$outfile}" "{$outfile}.out"

Les macros du post processeur

$blocks

Cette macro est générée en interne et contient toutes les instructions de déplacement requises par l'Opération d'Usinage actuelle (MOP).

$comment

Insère le texte définit dans la section Commentdu fichier .cbpp.

$cbfile.footer

Insères les options définies dans la propriété CustomFileFooter du dossier d'Usinage du projet (Machining).

$cbfile.header

Insères les options définies dans la propriété CustomFileHeader du dossier d'Usinage du projet (Machining).

$cbfile.name

Insères le nom défini dans la propriété Name du dossier racine du projet.

$check(x,y,z)

Générée en interne, cette macro vérifie les paramètres des coordonnées x, y, z en fonction de l'emplacement actuel de l'outil. Si différentes une séquence de mouvements sera insérée pour se déplacer à la nouvelle position en passant par le ClearancePlane et en utilisant la vitesse de plongée si nécessaire.

$clearance Mouvement rapide (G0) jusqu'au ClearancePlane (Plan de dégagement)
$cuttercomp(off|L|R)

Compensation du rayon d'outil. Note: Pour l'instant, CamBam ne calcul pas la compensation du rayon d'outil.

off (désactivée) = G40
L (gauche) = G41
R (droite) = G42

$date

Insère la date courante.

$distancemode

Toujours égale à G90 pour l'instant

$endcomment

Insère le texte définit dans la section EndComment du fichier .cbpp.

$endrewind

Codé en hard dans le programme = M30.

$footer

Evalue le texte placé dans la section Footer du fichier .cbpp

$g0, $g1, $g2, $g3, $g81, $g82, $g83
$_g0, $_g1, $_g2, $_g3, $_g81, $_g82, $_g83

Ces macros contrôlent la façon dont le Gcode est formaté. Le format de chaque code est tiré de la définition G... du fichier .cbpp. Cela peut être utile pour contrôler le remplissage de zéros (par exemple: G1 au lieu deG01), ou pour utiliser d'autres codes G.

Si le préfixe trait de soulignement ( _ )est utilisé, ces instructions sont supposées être modales (persistantes). Du code sera écrit pour la première occurrence, mais omis pour les blocs suivants s'ils utilisent la même instruction.

$header

Evalue le texte placé dans la section Header du fichier .cbpp

$mop.footer

Insères les options définies dans la propriété CustomMOPFooter de l'Opération d'Usinage courante.

$mop.header

Insères les options définies dans la propriété CustomMOPHeader de l'Opération d'Usinage courante.

$mop.name

Insères le contenu de la propriété Name de l'Opération d'Usinage courante.

$mops

Insère une liste d'objets, une entrée par Opération d'Usinage (MOP) active. Chaque entrée de la liste est formatée en utilisant les définitions de la section MOP du fichier .cbpp

$repeat

Codé en hard dans le programme = M47

$s

Insères les options définies dans la propriété SpindleSpeed de l'Opération d'Usinage courante.(Vitesse de broche)

$spindle

Insère une macro dépendant de la valeur de la propriété SpindleDirection de l'Opération d'Usinage courante.(sens de rotation) Sens horaire (cw) = M3 , Sens anti-horaire (ccw) = M4 , Arrêt (off) = M5

$spindle(off|cw|ccw)

Sens horaire (cw) = M3 , Sens anti-horaire (ccw) = M4 , Arrêt (off) = M5

$stop

Codé en hard dans le programme = M0

$tool.diameter

Insères les options définies dans la propriété ToolDiameter de l'Opération d'Usinage courante. (Ø outil)

$tool.index

Insères les options définies dans la propriété ToolNumber de l'Opération d'Usinage courante. (n° d'outil)

$tool.radius

Utilise la propriété ToolProfile pour déterminer le rayon de l'outil. 0 pour une fraise cylindrique, D/2 pour une fraise à bout rond.

$tool.length

à 0 pour l'instant. Prévu pour une gestion de base de donnée d'outils.

$toolchange

Insère une instruction de changement d'outil basée sur la définition ToolChange du fichier .cbpp

Si le n° d'outil n'a pas changé, aucun code n'est inséré.

$toolchange(first)

Insère une instruction de changement d'outil utilisant le premier outil de la liste d'outil du projet courant.

$tooltable

Insère une liste de tous les outils utilisés dans le projet courant. Chaque entrée est formatée en utilisant la définition ToolTableItem du fichier .cbpp

$units

Utilise la propriété Units du projet. mm = G21, pouces = G20

$velocitymode

Insères l'option définie dans la propriété VelocityMode de l'Opération d'Usinage courante.

Parcours exact = G61 , Vitesse constante = G64

$workplane

Insères l'option définie dans la propriété WorkPlane de l'Opération d'Usinage courante.

XY=G17, XZ=G18, YZ=G19

$x, $y, $z, $a, $b, $c, $i, $j, $f, $r, $p, $q
$_x, $_y, $_z, $_a, $_b, $_c, $_i, $_j, $_f, $_r, $_p, $_q

Ces macros insèrent les paramètres utilisés dans les commandes de déplacement courantes du Gcode.

Si le préfixe trait de soulignement ( _ )est utilisé, ces instructions sont supposées être modales (persistantes). Cela signifie qu'ils ne seront écrits dans le code uniquement si la valeur courante à changée. Omettre le ( _ ) force leur écriture.

$xneg, $yneg, $zneg, ...
[Nouveau 0.9.8h]

Même chose que les macros $x, $_y etc, mais avec inversion du signe.

$xabs, $yabs, $zabs, ...
[Nouveau 0.9.8h]

Même chose que les macros $x, $_y etc, mais toujours positive (valeur absolue).