### 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) 'table 从 10 开始存数据 TRIGGER '自动触发示波器 CAM(10,17,100,500) '运动轨迹为 table10 到 17，运动总时间为 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 0 到 360，运动总时间为 100/100=1s CAM(0,360,100,200) '运动轨迹为 table 0 到 360，运动总时间为 200/100=2s CAM(0,360,100,300) '运动轨迹为 table 0 到 360，运动总时间为 300/100=3s WAIT UNTIL REMAIN_BUFFER(1) > 0 '等待缓冲空间空了再存运动指令 CAM(0,360,100,100) '运动轨迹为 table 0 到 360，运动距离为 100*table 数据/units(0) CAM(0,360,200,100) '运动轨迹为 table 0 到 360，运动总时间 200*table 数据/units(0) DPOS(0)垂直刻度 20000 MSPEED(0)垂直刻度 60000
相关指令 | CAMBOX