# IGH_EtherCAT_Master **Repository Path**: Chester_Xue/IGH_EtherCAT_Master ## Basic Information - **Project Name**: IGH_EtherCAT_Master - **Description**: EhterCAT Master主站 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-14 - **Last Updated**: 2025-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: EtherCAT, 控制程序 ## README # ZeroErr eRob90 双关节控制器 基于 IgH EtherCAT Master 的 ZeroErr eRob90 双关节运动控制系统。 ## 项目概述 本项目是一个实时的双关节控制系统,通过 EtherCAT 总线与 ZeroErr eRob90 驱动器通信,实现精确的关节位置控制。系统支持键盘实时控制,具有完整的驱动器状态机管理和实时性能保证。 ## 功能特性 - **双关节独立控制**:同时控制两个 ZeroErr eRob90 驱动器 - **实时性能**:1000Hz 控制频率,使用实时调度策略 - **键盘交互**:支持键盘实时控制关节运动 - **状态机管理**:完整的 CiA 402 标准驱动器状态机实现 - **多种控制模式**:支持位置、速度、力矩控制模式(默认位置模式) - **安全机制**:紧急停止、故障复位、超时保护 - **实时状态监控**:实时显示关节位置、速度、状态信息 ## 系统要求 ### 硬件要求 - ZeroErr eRob90 驱动器 ×2 - 支持 EtherCAT 的网卡 - 实时 Linux 系统(如 Xenomai 或 PREEMPT_RT) - CPU 至少双核(建议使用 CPU 0 和 CPU 4) ### 软件依赖 - IgH EtherCAT Master 库 - C++17 编译器 - Linux 实时内核补丁 ## 编译和安装 ### 1. 安装依赖 ```bash # 安装 IgH EtherCAT Master sudo apt-get install ethercat-dev # 安装编译工具 sudo apt-get install build-essential cmake ``` ### 2. 编译项目 ```bash # 创建构建目录 mkdir build cd build # 配置和编译 cmake .. make ``` ### 3. 设置实时权限 ```bash # 添加用户到实时组 sudo usermod -a -G realtime $USER # 设置程序为实时可执行 sudo chown root:realtime main_controller sudo chmod 4750 main_controller ``` ## 使用方法 ### 启动控制器 ```bash sudo ./main_controller ``` ### 键盘控制命令 #### 关节1控制 - **W** - 关节1正向转动 (0-360°) - **S** - 关节1反向转动 (0-360°) - **空格键** - 关节1停止 #### 关节2控制 - **I** - 关节2正向转动 (0-360°) - **K** - 关节2反向转动 (0-360°) - **0** - 关节2停止 #### 速度控制 - **+** - 增加运动速度 - **-** - 减小运动速度 - 默认速度:1000 - 最小速度:1000 - 速度按2倍递增/递减 #### 系统控制 - **Q** - 退出控制程序 - **H** - 显示帮助 - **Ctrl+C** - 强制退出程序 ## 系统架构 ### 主要组件 #### 1. ZeroErrDriver 类 - 驱动器通信和控制核心 - EtherCAT PDO 配置和管理 - 驱动器状态机处理 - 支持位置、速度、力矩模式 #### 2. KeyboardController 类 - 键盘输入处理 - 命令队列管理 - 用户交互界面 - 实时状态回调 #### 3. MainController 主程序 - 系统初始化和配置 - 实时调度设置 - 主控制循环 - 错误处理和清理 ### 控制流程 ``` 键盘输入 → 命令解析 → 驱动器控制 → 关节运动 ↓ 状态反馈 → 实时显示 ``` ## 配置参数 ### 系统配置 ```cpp #define CONTROL_FREQUENCY 1000 // 控制频率:1000Hz #define CYCLE_TIME_NS 1000000 // 周期时间:1ms #define DEFAULT_SPEED 1000 // 默认速度:1000 ``` ### EtherCAT 配置 ```cpp #define ZEROERR_VENDOR_ID 0x5a65726f // ZeroErr厂商ID #define ZEROERR_PRODUCT_CODE 0x00029252 // ZeroErr产品代码 ``` ## 故障排除 ### 常见问题 1. **EtherCAT 主站无法请求** - 检查 EtherCAT 主站是否已启动:`sudo /etc/init.d/ethercat start` - 检查网卡是否正确配置 2. **实时权限问题** - 确保用户加入 realtime 组 - 检查 ulimit 设置:`ulimit -r unlimited` 3. **驱动器无法进入操作状态** - 检查物理连接 - 确认驱动器电源和使能信号 - 查看状态字输出信息 4. **键盘输入无响应** - 检查终端设置 - 确认键盘线程是否正常运行 ### 调试信息 系统提供详细的调试信息,包括: - 驱动器状态转换 - PDO 注册状态 - 实时控制周期 - 关节位置和速度 ## 安全注意事项 1. **紧急停止** - 程序支持紧急停止命令 - 可通过信号处理强制停止 2. **限位保护** - 确保机械限位开关正常工作 - 软件中设置合理的位置限制 3. **故障恢复** - 自动故障检测和复位 - 最大尝试次数限制(默认5次) 4. **实时性能** - 确保系统无其他高负载任务 - 监控控制周期延迟 ## 文件说明 - **MainController.cpp** - 主控制程序 - **ZeroErrDriver.h/cpp** - 驱动器控制类 - **KeyboardController.h/cpp** - 键盘控制类 - **igh_driver.cpp** - 原始 IgH 示例代码(参考) ## 许可证 本项目基于 IgH EtherCAT Master,遵循相应的开源许可证。 ## 技术支持 如有问题,请参考: - IgH EtherCAT Master 文档 - ZeroErr eRob90 驱动器手册 - CiA 402 运动控制标准 ## 版本历史 - v1.0 - 初始版本,支持双关节位置控制 - v1.1 - 添加键盘控制,改进状态机管理 - v1.2 - 优化实时性能,增加故障处理 --- **注意**:在实际使用前,请确保已充分理解 EtherCAT 实时通信原理和运动控制安全规范。建议在专业人士指导下进行系统调试和运行。