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轴篇幅限制没有放上来)


3328

被折叠的 条评论
为什么被折叠?



