博派智能-运动控制技术-螺旋线插补

  1、原理

螺旋线插补,指的是XY圆弧插补过程中,Z轴同比上升或者下降。

如果运动控制卡没有该功能,则不能实现该功能。

2、具体代码

这里以博派智能的ETH_GAS系列网口运动控制卡为例说明,该运动控制卡有2-16路步进/伺服控制接口,每路接口都有编码器/脉冲/方向/报警/使能等信号,支持自动回零/点位/直线/圆弧插补/PT运动等功能,支持高速硬件捕获、比较输出/飞拍、PSO。高端款PMC系列甚至支持RTCP五轴联动,Delta/Scara/6轴机器人算法。

螺旋线插补相关函数一览表

API

说明

MC_HelixXYCZ

缓存区指令,XY平面螺旋线插补(以终点坐标和圆心位置为输入参数)

MC_HelixXZCY

缓存区指令,XZ平面螺旋线插补(以终点坐标和圆心位置为输入参数)

MC_HelixYZCX

缓存区指令,YZ平面螺旋线插补(以终点坐标和圆心位置为输入参数)

MC_HelixXYCCount

缓存区指令,XY平面螺旋线插补(以终点坐标和圆心位置为输入参数)

MC_HelixXZCCount

缓存区指令,XZ平面螺旋线插补(以终点坐标和圆心位置为输入参数)

MC_HelixYZCCount

缓存区指令,YZ平面螺旋线插补(以终点坐标和圆心位置为输入参数)

参数详细说明:

int MC_HelixXYCZ(short nCrdNum,long x,long y,long z,double xCenter,double yCenter,float k, short circleDir,double synVel,double synAcc,double velEnd=0,short FifoIndex=0,long segNum=-1)

nCrdNum

坐标系号,取值范围:[1,CRDSYS_MAX_COUNT]

x

X轴终点坐标

y

Y轴终点坐标

z

Z轴终点坐标

xCenter

圆弧插补的圆心X方向相对于起点位置的偏移量

yCenter

圆弧插补的圆心Y方向相对于起点位置的偏移量

k

螺距

circleDir

圆弧的旋转方向,1顺时针圆弧,0逆时针圆弧

synVel

插补段的目标合成速度。取值范围:(0, 4000),单位:pulse/ms。

synAcc

插补段的合成加速度。取值范围:(0, 4000),单位:pulse/(ms*ms)。

velEnd

插补段的终点速度。取值范围:[0, 4000),单位:pulse/ms。该值只有在没有使用前瞻预处理功能时才有意义,否则该值无效。默认为:0

FifoIndex

插补缓存区号,取值范围:[0,1],默认为:0

segNum

用户自定义段号

int MC_HelixXZCY(short nCrdNum,long x,long y,long z,double xCenter,double yCenter,float k, short circleDir,double synVel,double synAcc,double velEnd=0,short FifoIndex=0,long segNum=-1)

nCrdNum

坐标系号,取值范围:[1,CRDSYS_MAX_COUNT]

x

X轴终点坐标

y

Y轴终点坐标

z

Z轴终点坐标

xCenter

圆弧插补的圆心X方向相对于起点位置的偏移量

yCenter

圆弧插补的圆心Y方向相对于起点位置的偏移量

k

螺距

circleDir

圆弧的旋转方向,1顺时针圆弧,0逆时针圆弧

synVel

插补段的目标合成速度。取值范围:(0, 4000),单位:pulse/ms。

synAcc

插补段的合成加速度。取值范围:(0, 4000),单位:pulse/(ms*ms)。

velEnd

插补段的终点速度。取值范围:[0, 4000),单位:pulse/ms。该值只有在没有使用前瞻预处理功能时才有意义,否则该值无效。默认为:0

FifoIndex

插补缓存区号,取值范围:[0,1],默认为:0

segNum

用户自定义段号

int MC_HelixYZCX(short nCrdNum,long x,long y,long z,double xCenter,double yCenter,float k, short circleDir,double synVel,double synAcc,double velEnd=0,short FifoIndex=0,long segNum=-1)

nCrdNum

坐标系号,取值范围:[1,CRDSYS_MAX_COUNT]

x

X轴终点坐标

y

Y轴终点坐标

z

Z轴终点坐标

xCenter

圆弧插补的圆心X方向相对于起点位置的偏移量

yCenter

圆弧插补的圆心Y方向相对于起点位置的偏移量

k

螺距

circleDir

圆弧的旋转方向,1顺时针圆弧,0逆时针圆弧

synVel

插补段的目标合成速度。取值范围:(0, 4000),单位:pulse/ms。

synAcc

插补段的合成加速度。取值范围:(0, 4000),单位:pulse/(ms*ms)。

velEnd

插补段的终点速度。取值范围:[0, 4000),单位:pulse/ms。该值只有在没有使用前瞻预处理功能时才有意义,否则该值无效。默认为:0

FifoIndex

插补缓存区号,取值范围:[0,1],默认为:0

segNum

用户自定义段号

int MC_HelixXYCCount(short nCrdNum,double xCenter,double yCenter,float k,float CirlceCount, short circleDir,double synVel,double synAcc,double velEnd=0,short FifoIndex=0,long segNum=-1)

nCrdNum

坐标系号,取值范围:[1,CRDSYS_MAX_COUNT]

xCenter

圆弧插补的圆心X方向相对于起点位置的偏移量,单位脉冲

yCenter

圆弧插补的圆心Y方向相对于起点位置的偏移量,单位脉冲

k

螺距,单位脉冲

CirlceCount

旋转圈数,可以为小数

circleDir

圆弧的旋转方向,1顺时针圆弧,0逆时针圆弧

synVel

插补段的目标合成速度。取值范围:(0, 4000),单位:pulse/ms。

synAcc

插补段的合成加速度。取值范围:(0, 4000),单位:pulse/(ms*ms)。

velEnd

插补段的终点速度。取值范围:[0, 4000),单位:pulse/ms。该值只有在没有使用前瞻预处理功能时才有意义,否则该值无效。默认为:0

FifoIndex

插补缓存区号,取值范围:[0,1],默认为:0

segNum

用户自定义段号

int MC_HelixXZCCount(short nCrdNum,double xCenter,double zCenter,float k,float CirlceCount, short circleDir,double synVel,double synAcc,double velEnd=0,short FifoIndex=0,long segNum=-1)

nCrdNum

坐标系号,取值范围:[1,CRDSYS_MAX_COUNT]

xCenter

圆弧插补的圆心X方向相对于起点位置的偏移量,单位脉冲

zCenter

圆弧插补的圆心Z方向相对于起点位置的偏移量,单位脉冲

k

螺距,单位脉冲

CirlceCount

旋转圈数,可以为小数

circleDir

圆弧的旋转方向,1顺时针圆弧,0逆时针圆弧

synVel

插补段的目标合成速度。取值范围:(0, 4000),单位:pulse/ms。

synAcc

插补段的合成加速度。取值范围:(0, 4000),单位:pulse/(ms*ms)。

velEnd

插补段的终点速度。取值范围:[0, 4000),单位:pulse/ms。该值只有在没有使用前瞻预处理功能时才有意义,否则该值无效。默认为:0

FifoIndex

插补缓存区号,取值范围:[0,1],默认为:0

segNum

用户自定义段号

int MC_HelixYZCCount(short nCrdNum,double yCenter,double zCenter,float k,float CirlceCount, short circleDir,double synVel,double synAcc,double velEnd=0,short FifoIndex=0,long segNum=-1)

nCrdNum

坐标系号,取值范围:[1,CRDSYS_MAX_COUNT]

yCenter

圆弧插补的圆心Y方向相对于起点位置的偏移量,单位脉冲

zCenter

圆弧插补的圆心Z方向相对于起点位置的偏移量,单位脉冲

k

螺距,单位脉冲

CirlceCount

旋转圈数,可以为小数

circleDir

圆弧的旋转方向,1顺时针圆弧,0逆时针圆弧

synVel

插补段的目标合成速度。取值范围:(0, 4000),单位:pulse/ms。

synAcc

插补段的合成加速度。取值范围:(0, 4000),单位:pulse/(ms*ms)。

velEnd

插补段的终点速度。取值范围:[0, 4000),单位:pulse/ms。该值只有在没有使用前瞻预处理功能时才有意义,否则该值无效。默认为:0

FifoIndex

插补缓存区号,取值范围:[0,1],默认为:0

segNum

用户自定义段号

例程代码:

       /*
函数名:    int GA_HelixXYCZ(short nCrdNum,long x,long y,long z,double xCenter,double yCenter,float k, short circleDir,double synVel,double synAcc,double velEnd=0,short FifoIndex=0,long segNum=-1)
函数说明:    缓存区指令,XY平面螺旋线插补(以终点坐标和圆心位置为输入参数)
参数说明:    nCrdNum坐标系号,取值范围:[1,CRDSYS_MAX_COUNT]
            x
            y
            z
            xCenter 圆弧插补的圆心x方向相对于起点位置的偏移量
            yCenter 圆弧插补的圆心Y方向相对于起点位置的偏移量
            k 螺距
            circleDir 圆弧的旋转方向0顺时针圆弧1逆时针圆弧
            synVel 插补段的目标合成速度。取值范围:(0,32767),单位:pulse/ms。
            synAcc 插补段的合成加速度。取值范围:(0,32767),单位:pulse/(ms*ms)。
            velEnd 插补段的终点速度。取值范围:[0,32767),单位:pulse/ms。该值只有在没有使用前瞻预处理功能时才有意义,否则该值无效。默认为:0
            FifoIndex   插补缓存区号,取值范围:[0,1],默认为:0
            segNum:用户自定义段号
返回值:    0成功,其他失败
注意事项:  从R格式转换为IJ,待完成
*/
   
    for(int i=0; i<2; i++)
    {
        MC_HelixXYCZ(1,5000,-5000,10000-4000*i-1000,5000.0,0.0,4000.0,0,50,1,0,0,4*i+0);
        MC_HelixXYCZ(1,10000,0,10000-4000*i-2000,0,5000,4000,0,50,1,0,0,4*i+1);
        MC_HelixXYCZ(1,5000,5000,10000-4000*i-3000,-5000,0,4000,0,50,1,0,0,4*i+2);
        MC_HelixXYCZ(1,0,0,10000-4000*i-4000,0,-5000,4000,0,50,1,0,0,4*i+3);
    }   

    iRes = MC_HelixXYCCount(1,5000,0,2000,0.5,1,50,0.5,0,0,3);
    iRes = MC_HelixXYCCount(1,5000,0,-2000,0.5,1,50,0.5,0,0,3);
    iRes = MC_HelixXYCCount(1,5000,0,2000,0.5,0,50,0.5,0,0,3);
    iRes = MC_HelixXYCCount(1,5000,0,-2000,0.5,0,50,0.5,0,0,3);

博派智能ETH_GAS系列4轴运动控制卡接线示意图(8轴和16轴篇幅限制没有放上来)

博派智能ETH_GAS系列4轴运动控制卡应用示意图(8轴和16轴篇幅限制没有放上来)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值