CAM -- 凸轮表运动

类型

同步运动指令

描述

CAM指令根据存储在TABLE中的数据来决定轴的运动,这些Table数据值对应运动轨迹的位置,是相对于运动起始点的绝对位置。

 

注:两个或多个CAM指令可以同时使用同一段TABLE数据区进行操作。

运动的总时间由设置速度和第四个参数决定,运动的实际速度根据TABLE轨迹与时间自动匹配。

TBALE数据需要手动设置,第一个数据为引导点,建议设为0

TABLE数据*table multiplier这个比例=发出的脉冲数。

 

请确保指令传递的距离参数*units是整数个脉冲,否则出现浮点数会导致运动有细微误差。

语法

CAM(start point, end point, table multiplier, distance)

start point:起始点TABLE编号,存储第一个点的位置

end point:结束点TABLE编号

table multiplier:位置乘以这个比例,一般设为脉冲当量值

distance:参考运动的距离

     总时间=distance/speed

适用控制器

通用

例子

例一:

RAPIDSTOP(2)

WAIT  IDLE(0)

WAIT  IDLE(1)

BASE(0)

UNITS=100

DPOS=0

ACCEL=1000

DECEL=1000

SPEED=100

TABLE(10,0,80,75,40,50,20,50,0)   'table10开始存数据

TRIGGER              '自动触发示波器

CAM(10,17,100,500)   '运动轨迹为table1017,运动总时间为500/100=5s

 

轨迹与速度

DPOS(0)垂直刻度100

MSPEED(0)垂直刻度100

 

例二:CAM在高速高精度运动上的应用

DIM  num_p,scale,m,t   '变量定义

num_p=100

scale=500

FOR p=0 TO num_p

   TABLE(p,((-SIN(PI*2*p/num_p)/(PI*2))+p/num_p)*scale)  'table存储凸轮表运动参数

NEXT

RAPIDSTOP(2)

WAIT  IDLE(0)

WAIT  IDLE(1)

BASE(0)      '选择轴0

DEFPOS(0)

SERVO=ON

UNITS=500

SPEED=1000

ACCEL=1000000

DECEL=1000000

TRIGGER

 

m=10        '代表距离的倍数

t=0.3       '运行时间

SPEED=1000

CAM(0,100,m,SPEED*t)

WAIT IDLE

 

m=10

t=0.3

SPEED=1000

CAM(0,100,-m,SPEED*t)

WAIT IDLE

 

m=10

t=0.2

SPEED=500

CAM(0,100,m,SPEED*t)

WAIT IDLE

 

m=10

t=0.2

SPEED=500

CAM(0,100,-m,SPEED*t)

WAIT IDLE

 

m=20

t=0.3

SPEED=1000

CAM(0,100,m,SPEED*t)

WAIT IDLE

 

m=20

t=0.5

SPEED=500

CAM(0,100,-m,SPEED*t)

WAIT IDLE

 

插补轨迹

DPOS(0)垂直刻度20

MSPEED(0)垂直刻度100

 

例三:连续凸轮

RAPIDSTOP(2)

WAIT  IDLE(0)

BASE(0)

UNITS=100

DPOS=0

ACCEL=1000

DECEL=1000

SPEED=100

 

DIM rad,x,deg

FOR deg= 0 TO 360 STEP 1    '构造0-360度的凸轮数据

rad = deg * 2 * PI / 360

x = deg * 2 + 10000 * ( 1 - COS (rad))

TABLE (deg ,x)

print deg,x

NEXT deg

 

TRIGGER              '自动触发示波器

CAM(0,360,100,100)   '运动轨迹为table 0360,运动总时间为100/100=1s

CAM(0,360,100,200)   '运动轨迹为table 0360,运动总时间为200/100=2s

CAM(0,360,100,300)   '运动轨迹为table 0360,运动总时间为300/100=3s

WAIT UNTIL REMAIN_BUFFER(1) > 0    '等待缓冲空间空了再存运动指令

CAM(0,360,100,100)   '运动轨迹为table 0360,运动距离为100*table数据/units(0)

CAM(0,360,200,100)   '运动轨迹为table 0360,运动总时间200*table数据/units(0)

 

DPOS(0)垂直刻度20000

MSPEED(0)垂直刻度60000

相关指令

CAMBOX