IGH EtherCAT Master手册:Linux开源实现

4星 · 超过85%的资源 需积分: 50 77 下载量 156 浏览量 更新于2024-07-18 2 收藏 889KB PDF 举报
"IGH EtherCAT manual,这是一份关于Linux开源EtherCAT主站igh的官方用户手册,由Dipl.-Ing.(FH) Florian Pose编写,详细介绍了IgH EtherCAT Master的特性和架构,以及应用接口、以太网设备、状态机等相关内容。" 《IGH EtherCAT手册》详细阐述了用于Linux平台的开源EtherCAT主站软件IgH EtherCAT Master的各个方面。该手册是了解和使用IgH EtherCAT Master进行 EtherCAT通信的重要参考资料。 1. **IgH EtherCAT Master** - **特性总结**:手册在1.1章节中概述了IgH EtherCAT Master的主要功能,包括其高效的数据传输能力、灵活的配置选项和对EtherCAT协议的全面支持。 - **授权**:在1.2章节中,手册详细说明了软件的许可协议,提供了关于如何合法使用和分发软件的信息。 2. **架构** - **主站模块**:2.1章节讨论了Master Module的设计,它是实现EtherCAT通信的核心部分,负责与从站设备的交互和数据交换。 - **主站阶段**:2.2章节解释了主站操作的不同阶段,如初始化、扫描、配置等,这些阶段构成了EtherCAT通信的生命周期。 - **过程数据**:2.3章节介绍了如何处理和管理EtherCAT网络中的过程数据。 3. **应用接口** - **主站配置**:3.1章节详细说明了如何配置主站,包括设置从站配置和主站参数。 - **周期性操作**:3.2章节讲述了主站如何进行周期性的数据传输,这是实时控制的关键部分。 - **VoE处理程序**:3.3章节涵盖了值对象事件(Value Object Events, VoE)处理程序,它们处理设备状态的改变。 - **并发主站访问**:3.4章节讨论了在同一时间多主站访问网络的策略和处理方法。 - **分布式时钟**:3.5章节介绍了如何实现分布式时钟同步,这对于精确的时间同步至关重要。 4. **以太网设备** - **网络驱动基础**:4.1章节为理解以太网设备的驱动工作原理提供了基础。 - **原生EtherCAT设备驱动**:4.2章节深入探讨了专为EtherCAT设计的设备驱动。 - **通用EtherCAT设备驱动**:4.3章节介绍了一种兼容多种设备的通用驱动方法。 - **提供以太网设备**:4.4章节解释了如何在系统中添加和管理以太网设备。 - **冗余**:4.5章节讨论了网络冗余技术,以提高系统可靠性。 - **以太网设备接口**:4.6章节定义了主站与以太网设备之间的接口规范。 - **修补原生网络驱动**:4.7章节提供了关于如何修改和适应现有网络驱动以支持EtherCAT的指导。 5. **状态机** - **状态机理论**:5.1章节介绍了状态机的基本概念,为后续的理解提供了理论基础。 - **主站状态模型**:5.2章节详细描述了主站的状态模型及其工作原理。 - **主站状态机**:5.3章节阐述了主站状态机的结构和行为。 - **从站扫描状态机**:5.4章节分析了从站扫描过程的状态机。 - **从站配置状态机**:5.5章节讨论了配置从站时的状态机变化。 - **状态变更状态机**:5.6章节介绍了状态改变的管理机制。 - **SII状态机**:5.7章节涉及服务信息接口(Service Information Interface, SII)的状态机。 - **PDO状态机**:5.8章节讲解了过程数据对象(Process Data Objects, PDO)的状态管理。 手册涵盖了从基本概念到高级特性的广泛内容,为开发者提供了全面的指导,帮助他们理解和实现基于IgH EtherCAT Master的 EtherCAT通信解决方案。
2019-10-16 上传
之前工作有接触到Ethercat 并学习实践了IghMaster库,现在不做这方面工作了把代码开源出来,希望对大家有用。 代码使用Source Insight 3.5编辑的,用其它编辑器可能会出现乱码。 压缩包中包含了 1.基于Ighmaster 1.5.2驱动Sanyo,泰科伺服电机做力矩模式运动的代码。包含电机使能/禁止使能,设置运行模式,控制模式,发送力矩控制命令,读取力矩反馈等功能。基于SDO方式实现的代码。 2. 基于Ighmaster 1.5.2 驱动Et100 Io板代码,基于PDO,SDO方式的Io控制及温湿度读取 3. 测试例子包括了介于原生驱动接口ioctl方式控制码和基于libethercat库的驱动代码。具体见源代码。 文档目录结构及简要说明 0.Ethercat调试记录.txt 自己调试Ethercat过程中碰到的问题及解决办法 1. libethercat\std 目录 编译Igh生成的ethecat库 2. libethercat\include Igh Master Ethercat库包含的头文件 3. scripts/ 自动生成从站信息的相关脚本文件,要生成从站信息,将该文件夹复制到开发板运行GenerateSlavesConfig.sh。 默认生成ec_common_configs_define.h和ec_common_configs_define.c文件,这两个文件会在libethercat\ec_common\ecat_common.c,libethercat\ec_common\ecat_common.h相关接口使用。 4. libethercat\ec_common 4.0 ec_common_configs_define.h ec_common_configs_define.c 由脚本scripts/GenerateSlavesConfig.sh自动生成的从站信息,包括从站PDO,SDO设置等,更具体的可以参照scripts/README.txt 4.1 ecat_common.h ecat_common.c 基于ibethercat\std 中的库的二次封装库,简化了PDO,SDO等操作 4.2 ecat_common_intermediate_interface.h ecat_common_intermediate_interface.c 与具体厂商相关的接口库,基于ecat_common.c中接口的实现,不同设备修改这两个文件中的接口进行适配。 目前该文件实现的山羊电机接口。主要实现的PDO接口的电机状态查询,上电开机,关机,操作模式设置,力矩设置等接口,不同电机的类似接口可以参照该文件实现,接口作用见名知意。 封装接口的关键是对象字典的操作,根据手册设置对象字典即可,标准的Ethercat接口伺服电机一般来说对象字典定义基本是一样的,可能稍微有差别 5. 标准Igh Master接口的使用例子 mytest目录 mytest/test_torque_sanyo_ioctl 基于ioctl接口的sanyo电机测试例子 mytest/test_torque_tec_ioctl 基于ioctl接口的泰科电机电机测试例子 mytest/test_torque_tec_lib 基于libethercat\std库接口的电机测试例子 mytest/test_torque2 基于libethercat\std库接口的电机测试例子2 mytest/test_io_board ET1100,IO板的测试例子 基于标准的Igh 库及iotcl接口可以参照该文件夹例子 6.二次封装接口库ecat_common_intermediate_interface.c的使用说明 使用步骤 (1)将编译生成的Igh库文件替换libethercat\std文件, 文件名可能要改成,或者不该也行,自己写Makefile时匹配库名称就行 (2)将 scripts/ 目录复制到开发运行GenerateSlavesConfig.sh脚本,将脚本生成的ec_common_configs_define.h ec_common_configs_define.h 复制到libethercat\ec_common 文件夹 (3)基于二次封装接口的电机一般操作参照demo.c 参照demo.c中的ethercat_init() 进行从站初始化 初始化后就可以调用ecat_common_intermediate_interface.c中接口对从站进行操作 比如 interpolation_2_ecat_set_slave_pwr_on()接口使能电机, interpolation_2_ecat_set_slave_pwr_off() 关闭电机 interpolation_2_ecat_set_slave_target_pos() 设置目标位置,对应位置模式操作 其它接口作用见参照具体实现 7.关于轴操作的几点说明 (1)每个轴对应一个从站,由alias,position确定,一般来说从站不多时alias=0固定不变,对不同轴根据positon确定。 例如使能和关闭不同的轴 int interpolation_2_ecat_set_slave_pwr_on(MasterSpecifiedInfo_T *master_specified_info, int slave_pos); int interpolation_2_ecat_set_slave_pwr_off(MasterSpecifiedInfo_T *master_specified_info, int slave_pos); 中slave_pos参数就对应不同的轴,slave_pos=0,axis1 slave_pos=1,axis2... (2)设置不同轴的操作模式,位置,力矩,速度模式 可以参照这个接口 int interpolation_2_ecat_set_slave_operation_model(MasterSpecifiedInfo_T *master_specified_info, int slave_pos, unsigned char operation_model) 代码已经托管在云上,可以直接通过git下载: https://gitee.com/wllw7176/MyEthercat-IGH-1.5.2.git