一、限位
运动控制器能够通过安装限位开关或者设置软限位来限制各轴的运动范围,一旦限位开关失效,将可能造成控制设备的损坏或发生生产事故,因此限位开关的稳定性和可靠性对于各种运动和位置控制设备来讲是十分重要的。
限位限制一般有三重 :软限位、限位开关、机械限位 。
工作台碰到限位开关或者规划位置超越软限位时,运动控制器紧急停止工作台的运动。限位触 发以后,运动控制器会禁止触发限位方向上的运动,同时该轴的限位触发状态置 1。离开限位回到安全 运动范围以后,需要调用指令 GT_ClrSts()清除限位触发状态,才能使控制轴回到正常运动状态。控制器复位后,默认软限位是无效的,没有触发的。
二、实例
#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);
// 正向限位
if (sts& 0x20)
{
bFlagPosLimit = TRUE;
printf("正限位触发\n");
}
else
{
bFlagPosLimit = FALSE;
printf("正限位未触发\n");
}
// 读取第一轴规划位置
sRtn = GT_GetPrfPos(AXIS, &prfPos);
printf("sts=0x%-8lx prfPos=%-10.2lf\r", sts, prfPos); }
return 0;
}