test6-18.c

来自「固高GT400运动控制卡」· C语言 代码 · 共 120 行

C
120
字号
#include "userlib.h"
#include <stdio.h>

void initial(void);
void home(long);
void error(short);
short rtn;

void initial()
{
  rtn=GT_Open();            error(rtn);
  rtn=GT_Reset();           error(rtn);
  rtn=GT_LmtSns(0);         error(rtn);
  rtn=GT_EncSns(0);         error(rtn);

  rtn=GT_Axis(1);           error(rtn);
  rtn=GT_ClrSts();          error(rtn);
  rtn=GT_SetKp(20);         error(rtn);
  rtn=GT_SetKi(2);          error(rtn);
  rtn=GT_SetKd(60);         error(rtn);
  rtn=GT_SetKvff(0);        error(rtn);
  rtn=GT_SetKaff(0);        error(rtn);
  rtn=GT_SetILmt(100);      error(rtn);
  rtn=GT_Update();          error(rtn);
  rtn=GT_AxisOn();          error(rtn);

}

void home(long pos)
{
   unsigned short status;
   long actl_pos;
   rtn=GT_ClrSts();         error(rtn);
   rtn=GT_CaptHome();       error(rtn);
   rtn=GT_PrflT();          error(rtn);
   rtn=GT_SetVel(4);        error(rtn);
   rtn=GT_SetAcc(1);        error(rtn);
   rtn=GT_SetPos(pos);      error(rtn);
   rtn=GT_Update();         error(rtn);
   rtn=GT_GetSts(&status);  error(rtn);
   while(!(status&0x8))
   {
     if(status&0x1)  return;
     rtn=GT_GetSts(&status); error(rtn);
    }
   rtn=GT_GetCapt(&pos);     error(rtn);
   rtn=GT_SetPos(pos);       error(rtn);
   rtn=GT_Update();          error(rtn);
   rtn=GT_ClrSts();          error(rtn);
   rtn=GT_GetSts(&status);   error(rtn);
   while(!(status&0x1))
   {
     rtn=GT_GetSts(&status); error(rtn);
     }
   rtn=GT_ClrSts();          error(rtn);
   rtn=GT_CaptIndex();       error(rtn);
   pos=pos+8000;
   rtn=GT_SetPos(pos);       error(rtn);
   rtn=GT_Update();          error(rtn);
   rtn=GT_GetSts(&status);   error(rtn);
   while(!(status&0x8))
   {
     rtn=GT_GetSts(&status); error(rtn);
   }
   rtn=GT_ClrSts();          error(rtn);
   rtn=GT_GetCapt(&pos);     error(rtn);
   rtn=GT_SetPos(pos);       error(rtn);
   rtn=GT_Update();          error(rtn);
   rtn=GT_GetSts(&status);   error(rtn);
   while(!(status&0x1))
   {
     rtn=GT_GetSts(&status); error(rtn);
    }
   rtn=GT_ClrSts();          error(rtn);
   rtn=GT_ZeroPos();         error(rtn);
}

void error(short rtn)
{
   switch (rtn)
   {
      case -1:
	   printf("error: communciation error\n");
	   break;
      case 0:
	   /* No error */
	   break;
      case 1:
	   printf("error: command error\n");
	   break;
      case 2:
	   printf("error: radius is zero or too large\n");
	   break;
      case 3:
	   printf("error: the length of line is zero or too large\n");
	   break;
      case 4:
	   printf("error: acceleration or velocity is zero or too large\n");
	   break;
      case 5:
	   printf("error: parameter conflict\n");
	   break;
      case 6:
	   printf("error: nonexistence solution for the equation\n");
	   break;
      case 7:
	   printf("error: process parameter error\n");
	   break;
      default:
	   break;
   }
}

void main()
{
  initial();
  home(-20000000);
  rtn=GT_Close();             error(rtn);
 }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?