中国领先的企业技术服务平台

返回贤集网 返回论坛
贤集网技术论坛APP下载
1 回复贴,共 1回复 收藏

固高运动控制的Home回零过程

1. 引言

通常对于伺服控制的机械设备对于对回零是一个必备的过程,但由于工程师对回零的理解偏差,导致软件设计的问题进而造成系统回零的不稳定,从而影响机械系统的定位精度。固高的回零的功能是一种开放指令系统,可以根据客户不同的需要定制不同的回零方式,但其机械和电气系统结构的基本构成是相同的。

2. 回零点的目的

自动化机械设备是为取代人工来处理对速度,精度有较高要求,并希望能确保获取一致性好的产品而诞生的。为了保证产品的一致性,必须首先确保机械设备的参考原始零位的精准性,这样才能保证在长时间工作时生产出的产品的一致性,而零点是机械系统的参考基准,所以必须保证参考基准的精确和唯一性,回零的目的是确保机械系统零点的重复定位精度在设计范围内,或者说确保单轴或多轴构成的X-Y-Z坐标系的零点在整个自动化设备的机械系统中的位置偏差在设计允许范围内。

3. 机电系统回零点的基本结构

典型单轴直线系统的主要构成部件有: 电机(步进电机或伺服),滚珠丝杆(或皮带,齿轮),滑动导轨,运动平台,左右限位感应器,感应片和零点感应器,以这些主要部件为基础,构成的单轴基本结构如下图一:

4.固高控制器的Home回零过程

说明:Home捕获模式下,当出现Home下降沿时,FPGA立刻锁存Home开关所对应的编码器位置,同时将该编码器轴的捕获状态标志位置1,然后退出Home捕获模式。 当Home捕获触发以后,重新启动Home捕获时,会自动清除对应轴的捕获触发标志位。

5. 固高控制器的Home相关指令


6. 固高控制器的Home例程

#include "stdafx.h" 

#include "windows.h" 

#include "conio.h"

#include "gts.h" 

#define AXIS 1 

#define SEARCH_HOME -200000 

#define HOME_OFFSET -2000 

int main(int argc, char* argv[]) 

short rtn, capture; 

TTrapPrm trapPrm; 

long status,pos; 

double prfPos, encPos, axisPrfPos, axisEncPos; 

// 打开运动控制器 

rtn = GT_Open(); 

printf("GT_Open()=%d\n",rtn); 

// 复位运动控制器 

rtn = GT_Reset(); 

printf("GT_Reset()=%d\n",rtn); 

// 配置运动控制器 

rtn = GT_LoadConfig("test.cfg"); 

printf("GT_LoadConfig()=%d\n",rtn); 

// 清除指定轴的报警和限位 

rtn = GT_ClrSts(AXIS); 

printf("GT_ClrSts()=%d\n",rtn); 

// 驱动器使能 

rtn = GT_AxisOn(AXIS); 

printf("GT_AxisOn()=%d\n",rtn); 

// 启动Home捕获 

rtn = GT_SetCaptureMode(AXIS,CAPTURE_HOME); 

printf("GT_SetCaptureMode()=%d\n",rtn); 

// 切换到点位运动模式 

rtn = GT_PrfTrap(AXIS); 

printf("GT_PrfTrap()=%d\n",rtn); 

// 读取点位模式运动参数 

rtn = GT_GetTrapPrm(AXIS,&trapPrm); 

printf("GT_GetTrapPrm()=%d\n",rtn); 

trapPrm.acc = 0.25; 

trapPrm.dec = 0.25; 

// 设置点位模式运动参数 

rtn = GT_SetTrapPrm(AXIS,&trapPrm); 

printf("GT_SetTrapPrm()=%d\n",rtn); 

// 设置点位模式目标速度,即回原点速度

rtn = GT_SetVel(AXIS,10);

printf("GT_SetVel()=%d\n",rtn); 

// 设置点位模式目标位置,即原点搜索距离 

rtn = GT_SetPos(AXIS,SEARCH_HOME); 

printf("GT_SetPos()=%d\n",rtn); 

// 启动运动 

rtn = GT_Update(1<<(AXIS-1)); 

printf("GT_Update()=%d\n",rtn); 

printf("\nWaiting for home signal...\n");

do { 

// 读取轴状态 

rtn = GT_GetSts(AXIS,&status); 

// 读取捕获状态 

rtn = GT_GetCaptureStatus(AXIS,&capture,&pos); 

// 读取规划位置 

rtn = GT_GetPrfPos(AXIS,&prfPos); 

// 读取编码器位置 

rtn = GT_GetEncPos(AXIS,&encPos); 

printf("capture=%d prfPos=%lf encPos=%lf\r", capture, prfPos, encPos); 

// 如果运动停止,返回出错信息 

if( 0 == ( status & 0x400 ) ) { printf("\nno home found\n"); 

getch(); 

return 1; } 

// 等待捕获触发 

}while( 0 == capture ); 

// 显示捕获位置 

printf("\ncapture pos = %ld\n",pos); 

// 运动到“捕获位置+偏移量” 

rtn = GT_SetPos(AXIS, pos + HOME_OFFSET); 

printf("GT_SetPos()=%d\n",rtn); 

// 在运动状态下更新目标位置 

rtn = GT_Update(1<<(AXIS-1)); 

printf("GT_Update()=%d\n",rtn);

do { 

// 读取轴状态

rtn = GT_GetSts(AXIS,&status); 

// 读取规划位置 

rtn = GT_GetPrfPos(AXIS,&prfPos); 

// 读取编码器位置 

rtn = GT_GetEncPos(AXIS,&encPos); 

printf("status=0x%-8lx prfPos=%-10.1lf encPos=%-10.1lf\r",status,prfPos,encPos); 

// 等待运动停止 

}while( status & 0x400 ); 

// 检查是否到达“Home捕获位置+偏移量” 

if( prfPos != pos+HOME_OFFSET ) 

printf("\nmove to home pos error\n"); 

getch(); 

return 2; 

printf("\nHome finish\n"); 

// 延时一段时间,等待电机停稳 

Sleep(200); 

printf("\nPress any key to set pos as 0...\n"); 

getch(); 

// 位置清零 

rtn = GT_ZeroPos(AXIS); 

printf("GT_ZeroPos()=%d\n",rtn); 

// 读取规划位置 

rtn = GT_GetPrfPos(AXIS,&prfPos); 

// 读取编码器位置 

rtn = GT_GetEncPos(AXIS,&encPos); 

// 读取axis规划位置 

rtn = GT_GetAxisPrfPos(AXIS,&axisPrfPos); 

// 读取axis编码器位置 

rtn = GT_GetAxisEncPos(AXIS,&axisEncPos); 

printf("\nprfPos=%-10.0lf encPos=%-10.0lf axisPrfPos=%-10.0lf axisEncPos=%-10.0lf", prfPos, encPos, axisPrfPos, axisEncPos); 

getch(); 

return 0;


回复

能在固高运动控制卡的基础上,开发B样条曲线插补的算法吗?

收起回复 0
  • kb481 回复努力工作:可以,我们有PT(描述位置和时间的关系)插补模式运动和PVT(描述位置、速度和时间的关系)插补模式运动,不过要数学非常好才能玩的转,有大学老师用卡和这种运动模式做过样条曲线插补,没问题。
    回复 0 查看他的主题
  • kb481 因为B样条曲线的规划每家想法不一样,算法上有些差异很难做到统一,所以固高干脆标准库里就不做指令了,用更开放的PV和PVT模式代替。
    回复 0 查看他的主题
  • 奋斗君 回复k***:牛
    回复 0 查看他的主题
  • 游客

    固高这里CN9上怎么接线触发原点信号啊

    回复 0
  • 游客 手上有两个固高运动控制器,想找个会固高的师傅指点,学费面谈。有意者请联系17665615309 微信yingzyz
    回复 0
  • 游客 手上有两个固高运动控制器,想找个会固高的师傅指点,学费面谈。有意者请联系17665615309 微信yingzyz
    回复 0
  • 我也说一句
1 个回复,共 1
您尚未登录,登录后才可以发帖评论,快去 登录 吧!