固高 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;}}}
}