PCO 位置比较输出
PCO(Position Compare Output)在轴经过指定位置时由驱动器硬件直接输出脉冲,与上位机无关,时间精度由 FPGA 保证。通过 Controller.Commands[TaskId].PCO 访问,全部指令随任务运动流按序执行(配置先于其后的运动生效)。
配置流程
var commands = controller.Commands[TaskId.T01];
commands.PCO.Unit(PcoUnitMode.EngineeringUnits); // 单位:用户单位(EU)
commands.PCO.Config("X", 10); // 每 10 EU 触发一次
commands.PCO.Pulse("X", 100); // 脉宽 100 µs
commands.PCO.Window("X", 200, 800); // 只在 200~800 区间内输出
commands.PCO.Arm("X"); // 打开(Arm)
// …运动…
commands.PCO.Disarm("X"); // 关闭
PCOCommands 方法
所有带轴参数的方法都有 int(轴号)与 string(轴名)两个重载,下表以 string 为例。
Unit
public void Unit(PcoUnitMode Mode)
设置 PCO 距离单位。全局生效,重启后复位为 EngineeringUnits。单位影响 Config / ConfigVector 的间隔与 Window 的上下限换算。
Config
public void Config(string Axis, double Distance, PcoDirection Direction = PcoDirection.Both)
标量触发模式:轴每走过 Distance 输出一次脉冲。Distance 必须大于 0。
ConfigVector
public void ConfigVector(string AxisA, string AxisB, double Pitch)
矢量触发模式:按两轴合成轨迹长度每 Pitch 触发一次。两轴须在同一驱动器且 CountsPerUnit 相同;方向仅支持双向(无方向参数)。标量配置会覆盖矢量配置,反之亦然。
Pulse
public void Pulse(string Axis, double WidthUs)
public void Pulse(string Axis, double WidthUs, double PeriodUs)
public void Pulse(string Axis, double WidthUs, double PeriodUs, int Count)
脉冲波形:脉宽 ≥ 0.02 µs;周期 ≥ 脉宽(缺省 = 脉宽,即单次脉冲);次数 1~255(缺省 1)。
Window
public void Window(string Axis, double Low, double High)
窗口门控:只在 Low ~ High 位置区间内输出脉冲(单位随 Unit)。须先 Config。
WindowOff
public void WindowOff(string Axis)
关闭窗口门控。
Arm
public void Arm(string Axis)
打开 PCO:内部先 Disarm 再 Arm 产生锁存沿,按已写入的间隔/波形/窗口配置开始输出。须先 Config;打开后轴状态字 PcoArmed 位置位(见 Status)。
Disarm
public void Disarm(string Axis)
关闭 PCO,停止输出。
Count
public int Count(string Axis)
读取轴所在驱动器的 PCO 已触发脉冲计数(即时 SDO 读,不经指令队列,自上次 Arm 起累计)。
枚举
PcoUnitMode
| 值 | 数值 | 说明 |
|---|---|---|
EngineeringUnits |
0 | 用户单位(EU),默认 |
EngineeringUnitsPerThousand |
1 | EU / 1000 |
Counts |
2 | 编码器 counts |
PcoDirection
| 值 | 数值 | 说明 |
|---|---|---|
Both |
0 | 双向触发(默认) |
Positive |
1 | 仅正向 |
Negative |
2 | 仅负向 |
注意事项
- 配置经内核代理写入驱动器 SDO,写入超时 2 s,超时任务报
ProgramTimeout。 - 同一驱动器只有一套 PCO 引擎;
Config/ConfigVector互为覆盖关系,Arm前最后一次配置生效。
相关页面
- Commands 命令 — 命令树结构
- Status 状态读取 —
PcoArmed状态位查询 - Terminal 指令 · PCO —
PCO UNIT/PCO CONFIG等字符串指令 - OneScript PCO 指令 — 脚本侧对应