SetAxisTouchProbe
纪录在触发事件中的轴位置。
语法
KsCommandStatus SetAxisTouchProbe(
int Index,
McProbeTrigger TriggerInput,
BOOL WindowOnly,
double firstPosition,
double lastPosition,
double* recordedPosition
);
参数
Index [in]:轴索引。索引以零为起点;别名将影响此参数。
TriggerInput [in]:触发信号来源。触发可由 Index 指定;而信号来源可在 McProbeTrigger 结构中选定。
WindowOnly [in]:若设定,则只有在视窗内的值会用来触发事件,视窗范围为 firstPosition 与 lastPosition 之间。
firstPosition [in]:接受(正方向)触发事件的起始位置(使用者单位),为包含在视窗的值,firstPosition 须小于 lastPosition。
lastPosition [in]:视窗的末端位置(使用者单位),为包含在视窗的值。
recordedPosition [out]:触发事件发生的位置(使用者单位)。
回传值
返回 KsCommandStatus 结构。
备注
- 欲使用此函式,务必使用 EnableTouchProbe 启用位置抓取功能。
- 一个函式实例应确实代表一个位置抓取命令。
- 为避免同一位置抓取针与轴上有多个实例,McProbeTrigger 元件应使用
TouchProbeId
来扩充,独特位置抓取命令识别可连结至 AbortCommand。 - SetAxisTouchProbe 完成后,须等待一个周期,位置抓取才生效。
- 欲了解位置抓取功能的详细资讯,请参见 概念解说 > 位置抓取功能 (Touch Probe)。
- 当模数轴启用时,模数值会套用至 firstPosition、lastPosition 及 recordedPosition 参数。
范例
VOID RecordPosition(INT Index, DOUBLE Velocity, McDirection Direction) {
double PosRecord = 0;
//Configure the probe
McProbeTrigger ProbeTrigger = { 0 };
ProbeTrigger.TouchProbeId = 0;
ProbeTrigger.Software = FALSE;
ProbeTrigger.IndexPulse = TRUE;
ProbeTrigger.Edge = TRUE;
ProbeTrigger.AxisSwitch = FALSE;
ProbeTrigger.Index = 0;
ProbeTrigger.Offset = 0;
KsCommandStatus probe = SetAxisTouchProbe(Index, ProbeTrigger, FALSE, 0, 0, &PosRecord);
//Start moving
MoveAxisVelocity(Index, Velocity, 36000, 36000, 3600000, Direction, mcAborting);
//Wait for the position to be recorded
probe = WaitForCommand(30, TRUE, probe);
RtPrintf("Recorded position: %d\n", (int)PosRecord);
WaitForCommand(30, TRUE, HaltAxis(Index, 36000, 3600000, mcAborting));
}
使用需求
RT | Win32 | |
---|---|---|
最低支援版本 | 4.0 | 4.0 |
标头档 | ksmotion.h | ksmotion.h |
程式库 | KsApi_Rtss.lib | KsApi.lib |
参见