在Windows系统上稳定实现EtherCAT主站的两种思路

描述

01关于EtherCAT技术

今天,EtherCAT已经是世界上最受欢迎的实时以太网解决方案之一。EtherCAT技术团队(ETG)负责给所有正在使用和将要使用的用户朋友们开放EtherCAT技术。同时,ETG也是世界上会员人数最多的现场总线技术组织,任何人都可以在ETG官网的主页上找到会员名单。

02EtherCAT技术与Windows系统

在Windows系统中,EtherCAT主站协议栈的运行较为简单,用户仅需使用一块标准以太网卡即可运行EtherCAT主站协议栈。即Windows系统下配置EtherCAT主站不需调用特殊的接口网卡,可以直接运行在内置于主板中的板载以太网控制器或低成本的外部标准网卡上。

然而,Windows并不是一个实时操作系统(RTOS),这意味着用户难以确保稳定地体验到EtherCAT周期时间具有的确定性、稳定性和实时快速等优点。虽然EtherCAT在Windows上可以实现周期时间大于10毫秒的更新频率,用户也不能顺利稳定地实现,更何况这一频率也难以应对部分极限场景下的应用需求。因此,通常情况下,用户很难十分便利地在该系统内使用EtherCAT的分布式时钟(DC)功能。

03两种解决

实时需求场景的思路

为了让用户能完全地体验EtherCAT技术,我们探讨了两种思路,并给出了三种方案来对比和验证思路,接下来我们将为您介绍我们的思路和对应的方案:

思路一:在软件层面进行优化的驱动

一个提高Windows性能的思路是把Windows网络驱动程序替换为acontis提供的实时以太网驱动程序,通过替换驱动程序并使用acontis提供的优化驱动程序来消除Windows网络协议栈的影响。这个思路让软实时行为的实时性得到了很大改善,进而能够在系统中使用分布式时钟功能。但是,该方案仍然缺少确定性,因此,不建议在生产过程中使用。

思路二:更完善的跨系统解决方案

另一个更好的思路是同时运行Windows和EC-Win。EC-Win 指的是一种使用acontis 提供的实时虚拟机管理程序的相关技术来同时在Windows 和 RTOS系统运行的硬实时解决方案,从而可以创建出速率快、确定性好、且基于硬实时行为的EtherCAT应用程序,其更新速率可以达到20kHz(50毫秒)。

04Windows系统实现

EtherCAT的不同方案

您将看到acontis测试的在Windows上的用不同方案实现EtherCAT主站协议的三种情形和结果

一、没有实时性能的解决方案:Windows NDIS 滤波器驱动程序

网络驱动程序接口规范(NDIS)是网络驱动程序体系结构的规范,它允许传输协议(如 TCP/IP)与底层物理网络适配器进行通信。该规范由微软联合开发,并在Windows中使用。因此,为了在Windows中发送和接收EtherCAT帧,EC-Master包括一个NDIS链路层(emllNdis.dll),以利用作为Windows网络协议栈一部分的以太网驱动程序。

更新速率的体系结构> = 10 毫秒:

ethercat

图 1 Windows NDS 筛选器驱动软件实现EtherCAT

二、具有软实时性能的解决方案:Acontis 以太网驱动程序

为了实现更快的更新速度,我们用acontis内核模块EcatDrv和优化的实时以太网驱动程序来取代标准的Windows网络驱动程序。EcatDrv 内核模块提供从用户空间直接访问物理网络控制器所需的权限。这样就可以发送和接收EtherCAT帧,而无需在两者之间使用任何Windows软件。采用这种方案的结果是降低了 CPU 负载,减少了抖动,规避了其他的网络通信过程所产生的不利后果。

更新速率的体系结构:> = 1 毫秒(难以保证):

ethercat

图2 Acontis驱动实现EtherCAT

三、具有硬实时性能的解决方案:EC-Win

前文的思路二中,我们发现把RTOS系统和Windows系统结合起来将在Windows上获得最佳的EtherCAT性能。Acontis提供了一个可以同时运行在Windows和实时Linux(RT-Linux)上的基于Windows的实时管理程序,结合EC-Master,用户可以调用这套完整的解决方案来在Windows上实现EtherCAT。(EC-Win)

借助EC-Win,EtherCAT 主站协议栈关联的EtherCAT应用程序可在 RT-Linux(实时Linux系统)上运行,从而实现高达20 kHz(50 微秒)的更新速率的硬实时性能。此外,acontis 还提供了为 Linux系统优化的实时以太网驱动程序,进一步提高了 EtherCAT 的整体性能。通过acontis的实时管理程序,Windows和RT-Linux被安全地分开,从而为实时Linux应用程序(包括EtherCAT)提供保护,使其免受Windows系统故障的影响。虽然该方案存在有操作系统层面的拆分,对于Windows上的应用程序和实时Linux系统上的应用程序,用户仍然都可以在用户更为熟悉的Microsoft的Visual Studio软件环境下进行开发与调试。

ethercat

图 3 使用EC-Win方案实现EtherCAT

实时以太网驱动程序(链路层)

Windows NDIA filter driver (emllNdis)

Windows网络驱动程序接口滤波器驱动程序

Intel Pro/1000 (emllI8254x)

Inter Pro/1000

Realtek Gigabit (emllRTL8169)

Realtek千兆网卡

Beckhoff CCAT(emllCCAT)

倍福CCAT软件

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分