首页 Etherc. 正文

回复

Ethercat开源库IGHmaster1.5.2二次开发源码

Ethercat 浏览:5848 回复:4 收藏

wuliang  2019-12-22 01:20

       之前发过一个帖子,关于开源Ethercat Igh 1.5.2的二次开发的,忘记开放源码了。虽然现在不做工业控制的方向了,还是把之前代码开源出来。便于需要的人学习。

      有钱的公司肯定时推荐用商用主站倍福,KPA等。如果个人学习Ethercat的话没有太多资金情况下尝试下Igh Master 也是不错的选择。之前公司做的项目通过Ethrecat Igh Master1.5.2实现对IO(ET1000模块实现的slave)量读取,设置的Ethrecat控制;实现了对于Sanyo伺服电机的力矩控制;最后还实现了基于插补算法实现对泰科Ethercat 伺服关节模组的控制。详细介绍如下。

软硬件平台:

            Linux(3.0.35  内核,没有进行实时优化)+Igh Master 1.5.2+Et1100从站IO+山羊Ethercat伺服驱动器+泰科伺服驱动关节模组

目前已经调试通过的功能:

        1.基于SDO方式,读取ET1100 IO数据,温湿度数据,通过IO控制从站Led

        2.基于PDO方式,读取ET1100 IO数据,温湿度数据,通过IO控制从站Led

        3.基于SDO方式,通过力矩模式,控制山羊电机运行,并且实时读取山羊电机位置,速度,力矩,错误状态等数据

        4.基于PDO方式,通过力矩模式,控制山羊电机运行,并且实时读取山羊电机位置,速度,力矩,错误状态等数据

        5.基于SDO方式,通过力矩模式,控制泰科伺服电机运行,并且实时读取山羊电机位置,速度,力矩,错误状态等数据

        6.基于PDO方式,通过力矩模式,控制泰科伺服电机运行,并且实时读取山羊电机位置,速度,力矩,错误状态等数据

基于Igh Master库的二次开发:

        1.Igh Master 1.5.2原始编译的库原生API使用,要经过大量的手动配置。在熟悉Igh Master api基础上进行二次开发。 

        2.目前所有从站信息可以通过Shell脚本自动生成,结合二次开发的Igh Master接口只需几行代码就可以实现对从站的配置

        3.更方便的PDO数据读取接口。原始Igh Master PDO读取接口要准确的知道从站vendorid,productid, index,sudindex,off_bytes.off_bits等信息,对用户友好。封装后的二次接口只需提供从站位置编号,index,sudindex就可以完成PDO数据读取,写入。所有其他模块信息由二次开发模块内部维护。

压缩包Readme.txt:

文档目录结构及简要说明


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中的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)

  

最新的代码托管在  https://gitee.com/wllw7176/MyEthercat-IGH-1.5.2.git 。

git clone https://gitee.com/wllw7176/MyEthercat-IGH-1.5.2.git 或者直接下载zip压缩包就可以获得最新的全部代码,

里面包含了IghMaster1.5.2的官方源码,编译脚本及安装到Arm开发板上的shell脚本,有需要的拿去。

正在下载,请等待……
下载附件需 0 积分!

我知道了