1. 程式人生 > >GTS-800二次開發基本流程總結

GTS-800二次開發基本流程總結

win highlight line names 關閉 參數 ble 名稱 速度

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
C#:
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(); } } }
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;

}

GTS-800二次開發基本流程總結