大型 G 代码文件的预处理
这个 CNC15_LargeGCode.project 示例项目位于的安装目录中 CODESYS 下面 ..\CODESYS SoftMotion\Examples。
该示例项目显示了如何处理大型 G 代码文件。由于超大文件在 CAD/CAM 系统的输出中特别常见,因此本案例以示例为例
CAD/CAM 系统通常生成包含数十万行的 G 代码文件。它们由非常短的线性段组成(G1),通常在 100 微米到一毫米之间。这些短的线性段描绘工件的轮廓。它们不能形成一条平坦的道路。切线通常在线性段之间跳转
该示例说明如何在恒定的内存要求下高效地读取这些大文件,以及如何在由这么多短线性段组成的路径上实现平滑的速度曲线。在预处理 G 代码时重建了工件的原始轮廓
应用程序的结构
该结构是数控应用的典型结构。G 代码在后台任务中读取PathTask),路径预处理也在这里进行。插值是在总线任务中执行的 (MainTask)。
读取大文件
为了缩短 G 代码处理开始时的延迟,在后台任务中使用了循环。为简单起见,使用计数器来表示中止条件。根据应用程序、G 代码和 PLC 性能,其他中止条件(例如计时器)可能有用。当路径队列已满时,循环将在达到此中止条件之前结束
// Set this value depending on your other tasks, PLC performance, and G-Code counter := 25; WHILE counter > 0 AND (poqDataOut = 0 OR_ELSE (NOT poqDataOut^.bFull AND NOT poqDataOut^.bEndOfList)) DO <Read G-Code and process it> counter := counter - 1; END_WHILE
通过管道铺设在 预处理,即使是非常大的 G 代码文件也可以在不变的内存要求下读取。选择的队列大小要足够大,以便对应的功能块进行足够的预测。
的输出队列 SMC_NCInterpreter 也是的输入队列 smc_smoothMerg。总共为输出队列保留了 128+3 个元素。3 是预 SMC_OutQueue 还有 128 个可用作预测 SMC_SmoothMerge。 SMC_SmoothMerge 将最多 128 个短线性段合并为一个样条。
的输出队列 SMC_SmoothMerge 也是的输入队列 smc_smoothPath。 SMC_SmoothPath 需要至少 2 个元素,外加 3 个元素的储备作为预测。如果 M 函数位于两个平滑元素之间,则根据 M 函数的数量需要更多元素
的输出队列 SMC_SmoothMerge 也是的输入队列 SMC_Interpolator。对 100 个元素的预测适用于大多数应用。有关更多信息,请参阅以下内容: 路径预处理和队列大小。
/// Buffer of the interpreter, lookahead for SMC_SmoothMerge aBufIp : ARRAY[0..130] OF SMC_GeoInfo; /// Buffer of SMC_SmoothMerge aBufSmm : ARRAY[0..15] OF SMC_GeoInfo; /// Buffer of SMC_SmoothPath, lookahead for SMC_Interpolator aBufSmp : ARRAY[0..99] OF SMC_GeoInfo;
线性段的预处理
这个 SMC_SmoothMerge 功能块可确保在许多非常短的线性段上保持平滑的速度曲线。它将尽可能多的连续线性段组合成一个样条,同时保持规定的公差。在此示例中,X 和 Y 的最大偏差为 0.1 mm(PARAMETERS.piMaxDifference)。
读取短线性片段

使用以下命令将多个线性段组合成样条曲线
SMC_SmoothMerge。
在样条曲线之间进行平滑处理
SMC_SmoothPath因为,如上所示,样条彼此之间没有切向连接。
调试
生成应用程序并将其下载到控制器。
打开跟踪记录并将其下载到控制器。
启动应用程序。
您可以跟踪 G 代码的处理情况。