### CAMBOX -- 跟随凸轮表运动

类型 | 同步运动指令
描述 | CAMBOX 指令根据存储在 TABLE 中的数据来决定轴的运动，这些 Table 数据值对应运动轨迹的位置，是相对于运动起始点的距离。跟随轴的运动根据参考轴的运动来进行。 注：两个或多个 CAMBOX 指令可以同时使用同一段 Table 数据区进行操作。 当前轴运动的总时间由参考轴的运动距离和轴速度确定，速度自动匹配。 Table 数据需要手动设置，第一个数据为引导点，建议设为 0。 Table 数据*table multiplier 这个比例=发出的脉冲数。 请确保指令传递的距离参数*units 是整数个脉冲，否则出现浮点数会导致运动有细微误差。
语法 | CAMBOX(start_point, end_point, table_multiplier, link_distance , link_axis[, link_options][, link_pos][, link_offpos]) start point：起始点 TABLE 编号，存储第一个点的位置 end point：结束点 TABLE 编号 table multiplier：位置乘以这个比例，一般设为脉冲当量值 link_distance：参考轴运动的距离 link_axis：参考轴轴号 link_options：与参考轴的连接方式，不同的二进制位代表不同的意义
位 | 意义
bit0 | 当参考轴 MARK 信号事件触发时，当前轴与参考轴开始进行连接运动
bit1 | 当参考轴运动到设定的绝对位置时，当前轴与参考轴开始连接运动
bit2 | 自动重复连续双向运行。(通过设置 REP_OPTION=1，可以取消重复)
bit4 | 从中间某个位置启动，配合掉电中断实现恢复凸轮
bit5 | 只有参考轴的正向运动才连接
bit8 | 当参考轴 MARKB 信号事件触发时，当前轴与参考轴开始进行连接运动，锁存轴号为参考轴的轴号，需要最新固件支持
link_pos：当 link_options 参数设置为 2 时，该参数表示连接开始启动的绝对位置 link offpos：当 link_options 参数 bit4 置为 1 时，该参数表示主轴已经运行完的相对位置
适用控制器 | 通用
例子 | ERRSWITCH = 3 RAPIDSTOP(2) WAIT IDLE(0) WAIT IDLE(1) BASE(0,1) '选择轴号 ATYPE=1,1 '脉冲方式步进或伺服 DPOS = 0,0 UNITS = 100,100 '脉冲当量 SPEED = 200,200 ACCEL = 2000,2000 DECEL = 2000,2000 '计算 TABLE 的数据 DIM deg, rad, x, stepdeg stepdeg = 2 '可以通过这个来修改段数，段数越多速度越平稳 FOR deg=0 TO 360 STEP stepdeg rad = deg * 2 * PI/360 '转换为弧度 x = deg * 25 + 10000 * (1-COS(rad))/100 TABLE(deg/stepdeg,x) '存储 TABLE TRACE deg/stepdeg,x NEXT deg TRIGGER '自动触发示波器 WHILE 1 '循环运动 IF IN(0) = ON THEN '输入 0 有效启动运动 DPOS = 0,0 CAMBOX(0,360/stepdeg, 100, 500, 1,2,100) AXIS(0) '参考轴轴 1 运动到 100 位置时，跟随轴轴 0 启动 MOVE(600) AXIS(1) WAIT UNTIL IDLE AND IDLE(1) '等待运动停止 DELAY(100) '延时 ENDIF WEND END '停止当前任务 运动轨迹 DPOS(0)垂直刻度 5000 DPOS(1)垂直刻度 500 速度曲线 MSPEED(0)垂直刻度 3000 MSPEED(1)垂直刻度 500
相关指令 | CAM