CNC 示例 16:探测功能(清除剩余距离)(G31)
参见 CNC16_G31.project 的安装目录中的示例项目 CODESYS 下面 ..\CODESYS SoftMotion\Examples。
该示例项目显示了如何使用探测功能(清除剩余距离)。
在示例中,机器沿 X 方向移动,直到到达光障 X=50。一旦到达光障,机器就必须停止。剩余的 G 代码必须从该位置开始处理
应用程序的结构
该结构是数控应用的典型结构。G 代码在后台任务中读取PathTask)。此任务中还完成了路径预处理。插值是在总线任务中执行的 (MainTask)。
使用以下 G 代码。在方块中 N10,可以进行快速定位 X = 20。然后,使用 G31(探测功能:清除剩余路径)进行移动 X = 100。最后,在方块中 N30,进行线性运动的作用是 X = 20, Y = 50。
N10 G0 X20 F100 E1000 E-1000 N20 G31 X100 N30 G1 X20 Y50
插值器和解释器之间的交互对于探测功能(清除剩余路径)尤其重要。
解释器解码 G 代码并从中生成一条直线
X=20到X=100用于区块N20。然后它停止解码。插值器执行线性运动,同时输出探头数作为输出
udiActProbe。对于 G31,样本数始终为 1在应用程序中,插值器使用以下命令停止
bQuick_Stop一旦驱动器超出位置X=50。(这模拟了光障。
在总线任务中,
SMC_SetInterpreterStartPosition功能块用于连续复制机器的当前位置。
在
PathTask,则将起始位置分配给输入SMC_NCInterpreter.piStartPosition:inter( sentences:= read.sentences, bExecute:= read.bExecute, nSizeOutQueue:= SIZEOF(bufIpo), pbyBufferOutQueue:= ADR(bufIpo), piStartPosition:= Main.setStart.StartPos);
插值器一停止,
bAcknProbe输入用于确认 G31 命令。在实际应用中,此时还应检查轴是否已实际到达停止位置。这个 smc_inPosition 可以使用功能块来执行此操作。
这会导致解释器恢复解码,但更新了起始位置,因此以下内容会阻塞
N30是从位置开始的X=55.5。
下图说明了这些步骤。括号中的数字是指上述过程中的相应步骤。

调试
生成应用程序并将其下载到控制器。
打开跟踪记录并将其下载到控制器。
启动应用程序并打开可视化。