Gcode文件处理和执行

article/2025/9/17 8:26:32

流程图: 

1:SMC_OutQueue  不带参数>>>SMC_Interpolator  插补算法
2:CMC_CNC_REF 带参数>>>smc_NCDecoder 图型解析>>>ToolCorr  刀补>>>SmoothPath  圆弧>>>checkVelocities  速度
3:File 文件.txt/.cnc/.gcode>>>ReadNCFile 文件解析>>>smc_NCDecoder 图型解析>>>ToolCorr  刀补>>>SmoothPath  圆弧>>>checkVelocities  速度 (最后处理)
SMC_Interpolator  插补算法
SMC_TRAFO_Gantry3      轴组坐标// 这个轴组模型有多种样式
SMC_ControlAxisByPos   电机定位

轴组坐标: 

// O:以理论坐标点反向计算实轴位置
SMC_TRAFO_5Axes (FB)             解析,XYZ,+倾斜+方位(5轴加工中心)
SMC_TRAFO_Gantry2 (FB)           解析,XY轨迹
SMC_TRAFO_Gantry2Tool1 (FB)      解析,XY+刀具距离
SMC_TRAFO_Gantry2Tool2 (FB)      解析,带刀补的XY轨迹
SMC_TRAFO_Gantry3 (FB)           解析,XYZ轨迹(笛卡尔坐标)
SMC_TRAFO_GantryCutter2 (FB)     解析,XYR轨迹(R刀片方位)// 裁纸机
SMC_TRAFO_GantryCutter3 (FB)     解析,XYZR轨迹 //雕核桃机,雕刻鸡蛋
SMC_TRAFO_GantryH2 (FB)          解析H,由XY计算出辅助AB轴位置(皮带串联型龙门)
SMC_TRAFO_GantryT2 (FB)          解析T,由XY计算出辅助AB轴位置
SMC_TRAFO_GantryT2_O (FB)        具有固定驱动器的T型龙门架系统的反向转换(替代驱动器配置)。————————————————
版权声明:本文为CSDN博主「cfqq1989」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cfqq1989/article/details/130835670

  

SMC_NCDecoder (FB)    // 用于加载  CMC_CNC_REF 的实例

接口:
ncprog    SMC_CNC_REF实例,由CNC编辑器创建(如绑定 CNC2)输入:
bExecute    上升沿开始。
bAbort        TRUE,处理中止
bAppend        TRUE,文本追加
bStepSuppress        TRUE,忽略 \\/ ' 文本
piStartPosition        路径的起始位置。
vStartToolLength    开始刀具长度。
nSizeOutQueue         数据缓冲区的大小
pbyBufferOutQueue    SMC_OUTQUEUE结构数组
bEnableSyntaxChecks    检测无效的g代码
eOriConv                定义解释A/B/C单词方向的方式。
dCircleTolerance        过滤圆输出:
bDone        TRUE处理完毕
bBusy        TRUE,忙
bError        错误
wErrorID      错误识别
poqDataOut    SMC_GEOINFO对象
iStatus        当前状态。
iLineNumberDecoded    CNC文件的行号
GCodeText             g代码文本。

 

SMC_ERROR (ENUM)

查看错误:仿真后,鼠标移到错误处,如1259,缓存过小 ,解决如下

b1: ARRAY[0..500] OF SMC_GCODE_WORD;   //读程序缓存
b2:ARRAY [1..500] OF SMC_GEOINFO;       //刀具处理缓存
b3:ARRAY [1..1000] OF SMC_GEOINFO;		//REF
b4:ARRAY [1..1000] OF SMC_GEOINFO;       //kd 
b5:ARRAY [1..100] OF SMC_GEOINFO;

G代码文件》保存到PlcLogic文件内》_cnc文件夹内

_cnc文件夹内》 文件必须要有后缀,如(.txt)  .cnc等等举例   BaiPiao3.txt    test.cnc
N000 G01 X653.718873935723 Y300.00000011946759 F11000 E600000 E-600000 
N010 M10 
N020 G03 I-30 J0 T360 F11000 E600000 E-600000 
N030 M11 
N040 G01 X1685.6174468465749 Y250.00000082461159 F11000 E600000 E-600000 
N050 M10 
N060 G03 I-75 J0 T360 
N070 M11 
N080 G01 X1947.1607807058319 Y300.00000030854062 F11000 E600000 E-600000 
N090 M10 
N100 G03 I-75 J0 T360 F11000 E600000 E-600000 
N110 M11 
N120 G01 X1902.1603955222131 Y-149.9999994683094 F11000 E600000 E-600000 
N130 M10 
N140 G03 I-30 J0 T360 F11000 E600000 E-600000 
N150 M11 
N160 G01 X2477.87813524244 Y-816.40000000000327 F11000 E600000 E-600000 
N170 M10 
N180 G01 X17.999999999999549 F11000 E600000 E-600000 
N190 G01 Y816.40000000000146 F11000 E600000 E-600000 
N200 G01 X2477.87813524244 F11000 E600000 E-600000 
N210 G01 Y-816.40000000000327 F11000 E600000 E-600000 
N220 M11 

SMC_ReadNCFile_0  : SMC_ReadNCFile ;   //(ascii)文件路径 '_cnc/BaiPiao3.txt' 
SMC_NCDecoder_0  // G代码解析
SMC_CheckVelocities_0  //检查速度
//=======================
SMC_Interpolator   //插补算法
SMC_TRAFO_Gantry3  //3轴坐标      SMC_TRAFO_5Axes  //5轴坐标
SMC_ControlAxisByPos // 轴定位x轴当前位置 := SMC_NCDecoder_0.piStartPosition.dX;

//  SMC_CheckVelocities_0.bBusySMC_Interpolator_0    // 插补算法
SMC_TRAFO_Gantry3_0 : SMC_TRAFO_Gantry3 ; // 3轴坐标SMC_ControlAxisByPos_x   // x轴定位
SMC_ControlAxisByPos_y   // y轴定位
SMC_ControlAxisByPos_z   // z轴定位OR

另外PLC可以读取PC的d盘,需要用到sysfile和 文件访问的库函数。

常用函数库名称:SysFile/SysDir/File Access

电子齿轮:主轮:虚轴坐标从轮:(比如X轴)

//==================================================================

 1编程软件

 2添加G代码文件

SMC_OutQueue   1:不带参数的G代码文件
SMC_CNC_REF    2:带刀具参数的G代码文件  解析函数用: SMC_NCDecoder
File           3:G代码文本   文件扩展名: TXT, GCODE, CNChttps://content.helpme-codesys.com/zh-CHS/CODESYS%20SoftMotion/_sm_cnc_edt_basics.html

一般用第2个:    SMC_CNC_REF

 

 可以加载2种文件: .dxf .cnc   格式

 

 如果没有N编号,点击》重新对CNC程序编号

 

SM3_CNC.SMC_NCDecoder就是用来加载对象的。  所以 对象的名字必须一致。
上面用CNC2 命名,那 ncprog 就必须填 CNC2

参考前面的框架图,把CFC搭建好,就能用了。

SMC_GSentenceQueue

SMC_CNC_REF

SMC_NCDecoder (FB)

 

https://content.helpme-codesys.com/zh-CHS/CODESYS%20SoftMotion/_sm_components.html

轴配置,凸轮,CNC数控,轴组机器人

如果使用机械臂,就需要用到轴组,组态好后,调用 SM3_Robotics 这个库

G解释: 

G0

无需工具操作直接移动;直线运动

定位

G1

工具操作的直线运动

直线运动

G2

圆段或圆,顺时针

G3

圆段或圆,逆时针

G4

停留时间

停留时间

G5

二维基数样条的点

样条

G6

抛物线

抛物线

G8

椭圆弧或椭圆,顺时针

椭圆

G9

椭圆弧或椭圆,逆时针

椭圆

G10

3D 基数样条的点

样条

G15

切换到 2D

3D 模式

G16

通过使用法线向量激活 3D 模式切换到 3D I/J/K 到飞机

3D 模式

G17

通过激活 3D 模式切换到 3D X/Y 飞机

3D 模式

G18

通过激活 3D 模式切换到 3D Z/X 飞机

3D 模式

G19

通过激活 3D 模式切换到 3D Y/Z 飞机

3D 模式

G20

条件跳转 L, 如果 K <> 0

G36

写入值 D 变 O

改变变量的值

G37

增量变量 O 按价值 D

改变变量的值

G40

刀具半径补偿结束

预处理

G41

刀具半径补偿开始,行进方向左侧

预处理

G42

刀具半径补偿开始,行进方向右侧

预处理

G43

刀具长度补偿开始。

预处理

G50

末端圆角/平滑

预处理

G51

开始角度平滑

预处理

G52

圆角开始

预处理

G53

结束坐标变换并将解码器坐标系重置为原始位置(=机器坐标系)

移动、旋转和缩放坐标系

G54

坐标的绝对变换

移动、旋转和缩放坐标系

G55

坐标的相对变换

移动、旋转和缩放坐标系

G56

设置 DCS 的当前方向、位置和缩放设置为参考点

移动、旋转和缩放坐标系

G60

循环结束抑制

预处理

G61

循环抑制开始

预处理

G70

平滑附加轴结束

看: SMC_SmoothAddAxes

预处理

G71

开始平滑附加轴

看: SMC_SmoothAddAxes

预处理

G75

与内插器的时间同步

与内插器的时序同步

G90

该坐标 (X/Y/Z/A/B/C/P/Q/U/V/W) 被解释为绝对值。 (这是默认设置。)

模式

G91

该坐标 (X/Y/Z/A/B/C/P/Q/U/V/W) 被解释为相对于当前位置的值。

模式

G92

跳跃定位

模式

G98

轴中点 (I/J/K) 被解释为绝对值。

模式

G99

轴中点 (I/J/K) 被解释为相对于起始位置的值。 (这是默认设置。)

模式


http://chatgpt.dhexx.cn/article/JrRV92j8.shtml

相关文章

GCD简介

1. 什么是GCD GCD,全称是Grand Central Dispatch,它是C语言的API. GCD的核心 : 将block(任务)添加到queue(队列)中. 官方文档的描述: Grand Central Dispatch(GCD)是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现.开发者只需定义想执行的任…

激光雕刻机的位图-GCode转换方法实践

Author:Gary Li Date:2019-5-2 1. 简介 现在有一部分3D打印机带有激光雕刻功能&#xff0c;自己组装一台专用的激光雕刻机也并不复杂成本也很低。但是当我们使用激光雕刻机时&#xff0c;激光雕刻下位机只能接受路径指令&#xff0c;所以我们需要把位图——也就是我们平时最常…

3d打印实用小工具--GCode Viewer在线预览GCODE文件

使用solidworks2018绘制了一个零件 使用simplify3d进行切片 然后点击保存了这个文件。 没想到打印的时候&#xff0c;竟然打印成了这个零件。 原因是拷贝错了文件&#xff0c;而自己切片成功之后的GCode文件也无法预览&#xff0c;最后造成了时间和材料的浪费。 那么怎么需要打…

三轴XYZ平台生成gcode文件

1. 生成gcode坐标文件 gcode文件中保存的是需要绘制图形的路径信息&#xff0c;这里我们采用开源矢量图形编辑软件 Inkscape并通过Unicorn G-Code插件来生成 gcode坐标文件。 将软件资料包\Inkscape.rar 压缩文件解压到电脑上任意磁盘&#xff0c;软件内已安装 Unicorn G-Code插…

GRBL三:gcode代码解析

GRBL三&#xff1a;gcode代码解析 1.G00X_Y_Z_ :快速定位指令&#xff0c;_代表具体数值 可以同时针对X轴Y轴Z轴移动&#xff0c;只快速定位&#xff0c;不切削加工&#xff0c;相当于快速的移动到那个点上去 数值代表绝对位置 2.G01X_Y_Z_F_:直线差补 F指定进给速度mm/min…

3D打印gcode命令大全及解析

*G0&#xff1a;快速移动 *G1&#xff1a;控制移动 坐标轴XYZE移动控制&#xff08;G0和G1一样&#xff09; 例子&#xff1a;G0 F2000 X30 Y30 Z30 E3 *G2&#xff1a;顺时针画弧 *G3&#xff1a;逆时针画弧 此命令有两种形式&#xff1a;IJ-form和R-form。I指定了X偏移…

GCode软件使用说明书

欢迎使用GCode软件&#xff0c;本软件仅为辅助生成G代码软件...... 操作说明&#xff1a; 1、打开软件GCode.exe&#xff0c; &#xff08;1&#xff09;点击“文件”即可选择“新建”、“打开”、“保存”等功能&#xff0c;或者点击主界面快捷键&#xff1b; &#xff08;…

在 VS Code 中阅读 G-code 及 3D 打印机 gcode 常用指令介绍

1. 在 VS Code 中阅读 G-code 直接以文本格式在 VS Code 中打开 .gcode 文件&#xff0c;会发现没有语法高亮。 安装插件实现语法高亮和悬浮显示命令解释。 1.1 安装插件「G-Code」 1.2 配置 settings.json 文件 1.2.1 打开 VS Code 设置(快捷键&#xff1a; Ctrl 逗号) 1…

二分图最大匹配及匈牙利、HK算法

二分图最大匹配 在二分图中&#xff0c;最大匹配是指选出尽可能多的边使得任意两边没有公共端点。 增广路 设 M M M为二分图 G G G已匹配的边的集合&#xff0c;若 P P P是图 G G G中一条连接两个未匹配顶点的路径&#xff08;起点终点分别在两个集合&#xff09;&#xff0…

用最大流解决二分图最大匹配 Bipartite Matching

有A B C三个老师&#xff0c;D E F三门课&#xff0c;A能教E, B能教D和F&#xff0c;C能教D和E。要求每个老师只能教一门课&#xff0c;求分配方案。 这是一个典型的二分图最大匹配问题&#xff0c;二分图是只graph的顶点可以分为两部分&#xff0c;每部分内部顶点直接无连接&…

二分图最大匹配-匈牙利算法

今天介绍 匈牙利算法 &#xff1a; 匈牙利算法&#xff0c;是基于Hall定理中充分性证明的思想&#xff0c;它是部图匹配最常见的算法&#xff0c;该算法的核心就是寻找增广路径&#xff0c;由匈牙利数学家Edmonds于1965年提出&#xff0c;因而得名。 先介绍一下增广路径&#x…

求解分配问题(二) 二分图最大匹配算法

我的前一篇文章介绍了对于分配问题的Kuhn-Munkre算法&#xff0c;该算法其实可以看作是邻接矩阵形式的匈牙利算法&#xff0c;如果更抽象地看这个算法&#xff0c;它可以看成是一个二分图匹配算法的变体算法&#xff0c;具体的说&#xff0c;是二分图最大权重匹配算法。我打算也…

二分图最大匹配(匈牙利算法,Dinic网络流算法)

二分图最大匹配 二分图最大匹配问题: 有两个集合A,B,两个集合间有多条边连接集合中的点,且单个集合中的点各不相连,求两集合的点能两两配对的最大匹配数. (参考:)二分图最大匹配——匈牙利算法 匈牙利算法: A集合记录各点与B集合相连的点,B集合记录某点与A集合中匹配的点.遍历…

二分图最大匹配与最大独立集

一.概念部分 1.什么是二分图&#xff1f; 通俗的说法&#xff1a;就是可以把图分成两部分&#xff0c;每一部分任意两点之间没有关系&#xff08;同一部落&#xff09;&#xff0c;两部分之间点可能存在多种关系。 2.怎么判断二分图&#xff1f; &#xff08;1&#xff09;…

二分图最大匹配及最大权匹配

二分图最大匹配学习 一.二分图的基本知识二.二分图最大匹配什么是二分图最大匹配怎么求二分图最大匹配 三.二分图最大权匹配四.例题训练三.最小点覆盖数 一位大佬的神级解释 本以为有了网络流&#xff0c;就不用再学匈牙利了&#xff0c;但在做题的过程中&#xff0c;发现有些…

二分图最大匹配问题(匈牙利算法)

什么是二分图 如果一个无向图的的顶点可以分为两个互不相交的子集A和B&#xff0c;那么它就是二分图。也就是说&#xff0c;A、B内部不存在连边&#xff0c;所有连边都一头连着A中的顶点&#xff0c;另一头连着B中的顶点。 什么是二分图最大匹配&#xff1f; 二分图最大匹配…

二分图 二分图最大匹配

首先来说一下什么是二分图。 二分图 二分图又称作二部图&#xff0c;是图论中的一种特殊模型。 设G(V, E)是一个无向图。如果顶点集V可分割为两个互不相交的子集X和Y&#xff0c;并且图中每条边连接的两个顶点一个在X中&#xff0c;另一个在Y中&#xff0c;则称图G为二分图。…

二分图最大匹配(最大流)

先举个例子&#xff0c;有N台计算机和K个任务&#xff0c;每个计算机只能执行一个任务&#xff0c;但可以执行多种任务。现在给出N和K&#xff0c;和其关系&#xff0c;求出最多能处理的任务数。 这就是典型的二分图&#xff0c;整张图被分为两半&#xff0c;一半是电脑&#…

图论总结(一)二分图最大匹配

二分图最大匹配 (一)、二分图 1、定义2、性质3、判定(二)、二分图的匹配 1、二分图的最大匹配2、 Knig定理及其证明3、最小边覆盖与最大独立集(三)、增广路径 1、定义2、性质3、寻找增广路(四)、匈牙利算法 1、找增广路经的算法2、实践3、算法分析(五)、例题 1、最小…

二分图的最大匹配

一、概念&#xff1a; 二分图&#xff1a;简单来说&#xff0c;如果图中点可以被分为两组&#xff0c;并且使得所有边都跨越组的边界&#xff0c;则这就是一个二分图。准确地说&#xff1a;把一个图的顶点划分为两个不相交集 U 和V &#xff0c;使得每一条边都分别连接U、V中的…