固高运动控制卡原点回零函数

    xiaoxiao2024-10-25  127

    //打开运动控制卡

    sRtn = GT_Open(); // 复位运动控制器 sRtn = GT_Reset(); // 配置运动控制器 // 注意:配置文件test.cfg取消了各轴的报警和限位 sRtn = GT_LoadConfig("test.cfg"); // 清除指定轴的报警和限位 sRtn =GT_ClrSts(AXIS); // 驱动器使能 sRtn = GT_AxisOn(AXIS);   /**************************1、启动Home捕获**************************************/ sRtn = GT_SetCaptureMode(AXIS, CAPTURE_HOME);   /**************************2、使相应轴运动,寻找home点***************************/ // 切换到点位运动模式 sRtn = GT_PrfTrap(AXIS); // 读取点位模式运动参数 sRtn = GT_GetTrapPrm(AXIS, &trapPrm); trapPrm.acc = 0.25; trapPrm.dec = 0.25; // 设置点位模式运动参数 sRtn = GT_SetTrapPrm(AXIS, &trapPrm); // 设置点位模式目标速度,即回原点速度 sRtn = GT_SetVel(AXIS, 10); // 设置点位模式目标位置,即原点搜索距离 sRtn = GT_SetPos(AXIS, SEARCH_HOME); // 启动运动 sRtn = GT_Update(1<<(AXIS-1));   /***********************3、等待捕获触发****************************************/ printf("\nWaiting for home signal...\n"); do { // 读取轴状态 sRtn = GT_GetSts(AXIS, &status); // 读取捕获状态 sRtn =GT_GetCaptureStatus(AXIS, &capture, &pos); // 读取规划位置 sRtn = GT_GetPrfPos(AXIS, &prfPos); // 读取编码器位置 sRtn = GT_GetEncPos(AXIS, &encPos); printf("capture=%d prfPos=%.2lf encPos=%.2lf\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);   /***********************4、运动到"捕获位置+偏移量"******************************/ sRtn = GT_SetPos(AXIS, pos + HOME_OFFSET); // 在运动状态下更新目标位置 sRtn = GT_Update(1<<(AXIS-1));   do { // 读取轴状态 sRtn = GT_GetSts(AXIS, &status); // 读取规划位置 sRtn = GT_GetPrfPos(AXIS, &prfPos); // 读取编码器位置 sRtn = GT_GetEncPos(AXIS, &encPos); printf("status=0x%-8lx prfPos=%-10.1lf encPos=%-10.1lf\r", status, prfPos, encPos); // 等待运动停止 }while( status& 0x400 );   /*********************5、检查是否到达"Home捕获位置+偏移量"***********************/ if( prfPos != pos+HOME_OFFSET ) { printf("\nmove to home pos error\n"); return 2; } printf("\nHome finish\n"); // 延时一段时间,等待电机停稳 Sleep(200);

    最新回复(0)