EtherCAT总线学习笔记
一、EtherCAT的概述:
EtherCAT是由德国BECKHOFF自动化公司于2003年提出的 实时工业以太网技术。它具有高速和高数据有效率的特点,支持多种设备连接拓扑结构。其
从站节点使用专用控制芯片,主站使用标准的以太网控制器。
EtherCAT的主要特点如下:
①
广泛的适用性,任何带商用以太网控制器的控制单元都可作为EtherCAT主站;从小型的16位处理器到使用3GHz处理器的PC系统,任何计算机都可以成为EtherCAT控制系统。
②
完全符合以太网标准,EtherCAT可以与其他以太网设备以及协议并存同一总线,以太网交换机等标准结构组件也可以用于EtherCAT。
③
无需从属子网,复杂的节点或只有2位的I/O节点都可以用作EtherCAT从站;
④ 高效率,最大化利用以太网带宽进行用户数据传输;
⑤ 刷新周期短,可以达到小于100us的数据刷新周期,可以用于伺服技术中底层的闭环控制;
⑥ 同步性能好,各从站节点设备可以达到小于1us的时钟同步精度;
目前,EtherCAT已经接入多种相关国际标准:
IEC61158中的Type12;
IEC61784中的CPF12;
IEC61800中,EtherCAT支持CANOPEN DS402和SERCOS;
ISO15745中,EtherCAT支持DS301;
EtherCAT支持多种设备连接拓扑结构:线形、树形和星形结构,可以选用的物理介质有
100Base-TX标准以太网电缆和光揽,使用100Bbase-TX电缆时站间距离可达100m,整个网络最多可连接65535个设备;使用 快速以太网“全双工”通信技术构成
主从式的环形结构如下:
![]() |
二、EtherCAT协议:
1、概述:
EtherCAT是一种实时工业以太网技术,它充分利用了以太网的“全双工”特性。使用主从模式介质访问控制(MAC),主站发送以太网帧给各从站。从站从数据帧中抽取数据或将数据插入数据帧。主站使用标准的以太网接口卡,从站使用专门的EtherCAT从站控制器ESC(EtherCAT Slave Controller);EtherCAT物理层使用 标准的以太网物理层器件。
从以太网的角度来看,
一个EtherCAT网段就是一个以太网设备,它接收和发送标准的ISO/IEC8802-3以太网数据帧;
但是,这种以太网设备并不局限于一个以太网控制器及相应的微处理器,它可由多个EtherCAT从站组成(
如下图2.1所示),这些从站可以直接处理接收的报文,并从报文中提取或插入相关的用户数据,然后将该报文传输到下一个EtherCAT从站;
最后一个EtherCAT从站发回经过完全处理的报文,并由第一个从站作为响应报文将其发送给控制单元。
![]()
//
2、EtherCAT主站的组成:
EtherCAT主站使用 标准的以太网控制器,传输介质通常使用100Base-TX规范的5类UTP线缆(
如下图2.2所示);通信控制器完成以太网数据链路的介质访问控制(MAC,Media Access Control)功能,物理层芯片PHY实现数据编码、译码和收发,它们之间通过一个MII(Media Independent Interface)接口交互数据;
MII是标准的以太网物理层接口,定义了与传输介质无关的标准电气与机械接口,使用这个接口将 以太网数据链路层与物理层完全隔离开,使以太网可以方便的选用任何传输介质;隔离变压器实现信号的隔离,提高通信的可靠性。
![]()
在基于PC的主站中,通常使用网络接口NIC(Network Interface Card),其中的网卡芯片集成了 以太网通信控制器和物理数据收发器;
而在嵌入式主站中,通信控制器通常嵌入到微控制器中。
//
3、EtherCAT从站的组成:
EtherCAT从站设备同时实现 通信和控制应用 两部分功能,
其结构如图2.3所示;由以下4部分组成:
![]()
1、EtherCAT从站控制器ESC:
EtherCAT从站通信控制器芯片ESC负责处理EtherCAT数据帧,并使用双端口存储区实现EtherCAT主站与从站本地应用数据的交换,各个从站ESC按照各自在环路上的物理位置顺序移位读写数据帧;在报文经过从站时,ESC从报文中提取发送给自己的输出命令数据并将其存储到内部存储区,输入数据从内部存储区又被写到相应的子报文中;数据的提取和插入都是由数据链路层硬件完成的。
ESC具有
四个数据收发端口,每个端口都可以收发以太网数据帧。数据帧在ESC内部的传输顺序是固定的(
如下图2.4所示),通常,数据从端口0进入到ESC,然后按照 端口0-->端口3-->端口1-->端口2-->端口0的顺序依次传输;如果ESC检测到某个端口没有外部连接,则自动闭合此端口,数据将自动回环并转发到下一个端口,使用多个数据端口可以构成多种物理拓扑结构。
![]()
ESC使用两种物理层接口模式:MII和EBUS。MII是标准的以太网物理层接口,使用外部物理层芯片,一个端口的传输延时大约500ns;
EBUS是德国BECKHOFF公司使用LVDS(Low Voltage Differential Signaling)标准定义的数据传输标准,
可以直接连接ESC芯片,不需要额外的物理层芯片,从而避免了物理层的附加传输延时,一个端口的传输延时约为100ns,EBUS最大传输距离为10m;适用于 放置距离较近的设备之间的连接。
2、从站控制微处理器:
微处理器负责处理EtherCAT通信和完成控制任务。微控制器从ESC读取控制数据,实现设备控制功能,并采样设备的反馈数据,写入ESC,由主站读取;通信过程完全由ESC处理,与设备控制微处理器响应时间无关;从站控制微处理器的性能选择取决于设备控制任务,可以使用8位、16位的单片机及32位的处理器。
3、物理层器件:从站使用MII接口时,需要使用物理层芯片PHY和隔离变压器等标准以太网物理层器件;使用EBUS时不需要任何其他芯片。
//
4、EtherCAT物理拓扑结构:
在
逻辑上,EtherCAT网段内从站设备的布置构成一个
开口的环形总线。在开口的一端,主站设备直接或者
通过标准以太网交换机插入以太网数据帧,并在另一端接收经过处理的数据帧;所有的数据帧都被从第一个从站设备转发到后续的节点;最后一个从站设备将数据折返到主站。
EtherCAT从站的数据帧处理机制允许
在EtherCAT网段内任一位置使用分支结构,同时 不打破逻辑环路;分支结构可以构成各种物理拓扑(如线形、树形、星形, 菊花链形)以及各种拓扑结构的组合, 从而使设备连接布线非常灵活方便;
如下图2.5所示,主站发出数据帧后的传输顺序如图1~14,其中
从站8使用了ESC全部4个端口,构成了星形拓扑。
![]()
//
|
/
三、EtherCAT数据帧结构:
1、EtherCAT报文的整体格式:
![]() ![]()
每
个EtherCAT
子报文 包括 子报文头、数据域和
相
应的工作计数器(
WKC , Working
Counter)
•
WKC
记录了
子报文被从站操作
的次数
,
主站 为 每
个通
信服务子
报文设置预期
的
W
K
C;
发送子
报文中的工作计数器初
值
为0,子报文被从站正确处理后,工作计数器的
值
将增加
一
个增量(
具体多大,后面会讲
)
,
主站
比
较返回子报文中的
WKC 和
预期W
KC
来判断子报文是否被正
确处理
。
WKC
由
ESC
在处理数据帧
的同时进
行
处理,
不同的通
信
服务对
WKC
的增加方
式不同
。
//
2、EtherCAT的子报文:
![]() ![]()
//
|
/
四、EtherCAT报文寻址与通信服务:
1、总体介绍:
一个EtherCAT网段 相当于 一个以太网设备,
主站首先使用 以太网数据帧头 的
MAC地址寻址到网段;然后 使用 EtherCAT的
子报文头中的
32位地址 寻址到段内设备。
段内寻址有两种方式:设备寻址 和 逻辑寻址 。
设备寻址 针对 某一个从站 进行读写操作;
逻辑寻址 面向过程数据,
可以实现多播,
同一个子报文 可以 读写 多个从站设备。
![]()
//
2、EtherCAT网段寻址(
MAC地址阶段
):
根据 EtherCAT主站 及其 网段的
连接方式不同,可以使用
两种方式 寻址到网段:
(1)
直连模式(现在自动化采用的模式):
一个 EtherCAT 网段
直接连 到 主站设备 标准以太网端口。此时,主站 使用
广播MAC地址,
如下图:
![]() ![]()
(
2)开放模式(
通过交换机组网
):
EtherCAT网段连接到一个
标准以太网 交换机上;此时,一个网段 需要 一个MAC 地址,
主站发送的EtherCAT数据帧中
目的地址 就是 它所控制的
网段的MAC地址。
那么,
每个EtherCAT网段 内的
第一个从站设备 有一个
ISO/IEC 8802.3的MAC地址,这个地址表示 整个网段,这个从站称为
段地址从站,它能够交换 以太网帧内的 目的地址区和源地址区。
如下图:
![]()
//
3、设备寻址(
经历MAC网段寻址后的,专属EtherCAT子报文的寻址
):
在设备寻址时,
EtherCAT子报文 内的 32位地址 分为
16位从站设备地址 和 16位从站设备内部物理存储空间地址(
ESC协议芯片里面的寄存器地址
)。
16位从站设备地址可以寻址65535个从站设备,每个设备最多可以有64K字节的本地空间。
![]()
设备寻址有
两种不同
的寻址机制:
(1)顺序寻址(自动增量寻址):
顺序寻址时,从站的地址 由其在网段内的
连接位置确定,用一个
负数来表示 每个从站 在网段内 由接线顺序决定的位置。顺序寻址子报文 在经过 每个从站设备时,其
位置地址加1,从站在接收报文时,地址
为0的报文就是寻址到自己的报文。
在实际的应用中,顺序寻址 主要用于
启动阶段。主站配置 地址 给各个从站,此后,可以使用 与物理地址无关的 站点地址 来寻址从站(
也就是 设置寻址 )。
(2)设置寻址:
设置寻址 时,
从站的地址 与其 在网段内的 连接顺序 无关。地址可以由 主站 在数据链路 启动阶段配置给从站;也可以 由从站 在上电初始化的时候 从自身的 配置数据存储区 加载,然后 主站 在链路启动阶段 使用 顺序寻址 方式读取 各个从站的设置地址,并在后续运行中使用。
//
4、逻辑寻址与FMMU:
当EtherCAT进入周期性数据交换时,报文将以逻辑寻址的方式传输;使用的报文有LRD、LWR、LRW。在逻辑寻址时,EtherCAT总线上的所有从站的ESC内存将被看作一个整体,不再需要目标设备地址,而是使用逻辑地址;
简单的说,每个从站需要交换的数据内容被映射到逻辑寻址报文数据区的指定位置上,当报文通过总线传输时,每个从站会从它可访问的位置获取数据,并将需要返回给主站的数据写入进去。
每个FMMU映射单元需要以下配置信息:数据逻辑位起始地址、从站物理内存起始地址、位长度、表示映射方向的类型位(读或写相对于从站而言)。
//
|
/
五、EtherCAT支持的所有通信服务表:
1、基本介绍:
EtherCAT子报文所有的服务都是以主站操作描述的。数据链路层 规定了 从站内部物理存储、读写与交换(
读取并马上写入)数据的服务;读写操作和寻址方式 共同决定了子报文的通信服务类型,由
子报文中的命令字节表示。
2、通信服务列表:
![]() ![]()
WKC值的规则:
主站接收到返回数据
帧
后
,检
查子报文中的
WKC,如
果不等于预期值,则表示此子
报文没
有
被
正确
处
理。子
报文的 WKC预期
值 与 通信服务类
型
和
寻
址地址 相关
。子
报文经
过
某一
个
从站时,如果是
单独
地
读或写
操作
, WKC
加l
;
如果
是 读写操作
,
读
成功 时WKC
加1,
写
成功
时WKC
加2
, 读
写 全部完
成
时WKC
加3
;
子
报文
由
多
个
从站处理时,
WKC
是各
个
从站处理结果的累加
。
3、实际例子解析:
|
/
六、分布时钟:
1、分布时钟的描述:
分布时钟机制 使 所有从站 都同步于 同一个 参考时钟。主站连接的
第一个具有 分布时钟功能的
从站作为
参考时钟,以参考时钟 来同步 其他设备和主站 的从时钟。为了实现 精确的时钟同步 控制,必须测量和计算 数据传输延时 和
本地时钟偏移 ,并补偿 本地时钟偏移。
同步时钟涉及到如下 6个时间 概念:
① 系统时间:
系统时间 是 分布时钟 所使用的 系统计时。系统时间从 2000年1月1日零点开始,使用 64位二进制 变量表示,单位为纳秒(ns),最大可计时500年;也可以使用
32位的二进制变量表示,32位时间值最大可以表示4.2秒,通常可以
用于通信和时间标记。
② 参考时钟和从时钟:
EtherCAT协议规定 主站连接的
第一个 具有分布时钟功能的 从站 作为
参考时钟,
其他从站 的时钟 称为
从时钟。参考时钟 被用于 同步其他从站设备的从时钟和主站时钟;参考时钟
提供EtherCAT系统时间。
③ 主站时钟:
EtherCAT主站也具有计时功能,称为
主站时钟。
主站时钟 可以在 分布时钟系统 中作为 从时钟 被同步。
在 初始化阶段,主站 可以按照 系统时间 的格式发送 主站时间 给 参考时钟从站,使 分布时钟使用系统时间计时。
④ 本地时钟、时钟初始偏移量和时钟漂移:
每个DC从站都有
本地时钟,本地时钟
独立运行,使用本地时钟信号计时。
系统启动时,各从站的 本地时钟和参考时钟 之间
有一定差值,这个差值称为
时钟初始偏移量。
在运行过程中,由于 参考时钟和DC从站时钟 使用各自的时钟源 等原因,它们的计时周期存在一定的偏移,这将导致时钟运行不同步,
本地时钟产生偏移。
⑤ 本地系统时间:
每个DC从站的
本地时钟 经过
补偿和同步之后 都产生一个
本地系统时间,分布时钟同步机制 就是使 各个从站的本地系统时间保持一致。
⑥
传输延时:
数据帧 在 从站之间 传输时会产生一定的延迟,其中包括 设备内部和物理连接延迟 。
![]()
///
|
/
七、通信模式:
1、周期性过程数据通信:
周期性过程 数据通信 通常
使用FMMU进行逻辑寻址,主站可以使用 逻辑读、写或读写 命令同时操作多个从站。
在 周期性数据通信模式 下,主站和从站有 多种 同步运行模式。
从站设备
同步运行模式:
(1)自由运行(Freerun)
在自由模式下,本地控制周期 由一个
本地定时器 中断产生;
周期时间 可以由
主站设定,这是 从站的可选功能。
自由运行的周期如下图:其中,
T1为 本地微处理器从ESC复制数据并计算输出数据 的时间;
T2为 输出硬件延时;
T3为 输入锁存偏移时间。
![]()
(2)同步于 数据输入或输出 事件(SM)
本地周期在发生 数据输入或输出事件 的时候触发,
主站 可以将过程数据帧的
发送周期 写给从站,
从站 可以
检查是否支持这个周期时间或对周期时间进行本地优化。从站可以选择支持这个功能。通常同步于数据输出事件,如果从站只有输入数据,则同步与数据输入事件。
如下图所示:
![]()
(3)同步于 分布式时钟 同步事件(DC)
本地周期 由 SYNC事件触发,主站 必须在SYNC事件之前 完成数据帧的发送。
此时要求 主站时钟 也要同步于参考时钟。
如下图所示:
![]()
为了进一步优化从站同步性能,从站 应该在数据收发事件发生时 从接收到的过程数据帧复制输出数据,然后 等待SYNC信号到达后 继续本地操作。
数据帧 必须
比SYNC信号提前T1时间 到达,
从站 在SYNC事件之前已经完成数据交换和控制计算,接收到SYNC信号后 可以马上执行输出操作,从而进一步提高同步性能。
如下图所示:
![]()
主站设备
同步运行模式:
主站有以下
两种同步模式:
(1)周期性模式(
SM模式):
在周期性模式下,
主站周期性地发送过程数据帧。
主站周期通常
由一个本地定时器控制;
从站 可以运行在
自由运行模式或同步于接收数据事件模式。
对于运行在同步模式的从站,主站应该检查相应的过程数据帧的周期时间,保证大于从站支持的最小周期时间。
(2)DC模式:
在DC模式下,
主站运行与周期性模式类似,只是
主站 本地周期应该和参考时钟同步。主站本地定时器 应该根据 发布参考时钟的APMW报文 进行调整;在运行过程中,用于 动态补偿时钟漂移 的 APMW报文 返回主站后,主站时钟 可以根据读回的参考时钟时间进行调整,使之大致同步于参考时钟时间。
在DC模式下,
所有支持DC的从站 都应该同步于DC系统时间;
主站也应该使其通信周期同步于DC参考时钟时间。
如下图所示:
![]()
主站的本地运行 由 本地定时器 启动,本地定时器 应该 比DC参考时钟定时存在一个提前量(
让数据提前到达从站),
提前量为以下时间之和:
![]()
///
2、非周期性邮箱数据通信:
EtherCAT协议中 非周期性数据通信 称为
邮箱数据通信,
它可以双向进行--主站到从站 和 从站到主站。
它 支持全双工、两个方向独立通信 和 多用户协议。从站到从站 的通信 由主站作为路由器来管理。
通常邮箱通信只
针对一个从站,所以报文中
使用设备寻址模式 。
报文的格式如下图:
![]() ![]()
(1)主站到从站通信--写邮箱命令:
主站 发送 写数据区命令 将发送邮箱数据给 从站。主站 需要检查 从站邮箱命令应答报文中 工作计数器WKC;
如果工作计数器 为1,表示 写命令成功;
否则,如果 工作计数器 没有增加,通常因为 从站没有读完上一个命令 或 在限定时间内没有响应;主站 必须重新发送 邮箱数据命令。
(2)从站到主站通信--读邮箱命令:
从站有数据要发送给主站,必须先将数据写入输入邮箱缓存区,然后
由主站来读取。
主站 发现从站ESC输入邮箱数据区 有数据等待发送时,会尽快的 发送适当的读指令 来读取从站数据;
主站 有两种方法 来测定 从站是否已经将邮箱数据填入输入数据区:
看书!!
邮箱通信出错时,
应答数据
定义如下表:
![]()
///
|
/
八、状态机和通信初始化:
1、基本概述:
EtherCAT状态机 负责协调 主站和从站 应用程序 在初始化和运行时 的状态关系
。EtherCAT设备必须支持
四种状态
,另外还有
一个可选
的状态:
① Init:初始化,简写为I;
② Pre-Operational:预运行,简写为P;
③ Safe-Operational:安全运行,简写为S;
④ Operational:运行,简写为O;
⑤ Boot-Strap:引导状态(可选),简写为B;
2、状态转换规则:
从 初始化状态 向 运行状态 转换时,必须按照
“初始化-->预运行-->安全运行-->运行”的顺序转换,
不可以越级转换。
从 运行状态 返回时,
可以 越级转换。
引导状态 为可选状态,只允许与 初始化状态 之间相互转换。所有的状态改变,都
由主站发起,主站向从站发送
状态控制命令 请求新的状态,从站响应此命令,执行所请求的状态转换,并将结果写入从站 状态指示变量;如果请求的状态转换失败,从站将给出错误标志。
状态图如下所示:
![]()
3、状态的详解:
(1)Init:初始化
初始化状态 定义了 主站与从站 在应用层的初始通信关系。此时,主站与从站 应用层不可以直接通信,主站 使用初始化状态来 初始化ESC的一些配置寄存器;如果从站支持邮箱通信,则配置邮箱通道参数。
(2)Pre-Operational:预运行
在预运行状态下,
邮箱通信被激活。主站与从站
可以使用邮箱通信来交换与应用程序相关的初始化操作和参数。
在这个状态下 不允许过程数据通信。
(3)Safe-Operational:安全运行
在 安全运行 状态下,从站应用程序 读入输入数据,但是 不产生输出数据。设备无输出,处于“安全状态”。此时,仍然可以使用 邮箱通信。
(4)Operational:运行
在 运行状态 下,从站应用程序读入输入数据,主站应用程序发出输出数据,从站设备产生输出信号。此时,仍然可以使用邮箱通信。
(5)Boot-Strap:引导状态(
可选
)
引导状态的功能 是
下载设备固件程序。主站可以
使用FoE协议 的 邮箱通信 下载一个新的固件程序给从站。
4、EtherCAT状态转换过程总结:
![]() ![]() |
/
九、EtherCAT主站驱动程序示例学习:
1、抄写头文件:
更加深刻认识到 EtherCAT报文 的数据帧格式和特点。
/
2、从站设备设备对象的定义与实现:
SM通道数量与配置关系:
![]() ![]()
从站芯片配置SM通道的寄存器地址:
![]() ![]()
/
3、主站设备对象的定义与实现:
主站启动流程??接下来,找合适的平台搭建主站 开发环境:目前决定使用 NPU+linux系统编程;好处:后期调试方便,有各种工具可以抓包。
/
|
这里是基于SOEM驱动伺服的源码例子:
https://download.csdn.net/download/weixin_40639467/90443472