ProCon说明   快速入门   运动控制   EtherCAT   实时程序   API函数   控件库   硬件说明   问题排查   示例代码  
  

位置(速度)运动切转矩运动

本节主要介绍内容如下:


       注意
        
  • 位置(速度)运动切转矩运动,达到目标转矩后给出完成信号,不会自动清除目标转矩值
  • 位置运动包括绝对位置运动和相对位置运动
  • 转矩运动完成信号由实际转矩和给定转矩的差值的绝对值、转矩到位范围(tq_inp)和转矩到位稳定时间(tq_tim)共同判定,转矩到位位置和转矩到位稳定时间在YKM_AxisProfile中获取


相关函数

          

YKM_MoveContinuesAbsolute 连续运动:绝对位置模式
YK_API YKM_MoveContinuesRelative 连续运动:相对位置模式
YK_API YKM_MoveContinuesVelocity 连续运动:速度运动
YKM_MoveContinuesTorque 连续运动:转矩模式
YKM_MoveContinuesInput 连续运动:数字输入
YKM_AxisProfile 单轴基本运动参数配置


运动说明

        
  • 位置(速度)运动切转矩运动,第一段先执行位置(速度)运动,直到IO信号的输入,才会执行第二段转矩运动
  • 达到目标转矩值后会给出完成信号,且不会自动清除目标转矩值


  • 流程图

            



    程序编写

              

    RetCode result;
    int exit_cmd = 0;
    UINT32 axisIndex = 0;
    UINT32 axisIndex = 0;

    //库加载
    result = YKM_LoadLib();
    YKM_BusInfo busInfo;

    //等待系统初始化完成
    while (!exit_cmd)
    {
      result = YKM_GetBusInfo(&busInfo);
      if (busInfo.running)
        break;
      Sleep(100);
    }

    //设置相对运动参数
    YKM_MoveRelativeConfig moveRelativeCfg;
    memset(&moveRelativeCfg, 0, sizeof(YKM_MoveRelativeConfig));
    moveRelativeCfg.distance = 200;
    moveRelativeCfg.acceleration = 1000;
    moveRelativeCfg.deceleration = 1000;
    moveRelativeCfg.jerk = 10000;
    moveRelativeCfg.velocity = 100;

    //设置转矩运动参数
    YKM_moveTorqueConfig moveTorqueConfig;
    moveTorqueConfig.velocity = 50;
    moveTorqueConfig.torque = 50;

    //设置输入信号参数
    UINT32 byteIndex = 0, bitIndex = 0;

    //相对运动
    result = YKM_MoveContinuesRelative(axisIndex, moveRelativeCfg, YKM_BufferMode::YKM_BLENDING_PREV);
    print(result);

    //输入信号,收到输入信号后切换到下一条指令中去
    result = YKM_MoveContinuesInput(axisIndex, byteIndex, bitIndex, YKM_TrigMode::YKM_TRIGMODE_UPEDGE);
    print(result);

    //转矩运动
    result = YKM_MoveContinuesTorque(axisIndex, moveTorqueConfig, YKM_BufferMode::YKM_BLENDING_PREV);
    print(result);

    YKM_MoveContinuesStart(axisIndex);

    //等待目标位置到达
    YKM_AxisStatus status;
    while (!exit_cmd)
    {
      result = YKM_ReadAxisInfo(axisIndex, &status);
      if (0 != status.Done)
        break;
      Sleep(1);
    }

     

    常见问题及说明

              

     

      
    Copyright © 2015 深圳市优易控软件有限公司 www.proutech.com