打印
[应用相关]

关于STM32开发ethercat从站的方案

[复制链接]
楼主: wangjiahao88
手机看帖
扫描二维码
随时随地手机跟帖
21
wangjiahao88|  楼主 | 2020-6-18 15:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
EtherCAT 状态机(EtherCAT State Machine,简称 ESM)是 EtherCAT 非
常重要的一个部分,它的主要工作是通过主站设置的从站寄存器数据来进行
从站程序的初始化,目的是为运行从站应用程序完成准备工作[
21]。EtherCAT
设备在运行过程中会经历初始化、预运行、安全运行,运行等四种状态,以
下是四种状态的具体内容:
(1) 初始化状态时,主站使用 EEPROM 里面的数据对 ESC 一些基本
寄存器进行初始化配置,包括 PDI 接口的选择,微控制器与微处理器之间的
同步模式选择,以及 SM 通道参数设置等,这个时刻不能进行主站与从站的
直接通信。
(2) 预运行状态时,因为初始化操作部分完成,接口以及 SM 通道已
经被设置完毕,所以可以进行邮箱通信,主站通过邮箱通信将一部分应用程
序的初始化数据发送给从站,但是这一时刻主站不可以传输过程数据给从站。
(3) 安全运行状态时,从站接收到主站发送来的邮箱数据进行应用程
序的初始化,并且主站对从站的现场管理单元 FMMU 以及对应的 SM 通道进
行设置,主站可以发送过程数据给从站,但是从站不能发送过程数据给主站。
(4) 运行状态下时,主站和从站之间可以进行邮箱数据和过程数据的
传输,并且从站应用层的程序也已经初始化完成,为主从站之间控制数据的
传输做好了准备。



使用特权

评论回复
22
wangjiahao88|  楼主 | 2020-6-18 15:06 | 只看该作者
预运行为 Pre-Operational,简称为 PreOp,安全运行为 Safe-Opertional,简
称为 SafeOp,运行状态为 Operational,简称为 Op,从 Init 状态往 Op 状态的转
化必须按照以上四个状态依次状态,不能跳跃转化也不能有往回转化的情况
发生,不过从站从 Op 转化成之前的几种状态可以直接跳转,从站状态机的
转换由主站控制,并且有专门的状态信息指示从站状态。
IP(Init to Pre-Op)是指初始化状态向预运行状态转化,PI(Pre-Op to Init )
是指预运行状态向初始化状态转化,OP(Operational to Pre-Op)是指运行状
态向预运行状态转化,PS(Pre-Op  to  Safe-Op)是指预运行状态向安全运行
状态转化,SP(Safe-Op  to  Pre-Op)是指安全运行状态向预运行状态转化,
SI(Safe-Op  to  Init)是指安全运行状态向初始化状态转化,SO(Safe-Op  to
Operational)是指安全运行状态向运行状态转化,OS(Operational to Safe-Op)
是指运行状态向安全运行状态转化。

使用特权

评论回复
23
wangjiahao88|  楼主 | 2020-6-18 15:07 | 只看该作者
EtherCAT 从站系统一般由控制器和微处理器两部分构成,EtherCAT 从
站控制器一般采用专门的 ET1100 芯片,它主要负责的是数据链路层部分,
通过硬件机制完成主站和从站之间的数据交换,当 EtherCAT 数据报文经过
从站节点时,ET1100 芯片对应 EtherCAT 协议对 EtherCAT 数据报文进行读
取或者插入。这个 EtherCAT 设计中采用的微处理器芯片是 ST(意法半导体
公司)的 STM32 芯片,主要负责的是应用层的部分,并可以采集应用层设
备的反馈数据。整个 EtherCAT 协议数据传输与从站微处理器响应时间无关,
其通信过程中数据处理主要由从站控制器完成,只与从站微处理器性能与应
用层设备控制任务复杂程度有关系,由需实现或扩展的功能决定使用 8 位、
16 位单片机还是更高性能的处理器芯片。  

使用特权

评论回复
24
wangjiahao88|  楼主 | 2020-6-18 15:08 | 只看该作者
本设计方案主要采用了 STM32 芯片作为从站微处理器,EtherCAT 协议
专用 的 ET1100 芯片作 为从站 控制器 , 整体系统 分为两 大部分来 设计 的
EtherCAT 从站系统如图 3-1 所示。

使用特权

评论回复
25
wangjiahao88|  楼主 | 2020-6-18 15:11 | 只看该作者
在从站系统中,控制器和微处理器是最关键的部分,它们的选择直接决
定了整个 EtherCAT 通信系统的性能以及应用层设备功能的是否能够实现。
从上述从站系统框图中可以看到围绕微处理器芯片 STM32 和控制器芯片
ET1100 有很多外围芯片及电路,一起完成数据处理及传输工作。 EtherCAT
数据帧通过网口进入从站系统,数据信号经过变压器变压后传输到网卡芯片,
经过处理后给从站控制器,初始化完寄存器后把过程数据和邮箱数据保存在
ET1100 内部 DPRAM 中。从站设备部分通过 USB 转串口工具下载从站程序
到 STM32,初始化微处理器寄存器后,运行 EtherCAT 协议程序,使用地址
寄存器完成对 ET1100 内部存储器的并行读写,完成整个 EtherCAT 系统的初
始化及数据通信。
   如图 3-1 所示,整个从站系统可以分为微处理器部分 STM 和控制器部分
ESC 两大模块,STM 模块负责应用层协议的实现,ESC 模块负责 EtherCAT
数据帧的处理。下面将从多个方面详细介绍 STM 模块和 ESC 模块的设计。
对于一个面向生产应用的工程,芯片的性能固然重要,但是核心芯片的
选择不仅要考虑芯片的性能,还要考虑芯片的成本要素和货源问题,只有性
价比高的产品才能在市场中得到广泛的推广和应用,货源丰富的芯片可以满
足 批 量 生 产 的 需 要 。 在 EtherCAT 从 站 系 统 设 计 中 从 站 控 制 器 选 用
BECKHOFF 公司的 ET1100 芯片,从站微处理器选用 ST(意法半导体)公司
的 STM32 系列芯片。
目前,大多数 EtherCAT 从站设计都采用单片机做从站微处理器芯片,
通过 SPI 串行接口进行数据传输,数据处理和传输速率相对降低,不能充分
发挥 EtherCAT 通信协议卓越的性能,本设计采用 STM32 微处理器芯片,通
过其特有的 FSMC 模块并行传输数据,很好的解决了这个问题。

使用特权

评论回复
26
wangjiahao88|  楼主 | 2020-6-18 15:12 | 只看该作者
ESC 模块主要是实现了 EtherCAT 数据链路层协议,使用的是 EtherCAT
协议专用集成电路芯片 ET1100,该芯片是处理 EtherCAT 数据帧处理的核心
部分,EtherCAT 协议数据处理可简称为 ECAT 帧处理,与此同时,ESC 模块
还要为与从站微处理器部分连接提供 PDI 接口。

使用特权

评论回复
27
wangjiahao88|  楼主 | 2020-6-18 15:14 | 只看该作者
ET1100 芯片是德国 BECKHOFF 开发的一款 EtheCAT 协议专用芯片,
EtherCAT 数据帧该芯片集成有数据帧转发处理单元,使用 EtherCAT 协议的
通信过程不受从站微处理器的控制,只与芯片自身设计性能有关。ET1100
芯片最多可以提供 4 个数据收发端口,使从站能够灵活的实现各种拓扑结构,
ET1100 内部有一块大小为 64KB 的 DPRAM,这块内存可以分为两个部分,
一个 4KB 大小的内存用来存放 ET1100 的基本寄存器数据,其余的部分用来
存储用户数据,这块内存可以由与之相连的外部微处理器进行操作。如果从
站设备不需要使用微处理器,ET1100 芯片可以直接以数据 I/O 的模式进行输
入和输出,如果从站设备需要使用微处理器,那么可以微处理器可以通过 SPI
串行模式或者 MCI 并行模式读写 DPRAM 内存来达到应用层数据处理的目
的。另外,ET1100 芯片内部集成了一个 FMMU 现场内存管理单元,可以从
站设备的地址逻辑映射到主站内存,这样主站操作相应区域内存即可完成对
对应从站设备的操作,这使得从站系统对 EtherCAT 数据帧的利用率得到了
大 幅 度 的 提 高 , 同 时 ET100 芯 片 内 部 有 专 门 的 同 步 管 理 器 通 道
(SyncManager,简称 SM)管理 DPRAM,采用 SM 同步管理通道可以保证
应 用 数 据 在 传 输 过 程 中 的 一 致 性 和 安 全 性 。 芯 片 集 成 有 分 布 式 时 钟
(Distribute  Clock,简称 DC)功能[
23],可以为微处理器提供高精度的中断
信号。ET1100 芯片扩展有 I2C 总线,具有 EEPROM 访问功能,主站通过发
送命令读写从站设备中的 EEPROM,定义从站信息接口(Slave  Information
Interface,简称 SII)。ET1100 的芯片结构图如图 3-2 所示。

使用特权

评论回复
28
wangjiahao88|  楼主 | 2020-6-18 15:15 | 只看该作者
ESC 模块中 ET1100 芯片处理的是主站通过标准以太网设备传输过来并
由网卡芯片处理后的 EtherCAT 数据帧,从站往回传输的 EtherCAT 数据帧到
达 ET1100 芯片之前也需要先经过网卡芯片的处理,所以 ET1100 芯片与网卡
芯片之间的数据传输对于 EtherCAT 通信有一定影响。ET1100 提供了两种接
口方式:EBUS 接口和 MII 接口。
EBUS 接口又被称为 LVDS 接口,是 EtherCAT 协议自己定义的一种物理
层传输方式,EBUS 传输介质使用低压差分信号传输,采用这种接口的特点
是简单高效,但是传输距离最远 仅为 10m。EBUS 可以满足快速以太网
100Mbit/s 的数据波特率,不仅可以传输 EtherCAT 数据帧,任意的以太网数
据帧都可以通过 EBUS 传输[
24]。
EtherCAT 数据帧需要远距离传输,ET1100 使用 MII 接口与网卡芯片相
连。MII 接口省略了发送 FIFO 以降低处理和转发造成的延时,如果使用 MII
接口,网卡芯片必须遵从 IEEE 802.3  100  BaseTX 或 100BaseFX 规范,支持
100Mbit/s 全双工链接,提供一个 MII 接口,支持 MII 管理接口。ET1100 有
4 个物理通信接口,从端口 0 到端口 3 都可以使用 MII 接口连接到网卡芯片,
ET1100 的端口 0 通过 MII 接口与网卡芯片相连如图 3-3 所示。


使用特权

评论回复
29
wangjiahao88|  楼主 | 2020-6-18 15:16 | 只看该作者
在 EtherCAT 从站系统中,比较关键的一个部分就是接口设计部分,ESC
模块中与从站微处理器相连的接口因其传输的数据内容通常被称为过程数据
接口,有时候也会称该接口为物理设备接口,简称为 PDI 接口。ESC 模块提
供两种类型的 PDI 接口,一种是直接 IO 信号接口,这种无需应用层微处理
器,最多有 32 位引脚。另外一种是 DPRAM 数据接口,这种接口是为了扩展
复杂性能连接微处理器用的,这种接口又可以分为串行的传输方式和并行的
传输方式两种。其中串行方式主要是 SPI 方式,并行传输方式有 16 位异步、
8 位异步、16 位同步、8 位同步等多种方式,ET1100 中不同的 PDI 接口类型
由相关寄存器进行配置

使用特权

评论回复
30
wangjiahao88|  楼主 | 2020-6-18 15:18 | 只看该作者
数字量 I/O 接口由 PDI 控制寄存器 0x140=0x04 设置,数字 I/O 使用的引
脚为 PDI[39:0],其中 PDI[31:0]为数据引脚,PDI[39:32]为控制/状态信
号引脚,主站和从站通过 ECAT 帧和 PDI 接口分别读写 0x0F00~0x0F03 和
0x1000~0x1003 这些存储地址来操作数字量 I/O 输出数据和数字量 I/O 输入数
据。

使用特权

评论回复
31
wangjiahao88|  楼主 | 2020-6-18 15:19 | 只看该作者
SPI 从站接口由 PDI 控制寄存器 0x140=0x05 来设置,如果要使用 ET1100
的 SPI 接口需要外接一个有 SPI 接口的微处理器,这样微处理器为 SPI 主机,
ET1100 为 SPI 从机,接口如图 3-4 所示。SPI 接口占用的引脚较少,在设计
中可以把剩余的引脚当作普通的 I/O 端口来用,可以另外设计一个数字量 I/O
接口。通用数字量输入引脚对应寄存器 0x0F18~0x0F1F,通过数字量输出引
脚对应寄存器 0x0F10~0x0F17。PDI 接口和 ECAT 数据帧读写都可以访问这
些寄存器,这些寄存器对应的引脚都是以非同步的形式刷新的。
ET1100 也具有并行微处理器总线接口,它的选择有多种,可以选择地址
线和数据线是否复用,选择每次传输 8 位数据还是 16 位数据,也可以选择使
用同步或者异步两种总线操作模式,当 PDI 控制寄存器 0x0140=0x08 时设置
ET1100 为 16 位异步微处理器接口,当 0x0140=0x09 时为 8 位异步微处理器
接口,当 0x0140=0x10 时为 16 位同步微处理器接口,当 0x0140=0x11 时为 8
位同步微处理器接口。在本文设计中采用 STM32 作为微处理器,接口使用
0x0140=0x08 时的 16 位异步微处理器接口,16 位异步微处理器 STM32 与
ET1100 的数据接口如图 3-5 所示,STM 模块提供了 16 位地址线,16 位数据
线和 8 位控制线与 ET1100 对应地址线、数据线和控制线相连,接口类型为
微处理器接口(MicroController Interface,简称 MCI)

使用特权

评论回复
32
wangjiahao88|  楼主 | 2020-6-18 15:19 | 只看该作者

使用特权

评论回复
33
wangjiahao88|  楼主 | 2020-6-18 15:20 | 只看该作者
系统 AHB 总线是微处理器芯片与外部存储器连接的一条核心总线,是
数据传输的主要通道,FSMC 机制是通过结构设计固化了 AHB 总线的结构使
之易于与外部存储器直接相连,即 STM32 芯片可以通过设置 FSMC 的参数
来调整 AHB 总线来操作外部存储器,当选择的外部存储器的数据通道时 8
位或者 16 位的时候,32 位的 AHB 数据总线会被分割成连续的 8 位或者 16
位数据总线,由 FSMC 执行 AHB 总线控制以保障数据传输的一致性,当
STM32 需要连接多个存储器时,或同一类型或不同类型,都可以通过 FSMC
机制把 AHB 总线分成几个部分,分别读写存储器,并且 FSMC 可以调节 AHB
总线的读写顺序及速率配合对不同存储器的读写。

使用特权

评论回复
34
wangjiahao88|  楼主 | 2020-6-18 15:20 | 只看该作者
STM32 系列微处理器有 36 脚、48 脚、64 脚、100 脚和 144 脚的芯片类
型,考虑到芯片及设计成本的问题,本设计采用了 100 脚的 STM32F103VC。
在 STM32F103VC 芯片中只定义了 16 位的数据线,没有单独定义的地址线,
如果使用 STM32 芯片的 FSMC 功能[
33],则需要使用地址锁存器复用 16 位数
据线为地址线,这个过程使用了锁存器 74LVT373 芯片和反相器 74LVT04 芯
片。STM32 芯片使用 FSMC 复用接口模式设计如图 3-8 所示。

使用特权

评论回复
35
wangjiahao88|  楼主 | 2020-6-18 15:21 | 只看该作者
EtherCAT 主从站之间的数据都是通过标准以太网通道进行数据传输的,
只是所传输的数据分为两种类型:过程数据和邮箱数据。过程数据是传输的
数据为实时性要求较高的周期性数据,邮箱数据时传输信号实时性要求不高
的非周期性数据[
34]。把数据分成过程数据和邮箱数据两种形式传输,一方面
可以保证现场设备实时性数据的及时传输,另一方面还可以传输商用的以太
网数据,充分利用系统带宽。由 EtherCAT 从站驱动程序设置两种不同的传
输方式并为上层应用提供调用接口。

使用特权

评论回复
36
wangjiahao88|  楼主 | 2020-6-18 15:22 | 只看该作者
EtherCAT 从站的核心是 EtherCAT 从站控制器(EtherCAT Slave Control,
简称 ESC),它负责从站数据链路层功能的实现,采用硬件处理机制,当数
据报文经过时,该控制器可以自动的处理相关数据,把与从站应用有关的数
据保存到芯片内部的 DPRAM 中,并把 DPRAM 中的从站数据插入到数据报
文中
[35]。从站微处理器 STM 与 ESC 的 DPRAM 直接相连,一方面 STM 把
应用层设备的数据直接发送到 DPRAM 中等待主站处理,另一方面 STM 把
DPRAM 中存放的过程数据读取出来应用于现场设备的控制。要先完成以上
过程,需要 STM 和 ESC 两个模块协调工作,完成整个从站系统的初始化设
置,首先是主站要对从站相关寄存器进行初始化,确定两个模块之间的 PDI
连接方式并且设置 SM 通道允许邮箱数据通信;然后根据 ET1100 的内存类
型在从站程序中设置外部存储器在 STM32 内部的起始地址,并对 STM32 的
FSMC 机制进行初始化,主要包括端口初始化和时序初始化。  

使用特权

评论回复
37
wangjiahao88|  楼主 | 2020-6-18 15:23 | 只看该作者
从站驱动程序中初始化函数主要有 HW_Init( ),ECAT_Init( )两个部分。
HW_Init( )初始化微处理器寄存器、ESC 寄存器及相关通信变量;ECAT_Init( )
初始化 EtherCAT 协议相关变量。
程 序 完 成 初 始 化 后 进 入 实 现 通 信 过 程 , 根 据 通 信 寄 存 器 值 的 不 同
EtherCAT 通信过程有自由运行模式、同步模式和分布时钟模式三种通信方
式,ESC 通信寄存器由主站配置,从站相关基本寄存器如表 4-1 所示。
从站只需要从 ESC 通信寄存器中读取有效数据供从站程序调用,通过不
同模式可以分别传输非周期数据和周期数据。

使用特权

评论回复
38
wangjiahao88|  楼主 | 2020-6-18 15:27 | 只看该作者
EtherCAT 从站协议程序可以通过直接读写 DPRAM 寄存器的值,对 ESC
当前状态进行判断,并可以更新 ET1100 寄存器的值完成系统状态的改变。
从站协议正常通信的前提是从站应用程序处于运行状态。
EtherCAT 读写寄存器对从站状态机的转化操作是从站应用程序进入运
行状态的前提和基础[
40],EtherCAT 状态机有初始化(Init),预运行(Pre-Op),
安全运行(Safe-Op),运行(Op)四种状态,按照 EtherCAT 协议进行各个
状态之间的转化。
(1) 要实现从 Init 向 Pre-Op 的转化,主站要控制从站读取 EEPROM
的配置信息对 ET1100 寄存器数据进行初始化设置,除了选择 PDI 接口类型
和通信模式以外,还需要设置 SM 同步管理通道允许邮箱通信模式,这些操
作完成后,主站请求“Pre-Op”状态,实现 Init to Pre-Op(IP)转化。
(2) 要实现 Pre-Op 向 Safe-Op 的转化,主站要通过上一阶段实现的邮
箱通信传递数据通过设置 SM 通道允许过程通信模式并配置 FMMU 形成过程
数据映射,这个操作完成后,主站请求“Safe-Op”,实现 Pre-Op  to  Safe-Op
(PS)的转化。
(3) 要实现 Safe-Op 向 Op 的转化,主站不仅要给从站发送过程数据,
还要设置 SM 通道和 FMMU 管理单元允许从站往回发送过程数据,这个操作
完成后,主站请求“OP”状态,实现 Safe-Op to Op(SO)的转化。
主站如果想要改变从站状态,将主站请求写入到从站 AL 控制位,通过
中断提醒给从站,从站读取从站 AL 控制位信息后请求新的状态,如果从站
数据允许具备转化条件,那么从站将进入主站所请求的状态,如果条件不具
备,那么从站不转化将问题记录到从站错误码指示位(0x0130.4)中[
41]。主
站读取状态机实际状态,如果正常转化,则执行下一步任务,如果出错,主
站读取错误码,并将 AL 错误应答位(0x0120.4)来清除 AL 错误指示。使用
微处理器 PDI 接口时,AL 控制寄存器使用握手机制,EtherCAT 数据读写必
须在 PDI 操作之后。

使用特权

评论回复
39
wangjiahao88|  楼主 | 2020-6-18 15:28 | 只看该作者

使用特权

评论回复
40
wangjiahao88|  楼主 | 2020-6-18 15:29 | 只看该作者






图 4-10 Init to Pre-Op 转换测试过程
初始化完成
alEvent in mainloop:0
mainloop 中,输出过程数据大小为 0
进入 HW_main( )之前 alEvent 的值为 0
执行 mbx_main( )
alEvent in HW_main: 11
alControl in HW_main: 2
HW_main( )中获得 SM1 缓存的使能字节的 if 执行
运行 AL_ControlInd function 函数
此时 alControl 的值是:2
第一个 switch 之前 stateTrans 值是:  12
pSyncMan->Setting.Byte[ESC_OFFS_ECATENABLE]的值是:1
pSyncMan->Setting.Byte[ESC_OFFS_ECATENABLE]的地址是:
60000806
pSyncMan->Setting.Byte[ESC_OFFS_SMCTRL]的值是:26
pSyncMan->Setting.Byte[ESC_OFFS_SMCTRL]的地址是:60000804
pSyncMan->Length 的值是:80
pSyncMan->Length 的地址是:60000802
pSyncMan->PhysicalStartAddress 的值是:1000
pSyncMan->PhysicalStartAddress 的地址是:60000800
第一个 switch 之后的 stateTrans 值是:22
main 函数中 Mainloop 之后 nAlStatus 的值是:2

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则