文档章节

SylixOS上EtherCAT实现

J
 Jackstraw瑞
发布于 2017/11/01 20:59
字数 1816
阅读 235
收藏 1

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字符设备,如图 2‑1所示。

图2‑1  /dev路径下的EtherCAT0主站

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

2.2 网络设备驱动

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

图2‑2  EtherCAT相关内核模块

 

 

2.2.2 通用网卡驱动

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

图2‑3  通用网卡驱动实现基本原理

2.2.2 实时网卡驱动

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

图2‑4  影响实时性关键因素

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

2.3 IgH用户层接口

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

2.4 IgH用户应用程序

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

图2‑5  IgH主站状态和转化

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

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

图2‑6  用户应用程序流程

3 SylixOS使用步骤

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

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

图3‑1  SylixOS-IgH_USER工程压缩包

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

图3‑2  工程属性配置

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

图3‑3  选择目标设备IP地址

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

图3‑4  部署工程到目标设备

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

图3‑5  注册主站模块并查看主站状态

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

 

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

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

图3‑7  查看识别从站状态

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

图3‑8  激活主站并发送过程数据

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

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

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

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

 

© 著作权归作者所有

J
粉丝 2
博文 8
码字总数 10375
作品 0
南京
私信 提问
SylixOS-IgH系统平台搭建

1.参考手册 下面7个文件存放在本地服务器“\10.9.1.113.研发部9.ExchangeFolder郑磊”路径下 《RealEvo-IDE使用手册》 《SylixOS应用开发手册》 《SylixOSshell用户手册》 《SylixOS-IgH使用...

zhengleich
2018/05/15
0
0
VxWorks驱动移植至SylixOS总结

本文档描述了将VxWorks中的驱动源码快速移植至SylixOS中的方法,使用时需要结合SylixOS中的VxWorks兼容层实现。 1. 驱动注册与初始化 1.1 VxWorks中驱动注册与初始化 1.1.1 初始化函数 VxWo...

zhywxyy
2018/08/21
0
0
SylixOS调试方法详解——性能分析

1. SylixOS调试方法介绍 SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。目前RealEvo-IDE既支持自动推送调试、也支持传...

Esc120
2018/06/26
0
0
SylixOS线程堆栈大小浅析

目录 1. SylixOS线程、线程栈介绍 1 1.1 线程的介绍 1 1.2 线程栈的介绍 1 2. SylixOS线程栈大小的分配 1 2.1 线程、线程栈相关属性的设置 2 2.2 线程栈大小 2 2.3 线程堆栈警戒区 3 3. 总结...

Esc120
2018/06/26
0
0
SylixOS free命令实现过程

SylixOS free 命令 在 SylixOS 系统下敲下 free 命令,会出现如下如图 1.1 所示: 图 1.1 启核操作大致流程 kersys :显示的是内核堆信息 vmm physical zone show :zone 1和zone 2 映射信息...

Mr_liYang
01/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

双因素认证绕过的钓鱼工具

研究人员发布了两个工具——Muraen和NecroBrowser。它们可以自动绕过2FA进行钓鱼攻击,大多数防御措施都无法抵御它们。 渗透测试人员和攻击者为他们的武器库添加了一个新的工具,这种工具可以...

Linux就该这么学
7分钟前
0
0
java代码和js两种方式判断浏览器是否是IE11

java代码判断浏览器是否是IE11 HttpServletRequest request = ServletActionContext.getRequest();String agent = request.getHeader("User-Agent");//判断是IE浏览器而且不是IE11的时......

平凡三度
10分钟前
0
0
2019 Vue开发指南:你都需要学点啥?

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://dzone.com/articles/vue-development-in-2019-what-you-need-to-know 如果...

葡萄城技术团队
13分钟前
0
0
[gitlab]登录页定制

Administrator - 设置 https://blog.csdn.net/weixin_43606948/article/details/85222755 支持markdown,用###...

Danni3
21分钟前
0
0
IT兄弟连 Java语法教程 编写Java源代码

现在我们来一步一步的编写第一个Java程序,鼎鼎大名的“HelloWorld”。 编写Java源代码 编写Java源代码可以使用任何无格式的文本编辑器,在Windows操作系统上可以使用记事本、Edit Plus等程序...

老码农的一亩三分地
36分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部