sylixos上ethercat实现

author author     2022-09-25     609

关键词:

1 EtherCAT开源协议栈介绍

    目前常见开源的主站代码为RT-LAB开发的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS对两者都支持。其中IgH作为常用的EtherCAT开源协议栈,SylixOS已移植支持。

2 SylixOS-IgH使用框架

    SylixOS-IgH的使用尽可能保留了Linux下IgH的使用方式,其中延续了命令行工具的功能,而在应用程序开发方面,借助SylixOS集成开发套件的优势,用户可以更方便编辑、调试基于SylixOS-IgH的应用程序。

    SylixOS-IgH主要分为IgH主站协议栈、网络设备驱动、IgH用户层接口库以及用户应用程序。具体介绍如下所述:

2.1 IgH主站协议栈

    IgH主站协议栈源代码经编译后是一具体的ec_master.ko内核模块,EtherCAT功能集中实现在该模块中,另外该模块注册之后会在/dev路径下创建一个EtherCAT字符设备,如图 21所示。

技术分享

图21  /dev路径下的EtherCAT0主站

   用户程序操作EtherCAT主站,会通过用户层接口函数最终调用I/O系统的open,ioctl函数完成EtherCAT协议栈的执行。

2.2 网络设备驱动

    针对SylixOS-IgH的网络设备驱动源代码经编译后是一具体的内核模块,其中通用网卡驱动模块命名为generic.ko,实时网卡驱动会根据使用网卡型号针对命名,如e1000e型号的网卡驱动模块为ec_e1000e.ko。网络设备驱动模块应该在主站模块注册之后再进行注册,因为主站模块注册后为孤立状态,会等待网路设备连入,网络设备驱动模块注册后,就有一个真正的物理网络接口负责收发EtherCAT数据包。其中所有内核模块均部署在/lib/modules路径下,如图 22所示。

技术分享

图22  EtherCAT相关内核模块

2.2.2 通用网卡驱动

通用网卡驱动的实现是基于SylixOS已有LwIP协议完成EtherCAT数据包的收发工作,其实现原理如图 23所示。

技术分享

图23  通用网卡驱动实现基本原理

2.2.2 实时网卡驱动

在真实应用场景中,EtherCAT软件主站都会搭配实时操作系统和实时网卡驱动,原因在于影响实时性的关键因素是操作系统和网卡驱动,如图 24所示。

技术分享

图24  影响实时性关键因素

    实时操作系统需要将过程数据准时送出,其实时性主要体现在周期性准时调用EtherCAT主站协议栈的发送函数,而网卡驱动也需要进行实时性优化,使其绕过LwIP协议栈中安全性检查、路由、出入队列、分片和重组等相对EtherCAT来说非必要的网络传输功能,以此来保证EtherCAT数据包“准时出发,路上不能耽误”。

2.3 IgH用户层接口

    IgH用户层接口源代码编译后是一具体的动态库,IgH源代码把对EtherCAT主站字符设备的“ioctl”操作全部封装成用户层接口函数,这样用户不需要面对IgH协议栈底层实现,只需要了解IgH用户层接口函数的意义和使用方式即可。

2.4 IgH用户应用程序

    这里要提到,SylixOS-IgH主站三种状态,如图 25所示。

技术分享

图25  IgH主站状态和转化

    主站模块注册之后,主站处于孤立状态;网络设备驱动模块注册之后,主站处于空闲状态;用户应用程序执行时,会先进行主站请求操作,接着配置从站并建立用户层过程数据和协议栈数据缓冲区的映射关系,最后进行激活主站的操作,主站处于运行状态。主站进入运行态之后,就可以进行周期性过程数据收发的行为了。

    参考IgH源代码/examples/user/main.c中的程序执行流程,可以了解到使用IgH的主要接口,如图 26所示。

技术分享

图26  用户应用程序流程

3 SylixOS使用步骤

    SylixOS暂时不支持内核模块注册传入参数机制,因此用户如需使用SylixOS-IgH,可提前选择作为EtherCAT数据收发接口的网络设备,翼辉信息会根据用户硬件平台和网络设备对应MAC地址提供适配的主站内核模块。

1. 用户收到SylixOS-IgH_USER工程压缩包,如图 31所示。

技术分享

图31  SylixOS-IgH_USER工程压缩包

2. 用户将SylixOS-IgH_USER工程压缩包解压后导入RealEvo-IDE集成开发环境,在工程属性中选择依赖的BASE工程,如图 32所示。

技术分享

图32  工程属性配置

3. 选择工程文件上传的目标设备,如图 33所示。

技术分享

图33  选择目标设备IP地址

4. 工程属性配置完成后,编译工程并部署到目标设备,如图 34所示。

技术分享

图34  部署工程到目标设备

5. 主从站硬件设备自行连接上电。远程登录目标设备,注册IgH主站内核模块ec_master.ko,然后使用命令行工具查看主站状态,如图 35所示。

技术分享

图35  注册主站模块并查看主站状态

6. 接着再注册网络设备驱动内核模块generic.ko,然后使用命令行工具查看主站状态,如图 36所示。

技术分享


图36  注册网络设备驱动模块并查看主站状态

还可以通过“ethercatslaves”命令查看识别到的从站类型,如图 37所示。

技术分享

图37  查看识别从站状态

7. 执行IgH测试例程,该例程会激活主站并发送过程数据将数字量I/O模块的8位输出LED指示灯1s闪烁一次,如图 38所示。

技术分享

图38  激活主站并发送过程数据

至此,SylixOS上使用EtherCAT开源协议栈IgH的基本流程已描述完毕,另外还有一些点需要注意:


  •  IgH协议栈使用时需要提前预知从站设备的拓扑结构,应用程序需要根据从站的拓扑结构提前配置好各个从站的位置信息,SDO/PDO信息,在主站激活后,会将提前预知的配置信息和实际读取从站寄存器获取的信息进行对比,只有匹配后从站才能进入OP状态;

  • SylixOS支持内核模块注册传入参数机制之后,用户可自行根据选定的EtherCAT报文网口修改网路配置文件;

  • EtherCAT开源协议栈IgH原生只支持Linux操作系统,SylixOS移植支持会尽可能保留用户层相同使用习惯,而IgH开源社区提供的资料并没有完全介绍用户层接口的使用和命令行工具的使用,暂时SylixOS-IgH也仅仅提供基础使用说明,其余功能的使用说明会在后续完善。


在mac上搭建sylixos开发环境

...1.适用范围及局限性本文档适用于考虑在Mac上进行开发的SylixOS工程师,目前SylixOS集成开发环境并不支持Mac,本文当前的处理方法并不能真正实现Mac上的开发流程,后期待完善,特此申明。2.下载SylixOS源代码打开终端,创建一个... 查看详情

sylixos中gic通用中断控制器——gic实现

1、概述本篇文档主要介绍IMX6UL平台上基于SylixOS集成开发环境中GIC通用中断控制器的实现流程和方法。2、GIC控制器基地址获取GIC控制器基地址通过调用armPrivatePeriphBaseGet函数获得。如图2.1所示,Ctrl+h局搜索armPrivatePeriphBaseGet函数... 查看详情

sylixos组播使用

1.概述      本文主要介绍如何在SylixOS上使用组播功能。2.SylixOS组播设置      组播传输,即在发送者和每一接收者之间实现点对多点网络连接通信。正常大家会参考Linux使用组播的方法... 查看详情

sylixos中断流程

说明 本文章分析了ARM架构下SylixOS内核中断流程,共包含三部分: 分析SylixOS运用数组和双向链表实现中断服务函数的注册 阐述ARM硬件中断机制 分析SylixOS中断处理流程   SylixOS中断注册 SylixOS中断注册是通过数组... 查看详情

sylixos中断流程

说明 本文章分析了ARM架构下SylixOS内核中断流程,共包含三部分: 分析SylixOS运用数组和双向链表实现中断服务函数的注册 阐述ARM硬件中断机制 分析SylixOS中断处理流程   SylixOS中断注册 SylixOS中断注册是通过数组... 查看详情

sylixos中sd驱动实现流程

...以imx6实验平台为例,介绍SD设备驱动实现流程。  2、SylixOS中SD系统框架SylixOS中SD协议栈(以下称作SDStack)结构如图2.1所示。650)this.width=650;"src="http://img.blog.csdn.net/20170415143611270"/>图2.1SD协议栈结构1)Host层:硬件控制器抽象层... 查看详情

倍福ethercat通信协议详细解析

简介1.1运动控制1.2实时以太网1.3EtherCATEtherCAT原理介绍2.1实时性2.2端口管理2.3EtherCAT网络拓扑2.4EtherCAT网络协议栈2.5EtherCAT数据帧格式2.6EtherCAT设备寻址方式2.7分布式时钟(DistributeClock)2.8应用层(ApplicationLayer)2.9设备配置(DeviceProfile)2.10... 查看详情

基于arm+fpga的ethercat主站设计及实现

为解决实时工业以太网协议EtherCAT应用于嵌入式主站控制器所产生的实时性和稳定性等问题,首先研究了EtherCAT主站控制器在EtherCAT网络控制系统中的功能需求,分析并提出了实现嵌入式EtherCAT主站的架构,然后针对上... 查看详情

sylixos中rtc设备驱动

1、概述本文档基于SylixOS-EVB-i.MX6Q验证平台,介绍SylixOS中RTC设备驱动实现过程,可作为在SylixOS集成开发环境下进行字符设备驱动开发的参考。  2、RTC设备驱动2.1硬件原理实时时钟(RTC)的主要功能是在系统掉电的情况下,利... 查看详情

基于fpga状态机设计实现ethercat从站

0引言EtherCAT是由BECKHOFF提出的在工业控制领域获得广泛应用的现场总线之一,该总线具备全双工工作模式,可基于主站(Master)和从站(Slave)连接的模式实现数据传递,且具有低延时、高安全性的特点... 查看详情

sylixos位图操作

...提高索引速度,SyilxOS提供了一个位图操作库。 技术实现 SylixOS中位图操作库的实现在"libsylixos/SylixOS/kernel/core/_BitmapLib.c"中,主要实现了位图的初始化、在位图中添加、删除标记以及获取最高优先级。其中,初始化位图控制块的... 查看详情

sylixos系统tick实现

...;还有操作系统提供的各种定时功能,都与Tick有关。在SylixOS中,Tick一般通过芯片自带的Tick定时 查看详情

sylixos系统tick实现

...;还有操作系统提供的各种定时功能,都与Tick有关。在SylixOS中,Tick一般通过芯片自带的Tick定时 查看详情

sylixos系统tick实现

...;还有操作系统提供的各种定时功能,都与Tick有关。在SylixOS中,Tick一般通过芯片自带的Tick定时 查看详情

sylixos内存性能测试程序设计与实现

1.内存性能测试需求        SylixOS作为大型实时操作系统,在各个领域当中都会有重要应用。其中,在高性能运算领域需要较高的内存读写性能,因此我们需要有一个直观,跨平台的内存测试软件来给... 查看详情

sylixos网卡驱动实现篇

 1.开发环境  操作系统:SylixOS 编程环境:RealEvo-IDE3.1 硬件平台:IMX6Q实验箱2.技术实现 网卡驱动的收发功能,是通过管理收发描述符的方式实现的。因此,在MAC初始化的时候需要对描述符也进行相应的初始... 查看详情

sylixos屏蔽中断实现

1.CortexM7的异常掩码寄存器 1.1PRIMASK寄存器   PRIMASK寄存器可以屏蔽除NMI(不可屏蔽中断)与硬件fault(硬件错误)之外的所有异常。PRIMASK关中断的汇编代码如图11所示,PRIMASK开中断的汇编代码如图12所示。650)this.width=650;"... 查看详情

sylixos中aarch64跳转表实现原理(代码片段)

1.跳转表存在的意义1.1内核模块反汇编如下的程序清单,为一个内核模块的源码。#define__SYLIXOS_KERNEL#include<SylixOS.h>#include<module.h>/**SylixOScallmodule_init()andmodule_exit()automatically.*/intmodule_init(void)printk("h 查看详情