Aller au contenu
CADCAMFUN
Docs

Documentation

CAM et G-code

Générez des parcours d'outils, post-machinez des programmes, rejouez les CN émises et inspectez les preuves attachées à chaque résultat.

Traduit automatiquement de l'anglais. Voir l'original en anglais

De la géométrie à un programme

@cadcamfun/core expose les fonctionnalités de fabrication sous cam. Les générateurs d'opérations transforment les paramètres de géométrie et d'usinage en mouvements de parcours d'outil. Les publications transforment un programme neutre en machine en texte de contrôleur. L'adaptateur générateur prend également en charge les requêtes de fraisage, de tour et d'imprimante 3D utilisées par le formulaire de candidature.

Le noyau de fabrication natif ajoute un pipeline ordonné : préparer la pièce et les ressources, planifier ou accepter des opérations, calculer les données de coupe, générer un mouvement, émettre un programme CN, rejouer cette CN indépendamment et joindre des preuves. Le texte généré, un programme analysé et un artefact de fabrication vérifié sont des résultats différents avec des garanties différentes.

Émettre un programme existant
import { cam } from "@cadcamfun/core"

const post = cam.getPost("fanuc")
if (post === undefined) throw new Error("Post is unavailable")
const nc = post.emit(program, { decimals: 3, tolerance: 0.01 })

Représentation du parcours d'outil

Un programme contient des parcours d'outils ordonnés, chacun associé à un identifiant d'outil et à une liste de mouvements. Les coordonnées sont en millimètres, les avances de coupe sont en millimètres par minute et les durées sont en secondes. La profondeur de coupe est négative en Z par rapport au sommet du matériau dans les coordonnées d'opération conventionnelles. Les publications convertissent les unités de sortie sans modifier la convention de domaine.

Les mouvements sont Rapid, Linear, Arc, Dwell, Comment, Cycle, et Orient. Les centres des arcs sont des coordonnées XY absolues ; un poste calcule les décalages I/J relatifs au contrôleur. La correspondance des coordonnées XY de début et de fin indique un cercle complet. Un cycle conserve l'intention de percer, de s'arrêter, de piquer ou de briser les copeaux avec son plan de retrait et son avance.

Les champs rotatifs sur les mouvements linéaires et rapides expriment un mouvement d'axe simultané ; Orient exprime un positionnement indexé. Ces champs angulaires utilisent des degrés. Un dialecte qui ne peut pas prendre en charge le mouvement rotatif rejette un tel programme au lieu de supprimer ses champs rotatifs.

Opérations et API du générateur

La bibliothèque d'opérations comprend des profils, des poches, des perçages, des surfaçages, des gravures, des usinages de surfaces, des restes, des filetages, des chanfreinages, des usinages adaptatifs et la génération multiaxes. Chaque opération expose son contrat de paramètres et sa fonction de génération pure. Les dimensions de l'outil, les limites de profondeur, le jeu, les avances et la géométrie doivent satisfaire aux règles de validation de l'opération.

POST /api/toolpaths/generate accepte les paramètres du générateur, la géométrie et les extras et retours d'imprimante gcode, cycles, warnings, stats, program, et normalement générer des preuves. Une requête valide qui ne peut pas générer de programme renvoie 400 avec la raison ; un échec de calcul inattendu devient 500. La génération n'enregistre pas de parcours d'outil.

/api/toolpaths/suggest dérive les paramètres pilotés par les éléments, les commentaires, les statistiques de coupe, le texte de l'opération et les avertissements. /api/toolpaths/parse interprète le code G fourni en mouvements et statistiques du programme. Les suggestions et l'analyse n'établissent pas qu'un programme est sûr ou géométriquement correct.

Dialectes du contrôleur

Le registre intégré implémente generic, fanuc, grbl, et haas. linuxcnc est un identifiant de publication reconnu sans implémentation dans ce registre ; getPost peut revenir indéfini. Résolvez et vérifiez le message avant de l'appeler.

Les publications partagent un émetteur avec un formatage décimal fixe, une désinfection des commentaires, des changements d'outils, une gestion des arcs, une numérotation de ligne facultative et une extension de cycle. Les valeurs par défaut sont trois décimales, les cycles fixes activés, les arcs IJK, l'en-tête activé et la tolérance de 0,01 mm. Les formats d'arc non pris en charge dépendent des formes et de la linéarisation prises en charge par le dialecte.

toolNumbers mappe les identifiants d’outils sur des poches entières positives explicites. Les outils non mappés utilisent la numérotation de première utilisation tout en évitant les numéros occupés. retractBeforeToolChange est une option d'adhésion ; il élève Z à la position la plus élevée atteinte par le programme avant un changement d'outil. L'émission de sous-programmes est également facultative et dépend de la prise en charge du dialecte. Vérifiez la sortie du contrôleur sélectionné et la configuration de la machine avant son utilisation en production.

Des parcours d'outils répétés peuvent être émis en tant que sous-programmes. Un parcours d'outil est qualifié lorsque, après son mouvement de positionnement, son mouvement est le mouvement d'un autre parcours d'outil traduit dans 5 × 10⁻⁶ mm, avec les mêmes types de mouvement, avances et sens d'arc. Chaque groupe a besoin d'au moins six mouvements corporels et doit sauvegarder au moins douze mouvements au total. Les parcours d'outils avec des cycles prédéfinis ou des mots rotatifs ne sont jamais candidats (packages/core/src/cam/post/subprograms.ts).

Niveaux de fabrication et de sortie natifs

POST /api/toolpaths/manufacture accepte CamKernelRequest, un instantané CAO version 1 avec l'identité, le matériau, la machine facultative, le stock, les outils, les opérations, les contrôles qualité et le décalage de travail. Les opérations manquantes appellent le planificateur ; les outils manquants utilisent le berceau de coupe par défaut. Une saisie non prise en charge, un matériau ou un outil inconnu, une géométrie de pièce vide, un stock non valide et un travail imprévisible renvoient des problèmes explicites.

Le noyau calcule les avances par opération, la vitesse de broche, l'engagement, les estimations de puissance et de force, les avertissements, le temps et le volume retiré. Il publie un programme et interprète indépendamment son NC émis. L'artefact conserve le programme, les outils de découpe, le texte CN, les statistiques de stock, les résultats des opérations, les résumés d'identité, les réclamations et les problèmes.

release est blocked, preview, ou verified-program. Pannes matérielles ou libération de bloc CN vide. La vérification nécessite que les réclamations pertinentes soient acceptées ; la règle de publication actuelle autorise des preuves non étayées de déplacements de machines tout en marquant le programme comme vérifié. Inspectez chaque réclamation, y compris les statuts non étayés et non résolus, avant de décider si les preuves couvrent la machine concernée.

Les réclamations couvrent les données de coupe, les limites de la machine, les opérations terminées, le dégagement rapide, le dégagement du support, le gougeage, l'enlèvement de matière, la relecture CN, le déplacement de la machine et le dégagement de la machine. Les preuves sont liées à la NC de l'artefact et à l'identité de la source. La modification d'une CN ou la modification d'une configuration source invalide cette connexion à moins que le travail ne soit réévalué.

La vérification par relecture et ses limites

POST /api/toolpaths/verify relit soit le code G, soit un programme par rapport au stock aligné sur l'axe. Fournissez exactement une source de mouvement, un outil et des limites de stock. Les luminaires optionnels sont des enveloppes alignées sur les axes ; Les solides ou les maillages cibles en option permettent des comparaisons de gouge et de stock restant. Les dimensions manquantes de la flûte, de la tige, de la saillie ou du support laissent les contrôles correspondants non modélisés.

Le vérificateur échantillonne le mouvement dans un champ de hauteur et renvoie les problèmes, les statistiques de suppression, les longueurs d'engagement/coupe aérienne et un aperçu de l'affichage. La tolérance par défaut est de 0.05 mm. La résolution par défaut dépend du diamètre de la fraise et peut être augmentée pour s'adapter au budget de calcul ; ResolutionCoarsened rapports qui changent. La résolution de la grille limite les preuves géométriques que le résultat peut prendre en charge.

Un résultat avec ok: true n'a aucun problème de gravité des erreurs. Sans cible, il ne peut pas établir la précision de la pièce finie ; sans fixations ni géométrie de support, il ne peut pas établir leur jeu. La relecture et les vérifications machine intégrées au noyau ajoutent des preuves spécifiques à sa tâche capturée, tandis que la vérification autonome reflète uniquement la requête fournie.

Carte de mise en œuvre

cam/ir.ts est propriétaire des déménagements et des contrats de programme ; operations/ possède des générateurs de stratégie ; post/ possède un contrôleur d'émission ; generator/ adapte les paramètres de l'application et analyse le texte ; model/ construit la géométrie des pièces ; verify/ possède une relecture en hauteur ; kernel/ possède l’orchestration et les preuves de la fabrication. setup.ts et indexing.ts fournir une validation du cadre de travail et des transformations de tables indexées.

L'enregistrement de documents, la vérification de l'accès aux dessins et la conservation des preuves sources appartiennent aux services sidecar. Voir Configurations pour les documents d'exploitation portables et les contrôles de persistance.

Profondeurs, hauteurs, avances et valeurs par défaut

Les paramètres de fonctionnement du noyau distinguent la profondeur de coupe positive des plans Z absolus. totalDepth et stepdown sont nécessaires des longueurs finies positives ; une profondeur de 5 mm avec un abaissement de 2 mm produit des passes à 2, 4 et 5 mm en dessous du sommet. Les valeurs par défaut s'appliquent uniquement lorsqu'un champ est manquant, donc un zéro explicitement autorisé est conservé.

ChampPar défaut / unitéSignification
clearanceHeight10 mmAvion utilisé pour un positionnement rapide et clair.
safeHeight5 mmHauteur d'entrée/sortie d'alimentation de fonctionnement.
retractHeight2 mmHauteur de stationnement entre les passages ; zéro peut être valide.
feed / plungeFeed800 / 300 mm/minAvances positives de coupe et de plongée.
spindleRpm / coolant10,000 / offBroche au niveau de fonctionnement et intention du liquide de refroidissement.

Les hauteurs doivent satisfaire au dégagement ≥ sécurité ≥ rétraction. Les valeurs par défaut du profil sont la compensation extérieure, la direction de montée, la tolérance de finition nulle, l'entrée directe, l'ajustement de l'arc et la tolérance de 0,01 mm. L'angle de la rampe est par défaut de 3° et accepte 0.1–45° ; Le pas d'hélice est par défaut de 1 mm par tour. Un côté et une surépaisseur déclarés déplacent la trajectoire du centre de l'outil, plutôt que de modifier le contour source.

Ce sont de purs paramètres par défaut de fonctionnement. Les paramètres du générateur d'application et les données de processus dérivées des matériaux du noyau natif sont des couches de paramètres distinctes ; ne supposez pas les mêmes noms de champs ou les mêmes valeurs par défaut entre eux.

Source: packages/core/src/cam/params.ts et operations/profile.ts.

Le fraisage de filetage utilise les hauteurs de profil de base ISO 68-1 : 0.54127 × pas pour les filetages internes et 0.61343 × pas pour les filetages externes (packages/core/src/cam/operations/thread.ts). La visionneuse de parcours d'outil suppose 500 mm/min pour les mouvements de coupe sans avance et 1,000 mm/min pour les rapides lors du chronométrage d'une animation ; ce sont des hypothèses de lecture, pas des estimations de la machine.

Rejouer un petit programme CN

Cet exemple en mémoire découpe une fente droite de 4 mm de large et 3 mm de profondeur à travers un modèle de stock de 40 × 40 × 10 mm. Il exerce le même vérificateur principal utilisé par le point de terminaison HTTP sans enregistrer de parcours d'outil.

Inspecter les enlèvements de matière et les collisions
import { cam } from "@cadcamfun/core"

const report = cam.verify.verifyToolpath({
  gcode: "G21\nG90\nG0 X-10 Y0 Z5\nG0 Z0\nG1 Z-3 F200\nG1 X10 F400\nG0 Z5\nM30",
  stock: { minX: -20, maxX: 20, minY: -20, maxY: 20, minZ: -10, maxZ: 0 },
  tool: { kind: "endmill", diameter: 4 },
  fixtures: [], tolerance: 0.05, resolution: 0.25
})
console.log(report.ok) // true for this stock/tool model
console.log(report.stats.removedVolume)
console.log(report.issues)

Changer le plongeon en G0 Z-3 produit un RapidInMaterial découverte. L'ajout d'une longueur de coupe courte ou de dimensions de support peut introduire des résultats de tige/support que la demande initiale ne pouvait pas tester. La fourniture de la géométrie cible ajoute une comparaison des pièces finies ; cet exemple ne fait aucune déclaration sur une cible ou des appareils.

Le vérificateur budgétise au maximum 2,500,000 cellules de grille et 3,000,000 échantillons de chemin, avec un budget de travail de 80,000,000. Les demandes peuvent être réduites pour respecter ces limites. Le stock d’aperçu est sous-échantillonné pour l’affichage, de sorte que ses pixels ne constituent pas un deuxième résultat de vérification plus fin.

Source: packages/core/src/cam/verify/verify.ts et verify/verify.test.ts.

Lors de la relecture d'un texte qui appelle des sous-programmes, l'interprète suit M98 imbriquant jusqu'à huit niveaux de profondeur et arrête le déroulement aux lignes 2,000,000, de sorte qu'un grand nombre de répétitions ne peut pas épuiser la mémoire (packages/core/src/cam/subprogram-text.ts).

Lire un artefact ayant échoué ou un aperçu

Un problème de noyau inclut un tag, severity, stage, message, and optional operation ID, NC line, and point. Follow that stage to the input that caused it: preparation checks stock/material/tools; planning selects strategies; cutting-data checks process limits; generation creates motion; posting writes the controller format; replay/evidence checks the resulting bytes.

  • NoSuitableTool ou UnknownTool: inspectez l'ID de la fraise sélectionnée et les limites géométriques, y compris le diamètre, la longueur de la cannelure, la saillie et la bibliothèque de fraises fournie.
  • RapidInStock ou HolderCollision: localisez l'opération/le point signalé et inspectez l'entrée, les rétractations, le stock et le dégagement du support/table. L'augmentation de l'avance de coupe ne répare pas un rapide dangereux.
  • Gouge: vérifiez le côté du contour, les niveaux supérieur/inférieur, la surépaisseur de finition et la géométrie cible. Le noyau teste un profil intérieur de la partie extérieure comme un véritable échec de relecture.
  • RemainingStock: inspectez les coins inaccessibles, le rayon de l'outil, la stratégie de finition et la résolution de vérification avant d'interpréter le volume restant.
  • ReplayMismatch: traiter le mouvement publié et son IR revendiqué comme incohérents et régénérer à partir du travail capturé.

Les préréglages de machine représentent des classes typiques, et non des machines mesurées. Les ID de préréglage d'instantané disponibles sont vmc-standard, haas-vf2, hsc-mill, desktop-mill, et cnc-router. Le premier est celui par défaut. Inspectez le déplacement réel de la machine et les preuves de dégagement au lieu de les déduire du nom d'affichage d'un préréglage.

Source: packages/core/src/cam/kernel/execute.ts, machines.ts, et kernel.test.ts; les champs de problème de fil sont dans packages/api/src/cam-kernel.ts.

Générez une poche et publiez-la

La couche CAM est un pipeline de fonctions pures : la géométrie et les paramètres entrent dans une opération, l'opération renvoie un Toolpath de mouvements de représentation intermédiaire (RI), un Program regroupe les parcours d'outils et un post-processeur transforme le programme en texte spécifique au dialecte. Rien avant la publication ne connaît les mots du code G, donc le même parcours d'outil peut être émis pour GRBL, Fanuc, Haas ou le dialecte générique.

pocket.ts - complet, exécutable avec un chignon
import { cam } from "@cadcamfun/core"

const tool = { id: "t6", name: "6 mm flat end mill", kind: "endmill",
               diameter: 6, flutes: 3, maxRpm: 18000 }
// 60 × 40 × 10 mm block; its top face is at origin.z (Z = 0)
const stock = { x: 60, y: 40, z: 10, origin: { x: 0, y: 0, z: 0 },
                material: "aluminium-6061" }

const params = new cam.PocketParams({
  name: "Pocket 30x20",
  totalDepth: 3,   // mm below the stock top
  stepdown: 1.5,   // two levels: -1.5 and -3.0
  entry: "ramp",   // default is "helix"
})

const ring = [{ x: 15, y: 10 }, { x: 45, y: 10 }, { x: 45, y: 30 }, { x: 15, y: 30 }]
const pocket = cam.generatePocket(params, ring, tool, stock)

const program = { name: "pocket-demo", units: "mm", workOffset: "G54",
                  toolpaths: [pocket] }
const gcode = cam.getPost("grbl")!.emit(program)
console.log(gcode)
Parcours d'outil de poche : 30 × 20 mm, 3 mm de profondeur, Ø6 fraise en bout Faites glisser vers l'orbite · faites défiler pour zoomer · faites glisser vers la droite pour effectuer un panoramique
The moves generated by the example below, drawn in machine coordinates. Dashed amber lines are rapids (G0); green lines are feed moves (G1). Watch the ramp entry spiral down at the start of each 1.5 mm level, then the offset rings work outward (order insideOut). The translucent block is the 60 × 40 × 10 mm stock, whose top face is Z = 0.
Sortie (GRBL, 85 lignes, élidée au milieu)
(PROGRAM: pocket-demo)
(UNITS: MM)
(WORK OFFSET: G54)
(OP 1: Pocket 30x20 | T1 [t6] | S10000 | F300-800)
G21 G90 G17 G94
G54
(OPERATION: Pocket 30x20)
(TOOL T1)
M3 S10000
(Pocket: Pocket 30x20)
G0 X30.000 Y21.000 Z10.000
Z5.000
Z2.000
Z1.000
G1 X36.000 Z0.732 F300
Y19.000 Z0.643
X24.000 Z0.107
Y21.000 Z0.018
X30.000 Z-0.250
X36.000 Z-0.518
Y19.000 Z-0.607
X24.000 Z-1.143
Y21.000 Z-1.232
X30.000 Z-1.500
...
(the second level repeats the ramp from Z-1.500 to Z-3.000)
...
X18.000
Y27.000
G0 Z2.000
Z10.000
M5
M2

Lecture du résultat par le haut : les commentaires d'en-tête répertorient le programme, les unités, le décalage d'origine et un résumé par opération (numéro d'outil, ID, vitesse de broche et plage d'avance). G21 G90 G17 G94 sélectionne les millimètres, les coordonnées absolues, le plan XY et l'avance par minute. GRBL n'a pas de changeur d'outils, donc le premier outil est annoncé sous forme de commentaire et les changements d'outils ultérieurs deviennent (CHANGE TO TOOL Tn) suivi de M0. The pocket starts with rapids down through clearance (10), safe (5), and retract (2) heights, then ramps at the 300 mm/min plunge feed. Once the ramp reaches depth it switches to the 800 mm/min cutting feed. The program ends with M5 (arrêt de la broche) et M2.

La géométrie vide est signalée, non ignorée silencieusement

Si la région n'est pas une frontière fermée, l'opération émet le commentaire (nothing to cut: no closed boundary) et aucun mouvement. Passez les points de sonnerie comme { x, y } objets. Recherchez ce commentaire dans les programmes générés lorsqu'une opération ne produit aucune coupe.

Paramètres de fonctionnement et valeurs par défaut

La classe de paramètres de chaque opération étend les mêmes champs communs. Les hauteurs sont des valeurs Z absolues et doivent satisfaire au jeu ≥ sécurité ≥ rétraction ; le schéma rejette tout le reste. Les profondeurs sont des distances positives en dessous du dessus du stock ; la dernière passe est coupée à totalDepth.

Champ communDéfautSignification
id, nameoperation, OperationIdentité affichée dans les commentaires et les résumés.
clearanceHeight10Hauteur pour les déplacements entre les opérations.
safeHeight5Hauteur pour les déplacements entre régions.
retractHeight2Hauteur avant plongée/alimentation.
totalDepthrequisProfondeur positive sous le dessus de la crosse.
stepdownrequisProfondeur positive par passe.
feed800Avance de coupe, mm/min.
plungeFeed300Avance pour la plongée et le ramping, mm/min.
spindleRpm10000Vitesse de broche.
coolantoffMode liquide de refroidissement.
OpérationChamps spécifiques (par défaut)
Pocketstepover 40 (% du diamètre, 1–100), allowance 0, finishPass fAUX, climb vrai, entry helix | ramp | plunge, order insideOut | outsideIn, helixPitch 1, helixRadius 0 (= rayon de l'outil), rampAngle 3° (0.1–45), tolerance 0.01, toolCentre fAUX.
Profileside outside | inside | onLine, climb vrai, allowance 0, leadIn direct | ramp | helix | arc, helixPitch 1, helixRadius 0, leadRadius 2, rampAngle 3°, tabs [] (chaque onglet : position 0–1 le long du chemin, width, height), arcFit fAUX, tolerance 0.01.
DrillNon stepdown ou feed. peck 0 (un seul coup), chipBreak fAUX, dwell 0 p. Les cycles de débourrage maintiennent un jeu de 0,5 mm au-dessus de la dernière profondeur et les retraits de brise-copeaux sont de 0,5 mm.
Facestepover 60, overshoot 0 (= rayon d'outil + 1 mm), alongX vrai, tolerance 0.01.
Engravetolerance 0.01.
ThreadFraisage de filetage ; profondeur du profil 0.54127 × pas interne et 0.61343 × pas externe.
Adaptive, repos, surface, chanfrein, multi-axesAutres stratégies exportées à partir du même module ; chanfrein ajoute tipOffset 0.2 et lead 1.

Construire des paramètres avec new cam.PocketParams({ ... }) (ou la classe correspondante) afin que les valeurs par défaut soient appliquées et que les contraintes soient vérifiées une fois. Chaque opération est également exportée par paire, par exemple cam.Pocket = { Params, generate }, pour le code distribué par type d'opération.

Post-processeurs et options de sortie

Les messages sont enregistrés par pièce d'identité dans cam.posts et j'ai levé les yeux avec cam.getPost(id). Le linuxcnc L'ID est réservé mais n'est pas implémenté, donc getPost("linuxcnc") retours undefined. Vérifiez cela avant d'appeler emit.

PosteCycles en conserveUnité de séjourAxes rotatifsChangement d'outilCadre du programme
genericouisecondesouiTn M6aucun
grblnon (étendu aux mouvements)secondesrefusécommente, alors M0 pauseaucun
fanucouimillisecondesouiTn M6 + G43 Hn% / O####, sous-programmes
haasouimillisecondesoui, G234 TCPTn M6 + G43 Hn% / O####, sous-programmes

Tous les quatre acceptent les arcs comme ijk ou radius; linearize est toujours possible. Un programme dont les mouvements comportent des angles de rotation est rejeté par GRBL plutôt que de perdre silencieusement les angles.

option d'émissionDéfautEffect
decimals3Chiffres après la virgule.
lineNumbersdésactivé{ start, step } écrit N mots, par exemple N10, N20.
useCannedCyclestrueÉmettez des cycles de forage là où le dialecte les contient.
arcModeijkijk, radius, ou linearize.
headertrueÉcrivez l’en-tête du commentaire descriptif.
tolerance0.01Tolérance de corde lorsque les arcs sont linéarisés.
toolNumberscommande de première utilisationCarte de l'ID de l'outil vers la poche du carrousel. Les entrées manquantes conservent la numérotation de première utilisation sans entrer en collision avec les pochettes explicites.
retractBeforeToolChangedésactivéRelever Z jusqu'au point le plus haut atteint avant un changement d'outil.
stampabsentCachet d'en-tête. Laissez-le de côté pour une sortie déterministe.
subprogramsdésactivéÉcrivez une fois des parcours d'outils répétés et traduits en tant que sous-programme incrémentiel (Fanuc et Haas).
Même programme pour une commande Fanuc avec numéros de ligne
const text = cam.getPost("fanuc")!.emit(program, { lineNumbers: { start: 10, step: 10 } })
// %
// O1000
// (PROGRAM: POCKET-DEMO)          comments are upper-cased
// ...
// N10 G21 G90 G17 G94 G40 G49 G80
// N20 G54
// N30 T1 M6
// N40 G43 H1
// N50 M3 S10000

Octet identique par défaut

Les options qui modifient la sortie (retrait de changement d'outil, sous-programmes, tampons) sont désactivées par défaut, donc la régénération d'une requête stockée produit un texte identique. Le cam/gcode l’étape du workflow s’appuie sur cela pour détecter les programmes obsolètes.

Avant d'envoyer un programme à une machine

  1. Confirmez le brut : sa taille, l'origine de son coin minimum, et que sa face supérieure soit à origin.z. Chaque profondeur est mesurée à partir de cette face.
  2. Vérifiez les hauteurs par rapport aux luminaires. Les hauteurs de dégagement, de sécurité et de retrait sont des valeurs Z absolues dans le décalage d'origine.
  3. Choisissez le poste du contrôleur actuel et confirmez qu'il est implémenté (getPost a renvoyé un message).
  4. Rejouez le programme avec vérification et lisez chaque numéro. Ne considérez pas l’absence de commentaire d’erreur comme une preuve.
  5. Si le texte CN a été modifié manuellement, régénérez-le ou revérifiez-le. Les preuves calculées pour le texte original ne s'appliquent plus.
  6. Exécution à sec de la machine au-dessus de la pièce avec une avance réduite, comme vous le feriez pour tout nouveau programme.

Le code généré n'est pas une garantie de la machine

Le noyau et les publications vérifient la géométrie, les limites et les règles de dialecte qu'ils connaissent. Ils ne connaissent pas vos montages, la longueur des outils ou l'état de la machine. Un programme vérifié constitue une preuve et non une garantie d'une coupe sûre.

Revendications de preuves du noyau natif

Outre les générateurs présentés ci-dessus, le noyau natif renvoie un artefact avec dix revendications. Chacun est passed, failed, unsupported ou unresolved, avec une chaîne de détail. Le niveau de version les résume : blocked, preview ou verified-program.

RéclamerExemple de statutDétail renvoyé par le noyau
cutting-datapasséChaque opération s'exécute aux données de coupe calculées pour l'acétal POM-C (Delrin) et son coupeur
machine-limitspasséVitesse de broche, avance, puissance, couple et déflexion de la fraise dans les limites
operations-completepassé3 opérations générées ; chaque fonctionnalité planifiée a une opération
no-rapid-in-stockpasséAucun mouvement rapide ne touche le titre tel que rejoué
holder-clearancepasséLa tige et le support restent à l'écart du stock (relecture du champ de hauteur de l'axe 3)
no-gougepasséPas de coupe en dessous de la pièce au-delà de 0.030 mm (une cellule de jeu latéral)
material-removedpasséLe brut rejoué correspond à la pièce dans un rayon de 0.110 mm
nc-replaypasséInterpréter 3035 mouvements NC indépendamment du poteau ; les étendues conviennent dans un délai de 2.0e-3 mm
machine-travelnon pris en chargeLa machine n'a pas de limites de déplacement configurées
machine-clearancepassé3035 mouvements vérifiés ; le support et la tige restent à au moins 6.500 mm de la table

Les lignes sont le résultat réel du flan POM dans le guide de fabrication natif : 3 opérations, 3071 lignes CN, libération verified-program. Le poste machine de l'artefact peut également être linuxcnc dans le schéma, mais aucune publication LinuxCNC n'est implémentée, donc les préréglages ne l'utilisent pas.