转载连接: http://www.cnblogs.com/LandyTan/p/6973920.html
1、打开控制器 GT_Open
2、启动伺服使能 GT_ClrSts
3、轴规划位置清零 GT_SetPrfPos
4、轴运动模式 GT_PrfTrap
5、轴目标位置 GT_SetPos
6、轴转动速度 GT_SetVel
7、启动轴 GT_Update
8、关闭使能 GT_AxisOff
9、关闭控制器 GT_Close
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
C#:<br>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
gts;
namespace
GTS
{
class
Program
{
static
void
command(
string
sz,
short
nR)
{
Console.WriteLine(sz +
" = "
+ nR);
}
static
void
Main(
string
[] args)
{
short
mAxis = 2;
short
nR = mc.GT_Open(0, 1);
if
(nR != 0)
{
command(
"GT_Open"
, nR);
Console.WriteLine(
"Open error"
);
return
;
}
command(
"GT_Open"
, nR);
// 清除各轴的报警和限位
command(
"GT_ClrSts"
, mc.GT_ClrSts(mAxis, 1));
// 伺服使能
command(
"GT_AxisOn"
, mc.GT_AxisOn(mAxis));
// 位置清零
command(
"GT_ZeroPos"
, mc.GT_ZeroPos(mAxis, 1));
// 轴规划位置清零
command(
"GT_SetPrfPos"
, mc.GT_SetPrfPos(mAxis, 0));
// 设置指定轴为点位运动模式。
command(
"GT_PrfTrap"
, mc.GT_PrfTrap(mAxis));
// 设置点位运动参数
mc.TTrapPrm trap =
new
mc.TTrapPrm();
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
command(
"GT_SetTrapPrm"
, mc.GT_SetTrapPrm(mAxis,
ref
trap));
// 设置轴的目标位置
command(
"GT_SetPos"
, mc.GT_SetPos(mAxis, 50000));
// 设置轴的目标速度
command(
"GT_SetVel"
, mc.GT_SetVel(mAxis, 25));
// 启动轴运动
command(
"GT_Update"
, mc.GT_Update(1 << mAxis - 1));
mc.GT_Close();
Console.ReadKey();
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
C++源码:
#include "stdafx.h"
#include "windows.h"
#include "conio.h"
#include "gts.h"
#define AXIS 1
// 该函数检测某条GT指令的执行结果,command为指令名称,error为指令执行返回值
void
commandhandler(
char
*command,
short
error)
{
// 如果指令执行返回值为非0,说明指令执行错误,向屏幕输出错误结果
if
(error)
{
printf(
"%s = %d\n"
, command, error);
}
}
int
main(
int
argc,
char
* argv[])
{
short
sRtn;
TTrapPrm trap;
long
sts;
double
prfPos;
// 打开运动控制器
sRtn = GT_Open();
// 指令返回值检测,请查阅例2-1
commandhandler(
"GT_Open"
, sRtn);
// 配置运动控制器
// 注意:配置文件取消了各轴的报警和限位
sRtn = GT_LoadConfig(
"test.cfg"
);
commandhandler(
"GT_LoadConfig "
, sRtn);
// 清除各轴的报警和限位
sRtn = GT_ClrSts(1, 8);
commandhandler(
"GT_ClrSts"
, sRtn);
// 伺服使能
sRtn = GT_AxisOn(AXIS);
commandhandler(
"GT_AxisOn"
, sRtn);
// 位置清零
sRtn = GT_ZeroPos(AXIS);
commandhandler(
"GT_ZeroPos"
, sRtn);
// AXIS轴规划位置清零
sRtn = GT_SetPrfPos(AXIS, 0);
commandhandler(
"GT_SetPrfPos"
, sRtn);
// 将AXIS轴设为点位模式
sRtn = GT_PrfTrap(AXIS);
commandhandler(
"GT_PrfTrap"
, sRtn);
// 读取点位运动参数
sRtn = GT_GetTrapPrm(AXIS, &trap);
commandhandler(
"GT_GetTrapPrm"
, sRtn);
trap.acc = 0.25;
trap.dec = 0.125;
trap.smoothTime = 25;
// 设置点位运动参数
sRtn = GT_SetTrapPrm(AXIS, &trap);
commandhandler(
"GT_SetTrapPrm"
, sRtn);
// 设置AXIS轴的目标位置
sRtn = GT_SetPos(AXIS, 50000L);
commandhandler(
"GT_SetPos"
, sRtn);
// 设置AXIS轴的目标速度
sRtn = GT_SetVel(AXIS, 50);
commandhandler(
"GT_SetVel"
, sRtn);
// 启动AXIS轴的运动
sRtn = GT_Update(1<<(AXIS-1));
commandhandler(
"GT_Update"
, sRtn);
do
{
// 读取AXIS轴的状态
sRtn = GT_GetSts(AXIS, &sts);
// 读取AXIS轴的规划位置
sRtn = GT_GetPrfPos(AXIS, &prfPos);
printf(
"sts=0x%-10lxprfPos=%-10.1lf\r"
, sts, prfPos);
}
while
(sts&0x400);
// 等待AXIS轴规划停止
// 伺服关闭
sRtn = GT_AxisOff(AXIS);
printf(
"\nGT_AxisOff()=%d\n"
, sRtn);
getch();
return
0;
}
|