固高 GTS-800 系列运动控制卡作为中端工业控制领域的标杆产品,以其 8-16 轴同步控制能力、丰富的插补功能和稳定的性能,广泛应用于激光加工、PCB 制造、精密装配等自动化设备中。本文将系统讲解 GTS-800 的硬件架构、开发环境搭建、核心功能实现及工程实践技巧,帮助工程师快速掌握从设备部署到复杂运动控制的全流程技术。
一、开发环境搭建与基础配置
1.1 软件开发套件安装
固高为 GTS-800 提供 GTStudio 集成开发环境,包含驱动、SDK 和调试工具,安装步骤:
- 下载最新版 GTStudio(建议 V4.5 及以上),支持 Windows 7/10/11(64 位)
- 运行安装程序,选择 "完整安装",包含:
- 设备驱动(用于识别控制卡)
- GTStudio IDE(梯形图 / ST 语言编程)
- SDK 开发包(C/C++、C#、Python 接口)
- 调试工具(示波器、参数配置工具)
- 安装完成后,连接控制卡并启动 "设备管理器",确认 "Googoltech GTS-800 Series" 设备正常识别(无黄色感叹号)
- 运行 "GTConfig" 工具,检测控制卡固件版本,必要时升级至最新版(固件版本需与 SDK 匹配)
1.2 C# 开发环境配置
GTS-800 的 C# 开发基于固高提供的.NET 封装库(GoogolMotion.dll
),环境配置步骤:
- 在 Visual Studio 2019/2022 中创建 C# 项目(建议.NET Framework 4.7.2)
- 引用 SDK 库文件:
- 浏览至
C:\Program Files\Googoltech\GTStudio\SDK\DotNet
- 添加
GoogolMotion.dll
和GoogolMotionNative.dll
引用 - 设置 "复制到输出目录" 为 "如果较新则复制"
- 浏览至
- 引用必要的命名空间:
using Googoltech; using Googoltech.Motion; using Googoltech.Motion.Control; using Googoltech.Motion.Enums;
- 配置项目平台为 "x64"(固高 SDK 不支持 32 位系统)
1.3 控制卡初始化与参数配置
控制卡使用前需完成初始化配置,包括设备打开、轴参数设置等基础操作:
using System;
using System.Threading;namespace GTS800Demo
{public class Gts800Controller : IDisposable{private GtsDevice _device; // 控制卡设备对象private GtsAxis[] _axes; // 轴对象数组private int _axisCount; // 轴数量// 控制卡状态属性public bool IsInitialized { get; private set; }public string FirmwareVersion { get; private set; }/// <summary>/// 初始化GTS-800控制卡/// </summary>/// <param name="axisCount">使用的轴数量(1-8)</param>/// <returns>初始化是否成功</returns>public bool Initialize(int axisCount = 8){if (axisCount < 1 || axisCount > 8)throw new ArgumentOutOfRangeException(nameof(axisCount), "轴数量必须为1-8");try{// 创建设备实例(GTS-800系列)_device = new GtsDevice(DeviceModel.GTS_800);// 打开设备(默认设备ID=0,多卡时需指定)int result = _device.Open(0);if (result != 0){Console.WriteLine($"控制卡打开失败,错误码: {result}");return false;}// 获取固件版本FirmwareVersion = _device.GetFirmwareVersion();Console.WriteLine($"控制卡初始化成功,固件版本: {FirmwareVersion}");// 初始化轴对象_axisCount = axisCount;_axes = new GtsAxis[axisCount + 1]; // 轴号从1开始for (int i = 1; i <= axisCount; i++){_axes[i] = _device.GetAxis(i);InitAxisParameters(i); // 配置轴参数}IsInitialized = true;return true;}catch (Exception ex){Console.WriteLine($"初始化异常: {ex.Message}");return false;}}/// <summary>/// 配置轴基本参数/// </summary>private void InitAxisParameters(int axis){var axisObj = _axes[axis];// 1. 配置脉冲模式与单位axisObj.SetPulseMode(PulseMode.PulseAndDirection); // 脉冲+方向模式axisObj.SetUnitConversion(1000); // 单位转换:1用户单位=1000脉冲// 2. 配置软限位axisObj.SetSoftLimit(-5000, 5000); // 软限位范围:-5000~5000用户单位axisObj.EnableSoftLimit(true); // 启用软限位// 3. 配置运动参数(速度单位:用户单位/秒)axisObj.SetVelocity(1000); // 速度axisObj.SetAcceleration(2000); // 加速度axisObj.SetDeceleration(2000); // 减速度axisObj.SetJerk(5000); // 加加速度// 4. 配置回零参数axisObj.SetHomingMode(HomingMode.NegativeLimitThenIndex); // 回零模式:负限位+索引信号axisObj.SetHomingSpeed(300, 100); // 回零速度(搜索:300,精定位:100)// 5. 配置PID参数(闭环控制时)axisObj.SetPositionLoopGain(300); // 位置环增益axisObj.SetVelocityLoopGain(200); // 速度环增益axisObj.SetVelocityLoopIntegral(50); // 速度环积分}public void Dispose(){if (IsInitialized){// 安全关闭:禁用所有轴for (int i = 1; i <= _axisCount; i++){_axes[i].Disable();}_device.Close();IsInitialized = false;}}}
}