指令流¶
1.1 简介¶
指令流是控制器提供的一种灵活的缓冲区指令管理机制。用户可以通过指令流实现高效的多轴点位运动逻辑管理、常用的连续轨迹运动以及一些复杂的工艺流程。
指令区分为立即指令和指令流指令。立即指令表示用户发送指令到控制器后会立即执行。而指令流是一个存放用户指令的容器,用户放在其中的指令不会立即执行,只有启动指令流后,指令流才开始自动执行。
指令流中可以存放各种类型的指令,包括不同模式的运动指令,IO或延时等辅助指令,配置指令等。启动指令流后,控制器会顺序执行指令流中的指令。用户可以通过指令流实现常用的连续轨迹运动,以及一些复杂的工艺流程。
1.2 指令列表¶
| 指令 | 说明 |
|---|---|
| GTN_StartCommandList | 启动指令流。 |
| GTN_StartMultiCommandList | 启动多个指令流。 |
| GTN_StopCommandList | 停止指令流。 |
| GTN_StopMultiCommandList | 停止多个指令流。 |
| GTN_GetCommandListSpace | 读取指令流空间。 |
| GTN_GetCommandListStatus | 读取指令流状态。 |
| GTN_ClearCommandListStatus | 清除指令流状态。 |
| GTN_SetCommandListStopParameter | 设置指令流停止参数。 |
| GTN_GetCommandListStopParameter | 读取指令流停止参数。 |
| GTN_ClearCommandListData | 清空指令流数据。 |
| GTN_CommandListDataEnd | 将数据压入指令流。 |
1.3 重点说明¶
1.3.1 发送指令流数据¶
用户根据实际应用压入需要进入指令流的指令,包括不同模式的运动指令、IO或延时等辅助指令以及配置指令等。当指令流的指令数据已经全部发送完成后,通过调用指令GTN_CommandListDataEnd结束指令流数据的发送,控制器会自动将缓存在前瞻或者DMA中的数据全部发送到控制器中。
提示
支持指令流机制的指令,在其指令接口中都带有pListInfo参数,如下所示:
GT_API GTN_SetDelay(short core,TDelay pDelay,TListInfo pListInfo)
(1)当指令接口中pListInfo为NULL,或者pListInfo->list为0时,相应指令为立即操作。当pListInfo->list大于0时,指令为指令流指令,即缓存区操作。
(2)当设置为指令流指令,但控制器返回错误为不支持时,表示控制器目前不支持该指令在指令流中执行。
1.3.2 启动指令流¶
指令流中存有指令数据后,调用指令GTN_StartCommandList启动指令流。控制器顺序执行指令流中的指令,根据指令类型执行动作,如执行运动指令、输出IO、延时等。启动指令流后,可以在指令流执行过程中继续往指令流中压入指令。
1.3.3 暂停指令流¶
指令流执行过程中,调用指令GTN_StopCommandList指令会暂停执行指令流,不再继续取新指令。若当前指令流正在执行运动指令,暂停指令流会同时暂停运动。
1.3.4 恢复指令流¶
暂停指令流后,若要继续恢复指令流的执行,可以再次调用指令GTN_StartCommandList启动指令流。恢复指令流后,指令流继续执行。若暂停前处于运动指令执行状态,就会重新启动运动;对于非模态的单轴点位运动,不可恢复。
提示
当指令流数据发送不及时,可能导致指令流出现跑空现象停止执行,此时如果又压入了新的指令流数据,需要再次调用指令GTN_StartCommandList启动指令流。 指令流是否发送过跑空现象,可以通过指令GTN_GetCommandListStatus获取跑空标识。
1.3.5 指令流保留参数说明¶
指令流信息结构体有部分保留参数,在新增功能启用保留参数时,为了做到兼容,不修改结构体大小和成员变量名字,而使用宏变量描述保留参数含义,宏变量的值作为保留参数数组索引指定对应的变量。
1. 用户标签
使用指令流信息结构体TListInfo中保留参数2中的第一个数组元素作为用户标签。