2 架构

2 架构

EtherCAT主站集成到Linux内核中。 这是一个早期的设计决定,该决定出于以下几个原因:

  • 内核代码具有明显更好的实时特性,即比用户空间代码少的延迟。 可以预见,现场总线主站有很多循环的工作要做。 循环工作通常由内核中的定时器中断触发。 当它驻留在内核空间中时,处理定时器中断的函数的执行延迟较少,因为不需要切换到用户空间进程的耗时的上下文切换。
  • 还可以预见,主站代码必须与以太网硬件直接通信。 这必须在内核中(通过网络设备驱动程序)完成,这是主代码在内核空间中的另一个原因。

图2.1给出了主站体系结构的一般概述。

主站环境的组件如下所述:

主站模块 内核模块包含一个或多个EtherCAT主站实例(参见第2.1节),“设备接口”(参见第4.6节)和“应用程序接口”(参见第3章)。

设备模块 支持EtherCAT的以太网设备驱动模块,通过设备接口向EtherCAT主站提供设备(参见第4.6节)。 这些修改过的网络驱动程序可以并行处理用于EtherCAT操作的网络设备和“正常”的以太网设备。主机可以接受确定的设备,然后能够发送和接收EtherCAT帧。被主站模块拒绝的以太网设备像往常一样连接到内核的网络栈。

应用程序 使用EtherCAT主站的程序(通常用于使用EtherCAT从站循环交换过程数据)。这些程序不是EtherCAT主站代码1的一部分,必须由用户生成或编写。应用程序可以通过应用程序接口请求主站(参见第3章)。如果成功,它将获得主站的控制权:它可以提供总线配置和交换过程数据。应用程序可以是通过EtherCAT库(参见第7.2节)或RTDM库(参见第7.3节)使用应用程序接口的内核模块(直接使用内核应用程序接口)或用户空间程序。

1虽然在examples /目录中提供了一些示例。

图2-1 主站架构

2.1 主站模块

EtherCAT主站内核模块ec_master可以包含多个主站实例。每个主站等待由其MAC地址标识的特定的以太网设备。这些地址必须通过主站设备(和可选:backup devices)模块参数在模块加载时指定。要初始化的主站实例的数量由给定的MAC地址数确定。

以下命令为主站模块加载一个主站实例,该实例将等待一个MAC地址为00:0E:0C:DA:A2:20的以太网设备。主站将通过索引0访问。

# modprobe ec master main devices=00:0E:0C:DA:A2:20

多个主站的MAC地址必须用逗号分隔:

# modprobe ec master main devices=00:0E:0C:DA:A2:20,00:e0:81:71:d5:1c

两个主站可以分别通过索引0和1寻址(见图2.2)。应用程序接口的ecrt_master_request()函数(见第3章)和ethercat命令行工具(见7.1节)的–master选项需要主站索引,默认为0。

图2-2 一个模块中多个主站

调试级别 主站模块还具有参数debug level,以设置所有主站器件的初始调试级别(参见第7.1.6节)。

Init脚本 在大多数情况下,无需手动加载主站模块和以太网驱动程序模块。使用init脚本,主站可以作为服务启动(参见第7.4节)。对于由systemd [7]管理的系统,还有一个可用的服务文件。

Syslog 主站模块将有关其状态和事件的信息输出到内核的环形缓冲区。这些也将出现在系统日志中。上述模块加载命令应该产生以下消息:

# dmesg | tail -2
EtherCAT : Master driver 1.5.2
EtherCAT : 2 masters waiting for devices .

# tail -2 /var/log/messages
Jul 4 10:22:45 ethercat kernel : EtherCAT : Master driver 1.5.2
Jul 4 10:22:45 ethercat kernel : EtherCAT : 2 masters waiting for devices .

主站输出以EtherCAT为前缀,使搜索日志更容易。

2.2 主站阶段

由主模块提供的每个EtherCAT主机(参见第2.1节)运行于多个阶段(见图2.3):

图2-3 主站阶段和转换

孤立阶段 当主站设备仍然等待其以太网设备连接时,此模式生效。直到连接时才能进行总线通信。

空闲阶段 在主站接受所有需要的以太网设备时生效,但尚未被任何应用程序请求。主站运行其状态机(参见第5.3节),自动扫描总线上的从机,并从用户空间接口(例如SDO访问)执行挂起的操作。命令行工具可用于访问总线,但由于缺少总线配置,因此没有进行过程数据交换。

运行阶段 主站由可以提供总线配置和交换过程数据的应用请求。

2.3 过程数据

本节将介绍一些有关如何处理过程数据的术语和主题。

过程数据映像 从站通过提供所谓的“过程数据对象”(PDO)来提供它们的输入和输出。可用的PDO可以通过从E2PROM中的SII类别读出从站的TxPDO和RxPDO(在固定PDO的情况下)或通过读出适当的CoE对象(参见第6.2节)来确定(如果可用)。应用程序可以注册PDO的条目,以便在循环操作期间进行交换。所有注册的PDO条目的总和定义了“过程数据映像”,通过在[2,sec.5.4]中引入的“逻辑”存储器访问(如LWR,LRD或LRW)的数据报进行交换。

过程数据域 通过创建允许PDO分组交换的“域”,可以容易地管理过程数据映像。它们还负责管理交换PDO所需的数据报结构。域是过程数据交换的必需项,因此必须至少有一个域。介绍它们的原因如下:

  • 由于以太网帧的大小有限,数据报的最大大小受到限制:最大数据大小是以太网数据字段大小减去EtherCAT帧头、EtherCAT数据报头和EtherCAT数据报页脚:1500 - 2 - 12 - 2 = 1484个八位字节。如果过程数据映像的大小超过此限制,则必须发送多个帧,并且必须对该映像进行分区以使用多个数据报。域将自动进行管理。
  • 不是每个PDO都必须以相同的频率交换:PDO的值可以随时间缓慢变化(例如温度值),因此,以高频率交换它们只会浪费总线带宽。因此,可以创建多个域,以对不同的PDO进行分组,从而允许单独交换。

域的数量没有上限,但是每个域在引入的每个从站中占用一个FMMU,因此域的最大数量实际上受到从站设备的限制。

FMMU配置 应用程序可以注册PDO条目以进行交换。每个PDO条目及其父PDO都是从站设备物理内存中的存储区域的一部分,受到同步管理器的保护[2,sec. 6.7]。为了使同步管理器对访问其存储器的数据报作出反应,必须访问由同步管理器覆盖的最后一个字节。否则,同步管理器不会对数据报作出反应,也不会交换数据。这就是为什么整个同步存储区必须包含在过程数据映像中的原因:例如,如果从站的某个PDO条目被注册用于与特定域交换,则一个FMMU将被配置为映射PDO条目所在的整个同步管理器保护的存储器。如果相同的从站的第二PDO条目被注册用于在同一域内的过程数据交换,并且它存在于与第一PDO条目相同的同步管理器保护的存储器中,则FMMU配置不被改变,因为期望的存储器已经是域的过程数据映像的一部分。如果第二PDO条目属于另一个同步管理器保护的区域,则该整个区域也将被包括在域过程数据映像中。

图2.4给出了FMMU如何配置,将物理内存映射到逻辑过程数据映像的概述。

图2-4:FMMU配置

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值