9.2 限位
运动控制器能够通过安装限位开关或者设置软限位来限制各轴的运动范围,如图 9-1 所示。
工作台碰到限位开关或者规划位置超越软限位时,运动控制器紧急停止工作台的运动。限位触发以后,运动控制器禁止触发限位方向上运动,同时该轴的限位触发状态置 1。离开限位回到安全运动范围以后,需要调用指令 GT_ClrSts 清除限位触发状态,才能使控制轴回到正常运动状态。控制器复位后,默认软限位是无效的,没有触发的。
9.2.2 重点说明
应当在回原点以后再设置软限位。正向软限位必须大于负向软限位。软限位和限位开关可以同时使用,当软限位触发时也会置起限位触发标志。限位触发以后使用急停加速度紧急停止。默认急停加速度为 1000pulse/ms2,如何设置急停加速度请参见“4.3.6 配置 profile”。
9.2.3 例程
该例程设置了第一轴的软限位,正向在 20000 处,负向在-20000 处。启动第一轴的点位运动后,通过下图 9-2 可以看到,当运动超过正向软限位时,限位信号触发,运动停止。
#include "stdafx.h"
#include "conio.h"
#include "gts.h"
#define AXIS 1
int main(int argc, char* argv[])
{
// 指令返回值
short sRtn;
// 轴状态变量
long sts;
// 点位运动结构体变量
TTrapPrm trap;
// 规划位置
double prfPos;
// 打开运动控制器
sRtn = GT_Open();
// 复位
sRtn = GT_Reset();
// 控制器配置
sRtn = GT_LoadConfig("test.cfg");
// 清除轴状态
sRtn =GT_ClrSts(1, 8);
// 设置软限位
sRtn = GT_SetSoftLimit(AXIS, 20000, -20000);
// 将第一轴设置为点位运动模式
sRtn = GT_PrfTrap(AXIS);
// 设置点位运动参数
sRtn = GT_GetTrapPrm(AXIS, &trap);
trap.acc = 0.125;
trap.dec = 0.125;
sRtn = GT_SetTrapPrm(AXIS, &trap);
// 设置点位运动目标速度
sRtn = GT_SetVel(AXIS, 50);
// 设置点位运动目标位置
sRtn = GT_SetPos(AXIS, 1000000L);
// 启动点位运动
sRtn = GT_Update(1<<(AXIS-1));
while(!kbhit())
{
// 读取第一轴轴状态
sRtn = GT_GetSts(AXIS, &sts);
// 读取第一轴规划位置
sRtn = GT_GetPrfPos(AXIS, &prfPos);
printf("sts=0x%-8lx prfPos=%-10.2lf\r", sts, prfPos);
}
return 0;
}