Skip to main content

使用块搜索

程序段搜索允许在中断后继续插补。停止位置最先行进,路径从此位置原样行进。为此,必须扩展执行插值的程序和执行路径预处理的程序。

51. 例子

中断的铣头会停止行程。修复后,路径可以继续块搜索。



通过以下方式扩展应用程序

  • 保存预处理位置的插补任务中的功能块实例

  • 缩短路径元素的路径任务中的功能块实例

有关详细信息,请参阅:SMC_BlockSearchSavePos、SMC_BlockSearchPos 和 SMC_BlockSearch

保存预处理位置

您可以使用 SMC_BlockSearchSavePos 用于根据命令保存当前位置的功能块。此时,功能块的实例必须运行在插值器的任务中。示例中的插补器程序名为“CNC”。

  1. 声明一个实例 SMC_BlockSearchSavePos 插值执行的程序中的功能块。

    bssp: SMC_BlockSearchSavePos;

  2. 连接 ipo 的输入 SMC_BlockSearchSavePos 实例到插值器实例。

  3. 连接 bExecute 取消 CNC 程序时应用程序中设置的控制变量的输入(例如,如果 bAbort SMC_Interpolator 实例的输入已设置)。位置存储在 ePos 输出用于块搜索,如下所示 SMC_BlockSearc.中断后, bExecute 必须在上升沿复位。

52. 例子

执行插值的程序的一部分 SMC_BlockSearchSavePos CFC 中的功能块。

_sm_img_interpolation_with_block_search.png


使用块搜索

的一个实例 SMC_BlockSearch 必须在与剩余路径预处理相同的任务中调用功能块,通常直接在 SMC_CheckVelocities 功能块。如果上升沿存在于 bExecute,然后执行块搜索。启动后,将运行保存的位置,并且从该位置开始运行路径不变。

  1. 声明一个实例 SMC_BlockSearch 路径预处理执行的程序中的功能块。

    bs: SMC_BlockSearch;

  2. 实现触发 bExecute 的输入 SMC_BlockSearch 实例。

  3. 之前保存的位置 SMC_BlockSearchSavePos 功能块必须作为 epos 的输入 SMC_BlockSearch 功能块。

53. 示例:路径预处理中的块搜索
PROGRAM CNC_PreparePath
...
VAR
        bs: SMC_BlockSearch;
END_VAR
...
bs(
                ePos:=CNC.bssp.ePos ,
                bExecute:=rncf.bExecuteDecoder ,
                bAbort:= ,
                bAppend:= ,
                poqDataIn:=ncd.poqDataOut ,
                bStartFromSavedPos:=CNC.bssp.bPositionStored ,
                nSizeOutQueue:=SIZEOF(agiBufBlockSearch) ,
                pbyBufferOutQueue:=ADR(agiBufBlockSearch) ,
                bDone=> ,
                bBusy=> ,
                bError=> ,
                wErrorID=> ,
                poqDataOut=> );

bStartFromSavedPos 输入也可以通过控制变量激活。可以在取消后激活控制变量,以便在上次保存的位置再次继续。