### MOVE_OP -- 缓冲输出

类型 | 特殊运动指令
描述 | BASE 轴运动缓冲加入一个输出口操作。 这个指令 LOAD 执行时不做任何运动，只操作输出口。语法同 OP 指令。 普通模式，误差在一个扫描周期，所有控制器都可使用。 精准位置输出模式，误差 1 微秒以内，4 系列产品，20170421 以上版本支持。 1. 只有支持硬件比较输出的 OP 口才支持精准输出功能。 2. 每个生效的精准输出 MOVE_OP 需要间隔 1 个周期时间才能继续生效，此间隔内新的 MOVE_OP 自动使用普通方式，超过此间隔，新 MOVE_OP 可继续生效。连续的 MOVE_OP，因为没有间隔时间，只有第一个生效。（某些控制器可以多个精准输出同时触发，具体查看控制器硬件手册说明，例如 ZMC420SCAN 前 8 个输出口支持精准输出，而且每个输出口可以同时使用精准输出） 3. 在控制器支持 OP 口独立的情况下，不同 OP 口就算多个轴 MOVE_OP 精准输出也不冲突，在 OP 口精准输出功能不独立的情况，同时使用精准功能可能冲突。 4. MOVE_OP 精准功能基于 BASE 主轴，多个轴插补时，与 BASE 主轴 ATYPE 类型不一样的从轴，无法保证精准位置输出。
语法 | 语法一：MOVE_OP ([ionum],value) ionum：输出编号，从 0 开始 value：输出状态，多个输出口操作时按位来指明多个口状态 语法二：MOVE_OP (ionum1, ionum2,value[,mask]) ionum1：要操作的第一个输出通道 ionum2：要操作的最后一个输出通道 value：输出状态，多个输出口操作时按位来指明多个口状态 mask：按位来设置值，指定哪些 IO 需要操作，不填时从第一个通道到最后一个通道都操作
适用控制器 | 通用
例子 | 例一：普通模式使用 BASE(0) UNITS=100 DPOS=0 SPEED=200 ACCEL=1000 DECEL=1000 TRIGGER '自动触发示波器 MOVE(500) MOVE_OP (0,ON) '等待上条运动完成后，OUT0 口输出信号 MOVE(500) MOVE_OP (0,OFF) '等待上条运动完成后，OUT0 口关闭信号 MOVE_OP(1,4,15) 'OUT1-4 口输出信号，15 对应二进制 1111 轨迹曲线，为方便查看，进行了竖直偏移 DPOS(0)垂直刻度 1000 OP(0)垂直刻度 1,偏移-0.1 OP(1)垂直刻度 1,偏移-0.2 OP(2)垂直刻度 1,偏移-0.3 OP(3)垂直刻度 1,偏移-0.4 OP(4)垂直刻度 1,偏移-0.5 例二：精准位置输出模式 BASE(0) UNITS=100 DPOS=0 SPEED=200 ACCEL=1000 DECEL=1000 TRIGGER '自动触发示波器 ATYPE=1 MERGE=1 AXIS_ZSET(0)=2 '开启 MOVE_OP 的精准输出功能 MOVE(100) MOVE_OP(0,1) '精准生效 MOVE(100) '超过 2MS 时间, 下个 MOVE_OP 可继续精准生效 MOVE_OP(0,0) '精准生效 MOVE(100) 轨迹曲线 DPOS(0)垂直刻度 300 OP(0)垂直刻度 1 例三：编码器精准位置输出模式 20170505 以上固件版本支持 DIM opnum AXIS_ZSET = 3+16 'BIT4 支持编码器精确位置 BASE(0) ATYPE= 4 '轴使用脉冲加编码器类型，必须实际有接编码器线 DPOS=0 MPOS=0 UNITS=1000 SPEED= 1000 ACCEL = 1000 MERGE=1 TRIGGER opnum = 0 MOVEOP_DELAY = 2 '实际输出时间延迟 2ms HW_TIMER(0) OP(opnum,0) '初始化 OP HW_TIMER(2, 10000, 5000, 1, 0, opnum) '输出变为 on 后, 5000us 后切换为 off MOVE(200) MOVE_OP(opnum,1) '输出 on 后靠 HW_TIMER 来延时关闭，延时 5ms 后关闭 MOVE(100) MOVE_OP(opnum,1) MOVE(50) END 轨迹曲线 DPOS(0)垂直刻度 200 OP(0)垂直刻度 2
相关指令 | OP，MOVE_OP2 精准位置输出模式 SYSTEM_ZSET，AXIS_ZSET