ZeroErr EtherCAT 通讯参考
常用对象
| 对象 | 别名 | 含义、单位 |
|---|---|---|
| 0x1008 | DeviceName | 设备名称 |
| 0x1009 / 0x100A | HardwareVersion / SoftwareVersion | 硬件/软件版本字符串 |
| 0x1018:1~4 | VendorId、ProductCode、SerialNumber 等 | 身份记录 |
| 0x2422 | FirmwareVersion | 数值固件版本 |
| 0x6040 / 0x6041 | Controlword / Statusword | CiA402 控制字/状态字 |
| 0x603F | ErrorCode | 故障码,十六进制解释 |
| 0x6060 / 0x6061 | OperationMode / ModeDisplay | 请求/反馈模式:1 PP、3 PV、4 PT、8 CSP、9 CSV、10 CST |
| 0x6064 / 0x606C | Pos / SpdActual | 用户位置 count、速度 count/s |
| 0x607A / 0x60FF | TargetPosition / Speed | 目标位置 count、速度 count/s |
| 0x6081 / 0x6083 / 0x6084 | ProfileVelocity / Accel / Decel | 轮廓速度、加速度、减速度 |
| 0x6071 | TargetTorque | 目标电流,占额定电流的千分比 |
| 0x6077 / 0x6078 | TorqueActual / CurrentActual | 实际电流,占额定电流的千分比 |
| 0x6075 | RatedCurrent | 额定电流 mA |
| 0x6079 | VBus | 母线电压 mV |
| 0x20A0 | AuxiliaryPosition | 辅助位置 count |
| 0x2240 / 0x2241 | MotorEncPos / DualEncoderDifference | 电机编码器位置 / 双编码器差值 |
| 0x1010:1 | StoreParameters | 写入 0x65766173 保存;状态 1 执行中、2 完成 |
原始字典的读取类型由 ESI 提供;字符串按现场返回长度解码。
通讯经验
- 一个网口由一个持续服务负责 PDO 和 CoE;运动中通过该服务查参,保持周期报文。
- Windows 默认采用 Free-run,配置 0x1C32:1 和 0x1C33:1 为 0。配置 PDO 后持续收发并请求 OP;OP 转换请求发一次,等待状态完成。DC 模式对主机周期精度有要求,Windows 调度抖动可能触发 0x001A 同步错误。
- 模式切换顺序为目标归零、失能、选择模式、确认模式、CiA402 使能;模式切换完成后再下发非零目标。
- 使能/失能之间等待大于 300 ms;每次新使能后等待至少 500 ms 再发运动目标,依据通讯手册第 41–42 页。0x60FE bit0 是数字输出控制,0 表示抱闸合上、1 表示松开,不是独立机械状态反馈,不用于判断抱闸已动作。
- PP 使用绝对位置命令,bit4 上升沿触发。
--relative在主机侧把当前位置与位移相加,再下发绝对位置。 fault-reset使用 0x6040 bit7。0x730F / 十进制 29455 表示负载编码器多圈电池低电量;若复位后重现,应处理电池与编码器报警,不能当成停机残留码。- 采集显式选择
--after stop或--after preserve;实时显示只读取状态。实际驱动故障或连续 PDO 通讯失败时,服务撤销运动输出并返回故障。 - 主机 CSV 按实际接收时间记录;高频谐波分析需要先确认采样率、时间抖动和观测通道是否满足测量要求。
按返回信息排错
| 返回或现象 | 处理 |
|---|---|
| Windows 缺 Npcap 或 wpcap.dll | 从 Npcap 官网安装并选择 WinPcap API-compatible Mode;使用当前虚拟环境的 64 位 Python。 |
| macOS BPF 权限不足 | 参照 macOS 指南 通过 sudo 启动一次服务,后续普通用户复用。 |
| 网口有链路、discover 无从站 | 链路不等于 EtherCAT 响应;核对实际有线接口、模组供电、IN 口及当前固件协议。EtherCAT 不使用 CAN ID 或模组 IP。 |
| 已有服务或网口被占用 | 使用同一 --interface、--slave、--port 的 status / state;需要换网口时明确 close 原服务,再连接。其它主站占用时先在其软件内断开。 |
| 进入 OP 失败 | 保留实际 AL 状态码,核对从站 ESI、固定 PDO 映射和同步模式;默认 --sync free,不要仅为消除错误任意切到 DC。 |
| 周期中断、WKC 不足 | 检查实际周期与有效行、线缆/供电/网卡状态及主站独占;错误消除后重新连接。请求周期不能替代实测周期。 |
| SDO abort | 以对应 ESI 的索引、子索引、数据类型、权限和设备状态定位;不是 CiA402 故障码。 |
| 无法使能或运行中故障 | 读取 ErrorCode、Statusword、ModeDisplay,按公开手册解释;fault-reset 复位后重现时处理对应物理或配置原因。 |
缺依赖时先执行安装;字典检索、示例 --help 和离线测试可不连接硬件运行。网口重新打开与服务内状态读取是两条不同路径,已有服务时使用后者维持周期通讯。
官方资料
- CANopen / EtherCAT 通讯手册 v1.10(本地 PDF):官网原文件。
- 机器人关节模组用户手册 v3.44(本地 PDF):官网原文件。
- EtherCAT 设备描述文件(官网原始 ZIP):官网下载。程序当前使用的 XML 位于 esi/ZeroErr Driver_V3.2.0.xml。
- ZeroErr 资料下载页:查找当前官网提供的手册和设备描述文件。
- PySOEM 文档。
- Npcap 下载与许可。
Agent 按需查阅详细资料
已有命令直接调用。遇到本包未覆盖的通讯错误,或任务需要新的工况、采集通道时,Agent 优先查上方附带的本地通讯手册与 ESI。接线、指示灯和供电问题查本地关节模组用户手册。需要新版资料时,再自行打开 ZeroErr 资料下载页,从“通讯手册”栏目下载 eRob CANopen and EtherCAT 用户手册及 EtherCAT设备描述文件;下载到当前工作目录的 references/downloads/ 并复用。
| 当前需求 | 查阅内容与处理路径 |
|---|---|
| 通讯失败、无法进入 OP、PDO 中断 | 用本次返回的从站状态、AL 状态码、WKC 和异常文本定位;在通讯手册中检索 EtherCAT 状态机、同步、PDO、SDO 及对应错误码。PySOEM 接口与异常含义查其官方文档。 |
| 驱动故障或无法使能 | 按 0x603F 错误码查通讯手册的报错原因与处理方法,结合 0x6041 状态字、0x6040 控制字判断动作。驱动错误码与 EtherCAT AL 状态码分别解释。 |
| 自行设计运动与采集 | 查所用 PP/PV/PT 或同步模式的目标量、单位、控制字时序;查目标通道的索引、子索引、类型、位长、PDO 映射属性及周期要求。搜索关键词:SDO、PDO、0x1C12、0x1C13、RxPDO、TxPDO、对象字典。 |
工况用已支持的运动和采集命令组合执行。需要扩展固定 PDO 通道时,依据手册与 ESI 在现有持续通讯服务内修改映射、编解码及 CSV 字段,沿用同一个主站;完成实际采集后再报告该通道已可用。下载链接变化时,从官网资料页按上述资料名称查找。