基于i.MX6处理器的EtherCAT主站的设计

文:2018年第二期

    摘要:工业以太网现场总线EtherCAT越来越多地应用到工业控制领域,其中将EtherCAT总线应用到工业控制系统中的关键技术是构建EtherCAT主站。本文设计了基于Freescalei.MX6Q处理器EtherCAT主站的解决方案。首先,在i.MX6Q处理器上构建了Linux和Xenomai双内核实时操作系统;然后使用了开源的IgHEtherCATMaster在其上构建嵌入式实时EtherCAT主站;最后,使用设计EtherCAT主站在新时达伺服驱动器上进行了同步时钟功能、SYNC中断和PDI中断相对位置调节功能的开发。测试结果表明,在Freescalei.MX6Q处理器上构建基于Linux+Xenomai双内核实时操作系统的EtherCAT主站可以满足高精度的多轴控制系统的联动控制。

    随着高速高精度控制系统的迅速发展,工业以太网现场总线在控制系统中的运行越来越广泛[1]。其中,EtherCAT是一种应用于工业自动化领域的实时工业以太网技术,它具有广泛的适用性,完全符合以太网标准,可以与其他以太网设备及协议并存于同一总线,从而最大化利用以太网宽带进行用户数据传输。同时,EtherCAT小于100微妙数据的刷新周期使其可以用于伺服技术中底层的闭环控制。EtherCAT还具有很好的同步性能,利用“分布时钟”机制可以实现各从站节点之间小于1微妙的时钟同步精度,这在要求分布系统同时工作的场合显得极为重要[2]。

    与此同时,ARM嵌入式微处理器正朝着高性能、低功耗的方向发展,其主频越来越高,接口功能越来越丰富,而价格则越来越低,因此相较于工业PC机它更灵活,功耗更小,成本更低。从软件层面上看,一方面,嵌入式Linux操作系统的结构简单,软件资源丰富,可靠性和重构性都很强,唯一的不足是它本身不具备实时性,但是经过实时性的扩展或改造,可以使其满足机器人控制系统苛刻的实时性要求。另一方面,成熟的开源EtherCAT主站软件,像Etherlab的IgHEtherCATMaster,使得一个完整的EtherCAT主站很容易的构建在嵌入式Linux系统之上。

    因此,本文采用嵌入式Linux和Xenomai双内核实时操作系统方案,结合高性能的嵌入式4核处理器i.MX6Q,实现基于i.MX6Q的嵌入式实时操作系统,并在此基础上使用IgHEtherCATMaster开源组件构建嵌入式实时EtherCAT主站,并在构建的嵌入式EtherCAT主站上进行了多轴同步控制性能的测试,以及SYNC中断和PDI(ProcessDataInterface)中断相对位置调节功能的测试。

1嵌入式实时Linux系统的实现

    目前改进Linux系统实时性的方法[3]主要有两种,一种是采用双内核结构,即在标准的Linux内核中嵌套进一个实时的内核,将其改造成为具有双内核的异构系统。所有实时任务都运行在微内核上,非实时的Linux则作为实时内核的一项优先级最低的任务来托管所有的非实时任务,其中典型的代表有RTAI、Xenomai。另一种是直接对Linux内核进行改造,如中断线程化、可抢占的自旋锁等,其中的代表为PREEMPT_RTLinux。

    在这些改进Linux实时性的技术中,RTAI虽然实时性能比较好,但对ARM的支持不够完善;PREEMPT_RTLinux是针对标准Linux内核设计的通用可移植的实时补丁,但其实时性较差;Xenomai支持的架构很多,对本文中使用的Freescalei.MX6Q处理器支持也比较完善,比较适合用来构建嵌入式实时Linux系统。

1.1Xenomai实时补丁

    Xenomai[4]作为一个自由软件项目,完全遵循GNU/Linux自由软件协议。Xenomai的实现主要是基于ADOES(AdaptiveDomainEnvironmentforOperatingSystems),通过在操作系统和硬件之间插入一个由软件实现的ADOES层,来管理和分配硬件层产生的中断信号。ADOES之上可以存在多个内核域,可以对每个域的优先级进行设置,来实现任务优先处理的目的。Xenomai能提供多种针对传统的实时操作系统的模拟器,该类模拟器可以提供对应的实时程序运行需要的API。Xenomai目前支持Vxworks、pSOS+、POSIX、VRTX等多种成熟实时操作系统的API。

1.2i.MX6Q处理器

    i.MX6Q[5]处理器是Freescale的一款基于ARMCortex-A9的高性能四核处理器,其主频高达1.2GHz。它具有32KB/32KB的L1指令/数据高速缓存;动态电压频率调节;内置电源管理模块;强大的图像加速;同时Freescale为其提供了完整的Linux板级支持包,使其非常容易构建嵌入式Linux系统。

1.3构建嵌入式实时Linux系统

    构建Linux+Xenomai双内核实时操作系统以i.MX6Q为硬件平台,采用Freescale板级支持包中的imx_3.0.35_4.0.0和xenomai-2.6.3来构建,步骤如下。

    解压Linux内核源码和Xenomai源码,并进入xenomai源码目录,给Linux内核打Xenomai补丁并配置内核,依次执行以下命令:

$./scripts/prepare-kernel.sh\--linux=~/imx_3.0.35_4.0.0\--adeos=~/xenomai-2.6.3/ksrc/arch/arm/patches/mxc/adeos-ipipe-3.0.43-mx6q-1.18-12-pre.patch\

--arch=arm

$./scripts/prepare-kernel.sh\--linux=~/imx_3.0.35_4.0.0\

--adeos=~/xenomai-2.6.3-imx6q/ksrc/arch/arm/patches/mxc/adeos-ipipe-3.0.43-arm-1.18-13.patch\

--arch=arm

$./scripts/prepare-kernel.sh\--linux=~/imx_3.0.35_4.0.0\--adeos=~/xenomai-2.6.3-imx6q/ksrc/arch/arm/patches/mxc/adeos-ipipe-3.0.43-mx6q-1.18-12-post.patch\

--arch=arm

    构建成功后,编译已经打上Xenomai实时补丁的Linux内核源码,烧写Linux镜像、根文件系统,上电启动EtherCAT主站。使用dmesg命令检查Xenomai实时内核加载情况,如图1所示,

图1Xenomai实时内核打印信息

    最后进行Xenomai用户空间实时任务调度延迟测试[6],测试结果如表1所示,

    通过测试,可以看到在Xenomai域用户空间,实时任务的调度延迟不受Linux域负载大小的影响;任务调度最大延迟约10微妙,平均延迟约3.5微妙,实时响应性能非常出色,可以满足高精度多轴控制系统的联动控制要求。

2嵌入式EtherCAT主站的实现

2.1IgHEtherCATMaster

    IgHEtherCATMaster[7]是一个基于Linux操作系统的开源EtherCAT主站软件,使用它可以很容易的实现EtherCAT主站软件。它支持RTAI、Xenomai、PREEMPT_RT等Linux的实时扩展;此外它提供了常见以太网EtherCAT网卡驱动,同时也提供了基于Linux内核协议栈的generic驱动;分布时钟功能可以同步从站时钟到参考时钟,也可同步从站时钟到主站时钟;同时还支持CoE(CANopenoverEtherCAT)、EoE(EthernetoverEtherCAT)、FoE(FileAccessoverEtherCAT)、SoE(ServoProfileoverEtherCAT)等协议。

2.2构建嵌入式EtherCAT主站

    IgHEtherCATMaster是针对通用的PC平台设计的,默认支持x86体系结构的处理器和PCI接口的网卡,因此关键的技术难点是针对ARM架构的i.MX6Q处理器和嵌入式网卡移植本地EtherCAT网卡设备驱动。

2.2.1本地EtherCAT网卡设备驱动的移植

    如何根据本地EtherCAT网卡设备驱动的实现原理,修改i.MX6Q处理器的网络设备驱动程序以兼容EtherCAT,并没有统一的标准方法,只有一些通用的规则,这些规则总结如下:

    (1)对所有的EtherCAT设备必须避免调用netif_*()函数,因为EtherCAT设备不经过Linux内核的网络协议栈,所以不能调用网络协议栈提供的这些接口。

    (2)EtherCAT设备驱动是在轮询的方式下工作,对EtherCAT设备的所有操作都是在无中断的情况下进行的,因此应避免使用中断和调用中断注册程序;同时,网卡驱动中无中断而使用轮询方式,数据报文发送完成中断处理函数和数据报文发送函数不会并发执行,不再需要自旋锁保护发送缓冲区。

    (3)主站在初始化的时候会分配两个固定的套接字缓冲区(socketbuffer),在每次发送的数据报文时,会先在这个sockerbuffer填充新的EtherCAT数据帧,然后将它传递给ndo_start_xmit回调函数。在整个过程中不会创建新的socketbuffer,因此网络设备驱动也不能像往常一样释放socketbuffer。

图26轴同步测试平台

2.2.2EtherCAT主站编译移植

    解压EtherCATMaster源码,并进入EtherCATMaster目录进行配置、编译和安装,依次执行命令如下:

$./configure\

--prefix=~/ethercat-1.5.2/install

--enable-rtdm\

--with-xenomai-dir=~/xeno/usr/xenomai\

--enable-hrtimer\

--enable-generic=no\

--enable-8139too=no\

--enable-fec=yes\

--with-linux-dir=~/imx_3.0.35_4.0.0\

--build=i686-pc-linux-gnu\

--host=arm-linux-gnueabihf\

$make;makemodules

$makeinstall;makemodules_install

    在配置中,通过--prefix选项指定安装路径;--enable-rtdm表示使用Xenomai实时补丁;--with-xenomai-dir指定Xenomai库和头文件所在的目录;--enable-hrtimer表示使用内核的高分辨率定时器;--enable-fec表示使能i.MX6Q处理器的本地EtherCAT网络设备驱动;--with-linux-dir指定使用的linux内核路径;--build和—host分别表示编译EtherCATMaster源码所使用的平台和编译后得到的镜像在哪个平台上运行。

2.3EtherCAT主站同步性能测试

    在机器人控制系统中,多轴同步性能直接决定着系统多轴联动的精度。EtherCAT可以实现从站之间精确的时钟同步控制,因此本文着重测试将嵌入式实时EtherCAT主站应用到机器人控制系统中后的多轴同步控制性能。测试平台如图2所示,其中EtherCAT从站使用新时达的RS2200、RS2303伺服驱动器,主站通讯模式设置为DC模式,伺服驱动器运行模式采用周期同步位置模式,周期为1ms,使用双通道示波器测试第一个伺服驱动器和最后一个伺服驱动器SYNC中断相对时间差。

    多次测量第一个伺服驱动器和最后一个伺服驱动器SYNC中断时间差,该差值小于60ns,满足时钟同步的要求,表明文本构建的实时嵌入式EtherCAT主站可以实现精确的多轴同步控制。如图3

图3SYNC中断时间差

2.4SYNC中断和PDI中断相对位置调节算法

    IgHEtherCATMaster主站源码虽然实现了EtherCAT主站时钟同步到第一个具有DC(DistributedClocks)功能的EtherCAT从站时钟,也实现了EtherCAT从站时钟同步到EtherCAT主站时钟,但没有实现伺服驱动器中ET1100EtherCAT控制器芯片中SYNC中断和PDI相对位置偏移。本文为了实现该功能,对IgHEtherCATMaster源码进行修改:将EtherCAT源码驱动中发送给ET1100产生SYNC中断开始的时间tsync_start,封装为API供用户空间程序调用。用户空间程序进入周期任务,经过主站时钟同步到参考从站时钟算法处理,SYNC中断和PDI中断相对位置偏移不再变化,即EtherCAT主站时钟已经同步到参考从站时钟。此时,我们可以获取参考从站时间tref_time,则相对位置偏移Toffset可通过如下公式1计算得出,其中T为通信周期。

(1)

     假设我们想让PDI中断相对于SYNC中断偏移50%,即PDI中断在两个SYNC中断中间,其中Tsleep为周期任务下个周期睡眠时间,可应用如下公式2:

(2)

    经过多次测试表明,经过上述算法处理后,PDI中断相对SYNC中断的位置,,确实在我们设定的位置,误差范围在-40us-40us,具体效果如图4所示,

图4SYNC中断和PDI中断相对位置图

3结束语

     本文首先分析了Xenomai实时补丁的实现机制,在基于Freescalei.MX6Q处理器上采用Xenomai实时补丁扩展的方法构建嵌入式实时

    Linux操作系统、同时详细的阐述了IgHEtherCATMaster开源软件组成模块的功能,然后将其移植到构建好的嵌入式实时系统上,实现了嵌入式实时EtherCAT主站,然后在构建的嵌入式EtherCAT主站上进行了多轴同步控制性能的测试,以及SYNC中断和PDI中断相对位置调节功能的测试。实验结果表明在基于Linux+Xenomai+i.MX6Q处理器上构建的嵌入式实时EtherCAT主站具有良好的实时性和精确的多轴同步控制性能,可以满足机器人控制系统的要求。

中传动网版权与免责声明:

凡本网注明[来源:中国传动网]的所有文字、图片、音视和视频文件,版权均为中国传动网(www.chuandong.com)独家所有。如需转载请与0755-82949061联系。任何媒体、网站或个人转载使用时须注明来源“中国传动网”,违反者本网将追究其法律责任。

本网转载并注明其他来源的稿件,均来自互联网或业内投稿人士,版权属于原版权人。转载请保留稿件来源及作者,禁止擅自篡改,违者自负版权法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

伺服与运动控制

关注伺服与运动控制公众号获取更多资讯

直驱与传动

关注直驱与传动公众号获取更多资讯

中国传动网

关注中国传动网公众号获取更多资讯

热搜词
  • 运动控制
  • 伺服系统
  • 机器视觉
  • 机械传动
  • 编码器
  • 直驱系统
  • 工业电源
  • 电力电子
  • 工业互联
  • 高压变频器
  • 中低压变频器
  • 传感器
  • 人机界面
  • PLC
  • 电气联接
  • 工业机器人
  • 低压电器
  • 机柜
回顶部
点赞 0
取消 0
往期杂志
  • 2024年第二期

    2024年第二期

    伺服与运动控制

    2024年第二期

  • 2024年第一期

    2024年第一期

    伺服与运动控制

    2024年第一期

  • 2023年第六期

    2023年第六期

    伺服与运动控制

    2023年第六期

  • 2023年第五期

    2023年第五期

    伺服与运动控制

    2023年第五期

  • 2023年第四期

    2023年第四期

    伺服与运动控制

    2023年第四期