返回主站|会员中心|保存桌面

固高运动控制卡专业服务商    

固高运动控制卡|固高伺服驱动运动控制卡

联系方式
  • 联系人:吴经理
  • 电话:18576370666
  • 邮件:18576370666@163.com
新闻分类
  • 暂无分类
首页 > 新闻中心 > Googol固高GT400运动控制卡实验平台VC++代码!
新闻中心
Googol固高GT400运动控制卡实验平台VC++代码!
发布时间:2026-01-18        浏览次数:10        返回列表

基于 VC++ 编写的 Googol 固高 GT400 运动控制卡实验平台代码,核心是实现控制卡的初始化、单轴运动(点位 / 速度模式)、状态读取、急停等基础功能,方便在实验平台上验证控制卡的基本操作。

一、开发前置条件

  1. 环境配置

    • 编译器:Visual Studio 2010/2019(兼容 MFC/Win32 控制台,推荐控制台入门)

    • 驱动与库:安装固高 GT400 驱动,引入gt400.dllgt400.lib及头文件gt400.h(固高官方 SDK 自带)

    • 硬件:GT400 控制卡已正确安装,电机 / 驱动器接线完成

  2. 核心库函数说明

    • GT_Open():打开控制卡设备

    • GT_AxisOn():轴使能

    • GT_PrfTrap():设置点位运动模式(梯形加减速)

    • GT_SetPos():设置目标位置

    • GT_SetVel():设置运动速度

    • GT_Update():下发运动指令

    • GT_GetAxisStatus():读取轴状态

    • GT_Stop():急停

    • GT_Close():关闭控制卡

二、完整 VC++ 控制台代码(单轴基础实验)

以下代码实现 GT400 单轴(轴 0)的点位运动、速度运动、状态监测、急停等核心功能,可直接编译运行(需配置库路径):

cpp

运行

#include <iostream>#include <windows.h>#include "gt400.h"  // 固高GT400头文件(需放入项目目录)// 预定义常量#define AXIS_ID 0          // 控制轴号(实验平台常用轴0)#define MOVE_POS 10000     // 点位运动目标位置(脉冲数)#define MOVE_VEL 5000      // 运动速度(脉冲/秒)#define ACC 20000          // 加速度(脉冲/秒²)#define DEC 20000          // 减速度(脉冲/秒²)// 函数声明bool InitGT400();                  // 初始化控制卡void SingleAxisPositionMove();     // 单轴点位运动void SingleAxisVelocityMove();     // 单轴速度运动void CheckAxisStatus();            // 读取轴状态void EmergencyStop();              // 急停void CloseGT400();                 // 关闭控制卡int main(){
    std::cout << "===== 固高GT400运动控制卡实验平台 =====" << std::endl;

    // 1. 初始化控制卡
    if (!InitGT400())
    {
        std::cout << "控制卡初始化失败!按任意键退出..." << std::endl;
        getchar();
        return -1;
    }
    std::cout << "控制卡初始化成功!" << std::endl;

    // 2. 轴使能
    if (GT_AxisOn(AXIS_ID) != GT_NOERROR)
    {
        std::cout << "轴" << AXIS_ID << "使能失败!" << std::endl;
        CloseGT400();
        getchar();
        return -1;
    }
    std::cout << "轴" << AXIS_ID << "已使能" << std::endl;

    // 3. 选择运动模式(实验可切换注释)
    std::cout << "\n开始点位运动(目标位置:" << MOVE_POS << "脉冲)..." << std::endl;
    SingleAxisPositionMove();

    // 4. 监测轴状态
    std::cout << "监测轴状态..." << std::endl;
    CheckAxisStatus();

    // 5. 速度模式运动(可选)
    // std::cout << "\n开始速度模式运动(速度:" << MOVE_VEL << "脉冲/秒)..." << std::endl;
    // SingleAxisVelocityMove();
    // Sleep(3000);  // 运行3秒
    // EmergencyStop();  // 急停

    // 6. 关闭控制卡
    CloseGT400();
    std::cout << "\n控制卡已关闭,实验结束!按任意键退出..." << std::endl;
    getchar();
    return 0;}// 初始化GT400控制卡bool InitGT400(){
    // 打开控制卡(默认设备号0,多卡需指定)
    if (GT_Open(0) != GT_NOERROR)
    {
        std::cout << "GT_Open() 失败,错误码:" << GT_GetLastError() << std::endl;
        return false;
    }

    // 复位控制卡
    if (GT_Reset() != GT_NOERROR)
    {
        std::cout << "GT_Reset() 失败,错误码:" << GT_GetLastError() << std::endl;
        GT_Close();
        return false;
    }

    // 设置轴参数(脉冲当量/限位等,实验默认即可)
    GT_SetAxisPara(AXIS_ID, AXIS_PULSE_EQUIV, 1.0);  // 脉冲当量1:1
    return true;}// 单轴点位运动(梯形加减速)void SingleAxisPositionMove(){
    // 设置运动模式为点位运动(梯形加减速)
    GT_PrfTrap(AXIS_ID);

    // 设置运动参数
    GT_SetPos(AXIS_ID, MOVE_POS);        // 目标位置
    GT_SetVel(AXIS_ID, MOVE_VEL);        // 最大速度
    GT_SetAcc(AXIS_ID, ACC);             // 加速度
    GT_SetDec(AXIS_ID, DEC);             // 减速度

    // 下发运动指令(立即执行)
    GT_Update(AXIS_ID);

    // 等待运动完成
    DWORD axisStatus = 0;
    do
    {
        GT_GetAxisStatus(AXIS_ID, &axisStatus);
        Sleep(100);  // 每100ms检测一次
    } while ((axisStatus & AXIS_STOP) == 0);  // 等待轴停止}// 单轴速度运动(持续运行,需手动停止)void SingleAxisVelocityMove(){
    // 设置运动模式为速度模式
    GT_PrfVel(AXIS_ID);

    // 设置速度参数
    GT_SetVel(AXIS_ID, MOVE_VEL);        // 运行速度
    GT_SetAcc(AXIS_ID, ACC);             // 加速度
    GT_SetDec(AXIS_ID, DEC);             // 减速度

    // 下发指令并启动
    GT_Update(AXIS_ID);}// 读取轴状态(位置、速度、报警等)void CheckAxisStatus(){
    double curPos = 0.0;    // 当前位置
    double curVel = 0.0;    // 当前速度
    DWORD axisStatus = 0;   // 轴状态

    // 获取当前位置
    GT_GetPrfPos(AXIS_ID, &curPos);
    std::cout << "当前位置:" << curPos << " 脉冲" << std::endl;

    // 获取当前速度
    GT_GetPrfVel(AXIS_ID, &curVel);
    std::cout << "当前速度:" << curVel << " 脉冲/秒" << std::endl;

    // 获取轴状态
    GT_GetAxisStatus(AXIS_ID, &axisStatus);
    std::cout << "轴状态码:" << axisStatus << "(0=运行,非0=停止)" << std::endl;
        std::cout << "急停失败,错误码:" << GT_GetLastError() << std::endl;
    }}// 关闭控制卡void CloseGT400(){
    // 轴失能
    GT_AxisOff(AXIS_ID);
    // 关闭控制卡
    GT_Close();}

三、代码配置与编译步骤

  1. 项目设置

    • 新建 VC++ 控制台项目(Win32 Console Application)。

    • gt400.h放入项目头文件目录,gt400.lib放入项目源文件目录。

    • 项目属性→链接器→输入→附加依赖项,添加gt400.lib

    • 项目属性→C/C++→常规→附加包含目录,添加头文件路径。

    • gt400.dll复制到编译后的可执行文件(.exe)同目录。

  2. 编译运行

    • 确保 GT400 控制卡硬件连接正常,驱动已安装。

    • 编译代码(无报错则生成.exe),运行后观察电机是否按设定参数运动。

四、关键代码解释

  1. 控制卡初始化GT_Open()打开设备,GT_Reset()复位控制卡,是所有操作的前提;

  2. 轴使能GT_AxisOn()必须先执行,否则电机无动力输出;

  3. 点位运动GT_PrfTrap()设定梯形加减速模式,GT_SetPos/Vel/Acc/Dec()配置运动参数,GT_Update()下发指令,通过GT_GetAxisStatus()等待运动完成;

  4. 速度运动GT_PrfVel()切换为速度模式,运动后需调用GT_Stop()停止;

  5. 错误处理GT_GetLastError()可获取错误码,对照固高 SDK 手册排查问题(如驱动未装、轴号错误、接线异常等)。

五、实验扩展建议

  1. 多轴联动:复制轴 0 代码,修改AXIS_ID为 1/2/3,实现多轴同步运动;

  2. 限位保护:添加GT_GetLimitSignal()读取正负限位信号,触发时执行急停;

  3. 位置清零:使用GT_SetPrfPos(AXIS_ID, 0)将当前位置置零,方便重复实验;

  4. MFC 界面化:将核心函数封装到 MFC 按钮 / 文本框事件中,实现可视化操作(如输入目标位置、速度,显示实时状态)。

总结

  1. GT400 控制卡 VC++ 开发核心是调用官方 SDK 函数,遵循 “打开卡→轴使能→设运动模式→配参数→下发指令→读状态→关闭卡” 的流程;

  2. 点位运动需配置目标位置和加减速参数,速度运动需手动停止,实验前务必确认电机接线和硬件安全;

  3. 代码中错误码排查、轴状态监测是定位问题的关键,可对照固高 SDK 手册解读错误码含义。

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服