开环(脉冲)控制模式

该文详细介绍了如何初始化运动控制器,包括打开控制器、复位、设置脉冲控制方式、处理驱动器报警和限位信号。然后,文章展示了如何将第一轴设置为点位运动模式,设定运动参数如速度、加速度、减速度和平滑时间,并执行正向运动50000个脉冲的操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、步骤

1) 打开运动控制器,GT_Open();

2) 复位运动控制器,GT_Reset()。复位后默认的控制模式为“脉冲+方向”的脉冲控制方式。 若不是采用“脉冲+方向”的控制方式,则可调用 GT_StepPulse()修改;当需要还原为“脉 冲+方向”的控制方式时,则可调用 GT_StepDir()指令;

3) 检查相关轴驱动器报警信号有没有连接。(一般若采用步进电机,可能没有驱动器报警信 号),若没有连接,则应该调用 GT_AlarmOff()指令,使驱动器报警无效,默认是有效的;

4) 检查相关轴的限位开关,若没有连接,则需要通过调用 GT_LmtsOff(),使限位无效,默认 是有效的;若有连接,则要检查触发电平是否设置正确,可通过 GT_LmtSns()指令修改;

5) 在确认前面两步操作之后,调用 GT_ClrSts(),更新设置的状态;

6) 调用 GT_AxisOn(),使能驱动器,这样相应的电机便能工作了;

7) 使轴运动,运动后,若出现编码器位置和规划位置方向不一致,则可通过调用 GT_EncSns() 改变编码器的计数方向。

二、代码

将第 1 轴设定为点位运动模式,并且以速度 50pulse/ms,加速度 0.25pulse/ms2,减速度 0.125pulse/ms2,平滑时间为 25ms 的运动参数正向运动 50000 个脉冲。


#include "stdafx.h"
#include "conio.h"
#include "gts.h"
// 定义轴号
#define AXIS 1
int main(int argc, char* argv[])
{
    short sRtn = 0;
    TTrapPrm trap{};
    long sts = 0;
    double prfPos = 0;
    // 打开运动控制器
    sRtn = GT_Open();
    // 指令返回值检测
    commandhandler("GT_Open", sRtn);
    // 系统复位
    sRtn = GT_Reset();
    commandhandler("GT_Reset", sRtn);
    // 配置轴1脉冲输出方式为脉冲+方向
    sRtn = GT_StepDir(1);
    commandhandler("GT_StepDir", sRtn);
    // 配置轴1报警输出无效
    sRtn = GT_AlarmOff(1);
    commandhandler("GT_AlarmOff", sRtn);
    // 配置轴1正负限位无效
    sRtn = GT_LmtsOff(1, -1);
    commandhandler("GT_LmtsOff", 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值