SMC_BlockSearch

使用这个功能块至于运动开始之前被中断的路径,可能是由于错误原因。例如这个错误可能是由于铣头断裂导致错误。在重新换一个之后,用户不想重新进行插补,但是想将此位置至于刀具断裂点。

功能块必须根据路径预处理进行运行并且按照数据流的方式在功能块 之前插入。首先位置由 SMC_BlockSearchSavePos 保存,然后新的起始位置将会在 SMC_BlockSearch 附近启动并且存储达到的位置。从这一点开始,路径将会一个点一个点的被保存。

提示!

使用 SMC_BlockSearch 需要配合使用

插图 155: SMC_BlockSearch
 

数据类型

初始值

描述

VAR_IN_OUT

     

ePos

SMC_BlockSearchPos

 

包含位置信息,由 ePos from 以数据类型 的形式输出。

VAR_INPUT

     

bExecute

BOOL

FALSE

TRUE:功能块被激活。

bAbort

BOOL

FALSE

TRUE: 路径的处理被中断。

bAppend

BOOL

FALSE

FALSE: 每次复位 poqDataOut 将会被删除。

TRUE: 新的数据将会被写入到 poqDataOut 的结尾。

poqDataIn

POINTER TO SMC_OUTQUEUE

 

指向结构体对象 SMC_OUTQUEUE 包含改变路径的 对象,指向之前功能块的 poqDataOut 输出 (例如 )。

bStartFromSavedPos

BOOL

FALSE

可能的值:

  • FALSE: 功能块反向 (队列被一个一个的拷贝)
  • TRUE: 功能块被激活,被中断存储的位置。

nSizeOutQueue

UDINT

 

包含数据缓冲的大小,结构体 GEOINFO 对象列表将会被写入。这个缓冲区必须至少为 GEOINFO 结构体的五倍。否则 将不会被处理。尺寸可以预先定义,但是可以在之后复位的时候被修改。建议按照下述示例创建缓冲区:

ExampleBuf: Array[ 1..50] of SMC_GeoInfo;

正确的缓冲区尺寸将会被操作sizeof(ExampleBuf)获取。

pbyBufferOutQueue

POINTER TO ARRAY[0..0] OF SMC_GEOINFO

 

指向内存区域中 OUTQUEUE-结构体分配的第一个字节。这个区域至少与 nSizeOutQueue 一样大。通常情况下内存区域的分配是在IEC程序的定义部分通过定义数组 实现的。例如BUF: ARRAY[1..50] OF SMC_GEOINFO;。示例中,缓冲区可以包含50个元素:

buf: ARRAY[1..50] OF SMC_GEOINFO_STRUCT;

值可以是预定义的,但是可以在之后的复位中修改。

VAR_OUTPUT

     

bDone

BOOL

FALSE

TRUE: 输入数据 poqDataIn 已经被完整处理。在此功能块之后的块将不会做任何处理,直到复位。

FALSE: 如果 bExecute 为 FALSE, bDone 被设置为 FALSE。

bBusy

BOOL

FALSE

TRUE: 功能块处理没有完成。

bError

BOOL

 

TRUE: 功能块内部发生错误信号。

wErrorID

SMC_ERROR

 

错误定义 ID 。

可能值:

  • SMC_BS_SAVEDPOS_NOT_REACHED: 存储的位置不能被找到。可能是另一条路径。
  • SMC_BS_NO_POS_STORED: 通过ePos 转化的结构体不包含位置信息。SMC_BLOCKSEARCHSAVEPOS 不会被处理或者正确处理。

poqDataOut

POINTER TO SMC_OUTQUEUE

 

指向结构体 用于管理 SMC_GEOINFO 对象改变的路径。