跳转至

PCO 指令(位置比较输出)

PCO 在轴经过指定位置时由硬件直接输出脉冲,与上位机无关,时间精度由 FPGA 保证。9 个指令覆盖:单位、触发间隔、脉冲波形、窗口门控、臂控、计数。点击指令名查看独立介绍页。

配置流程

PcoUnit(0)                    -- 单位:0=用户单位(EU)
PcoConfig(X, 10)              -- 每 10 EU 触发一次
PcoPulse(X, 100)              -- 脉宽 100 µs
PcoWindow(X, 200, 800)        -- 只在 200~800 counts 区间内输出
PcoArm(X)                     -- 打开(Arm)
-- …运动…
PcoDisarm(X)                  -- 关闭
Print("fired: " .. PcoCount(X))

指令一览

指令 签名 说明
PcoUnit PcoUnit(u) 距离单位:0=EU,1=EU/1000,2=counts。全局生效,重启后复位
PcoConfig PcoConfig(轴, 间隔 [, 方向]) 标量触发间隔。方向:0=双向(默认),1=正向,2=负向
PcoConfigV PcoConfigV(轴A, 轴B, 节距) 矢量模式:按两轴轨迹长度触发。两轴须在同一驱动器且 CountsPerUnit 相同;方向仅支持 0
PcoPulse PcoPulse(轴, 脉宽µs [, 周期µs [, 次数]]) 波形:脉宽 ≥ 0.02 µs;周期 ≥ 脉宽;次数 1~255
PcoWindow PcoWindow(轴, 下限, 上限) 窗口门控(counts),须先 PcoConfig
PcoWindowOff PcoWindowOff(轴) 关闭窗口
PcoArm PcoArm(轴) 打开 PCO(内部先 Disarm 再 Arm 产生锁存沿);轴状态字 PcoArmed 位置位
PcoDisarm PcoDisarm(轴) 关闭 PCO
PcoCount 次数 = PcoCount(轴) 读已触发次数(即时 SDO 读,不入队列);无总线/无驱动时返回 nil

注意事项

  • PCO 指令随运动流按序执行(配置先于其后的运动生效),配置写入超时 2 s,超时脚本报 ProgramTimeout。
  • 计数 PcoCount 是即时读取,可在运动中随时调用。
  • 完整的打标/栅格扫描示例见 例程