打印
[应用相关]

关于STM32开发ethercat从站的方案

[复制链接]
楼主: wangjiahao88
手机看帖
扫描二维码
随时随地手机跟帖
41
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)

使用特权

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

使用特权

评论回复
43
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
总线的读写顺序及速率配合对不同存储器的读写。

使用特权

评论回复
44
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 所示。

使用特权

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

使用特权

评论回复
46
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 机制进行初始化,主要包括端口初始化和时序初始化。  

使用特权

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

使用特权

评论回复
48
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 操作之后。

使用特权

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

使用特权

评论回复
50
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

使用特权

评论回复
51
wangjiahao88|  楼主 | 2020-6-18 15:31 | 只看该作者
EtherCAT 系统是一个主从站系统,首先把 EtherCAT 数据帧从主站传输
到从站,整个 EtherCAT 网络通信过程就是主站将过程数据发送给从站,
EtherCAT 数据帧被所有从站处理,之后再将 EtherCAT 报文返回给主站,工
业网络通信对于性能的要求主要集中在实时性和可靠性上,在这个 EtherCAT
网络通信过程中的数据传输速度以及丢包率是测试整个系统性能的关键。
  测试 EtherCAT 主从站系统性能,主站采用的是 S3C6410 开发板+UCOS II
操作系统+EtherCAT 主站协议,从站采用的是 STM32 开发板+ESC 开发板
+EtherCAT 从站协议,主站和从站之间采用的是长度为 1m 的标准网线,连
接到 ESC 开发板和 S3C6410 开发板的网口设备上,传输数据帧完全符合标
准以太网设备的要求。

使用特权

评论回复
52
wangjiahao88|  楼主 | 2020-6-18 15:31 | 只看该作者
测试过程是这样的:
(1)  主站系统程序运行,主站先发送广播地址来寻址从站;当找到指
定从站后,开始配置从站状态,同时主站初始化要传输的变量及数据长度;
(2)  当从站进入 Op 运行状态以后,使用 UCOSII 操作系统的计时函数
记录当前时间;
(3)  记录下进入 Op 的时间点以后,开始调用主站的数据发送函数,
将之前初始化好的变量数据传输给从站,记录当前时间,同时记录从站接收
到的数据值;
(4)  记录下循环发送数据的时间后,主站调用系统读函数,读取从站
数据一次,并记录当前时间,同时记录主站读取的数据值;
(5)  反复读写从站中的数据十次,分别记录主站发送数据前的时间,
主站发送数据后的时间,主站读取从站数据的时间等三组数据;比较之间记
录的三组数据进行分析,得出该 EtherCAT 系统的时延及丢包率;
(6)  反复多测几组,修改变量大小,循环次数等因素,寻找测试因子,
确定整个系统性能。
如表 4-2 所示,第一行为组别,第二行为发送数据前时间,第三行为发
送数据后时间,第四行为发送数据前后的时间差,单位均为μs。

使用特权

评论回复
53
mmuuss586| | 2020-6-20 13:29 | 只看该作者

使用特权

评论回复
54
asixpm| | 2020-6-30 11:46 | 只看该作者
wangjiahao88 发表于 2020-6-18 08:45
哦?您的意思是?有专门的ASIC吗?

AX58200是一款2/3端口EtherCAT从站专用通讯SoC。亚信电子提供AX58200 EtherCAT从站ADIO开发套件与免费的开发板支持套件(BSP),包括参考电路图、软体/硬体开发设计相关技术文件及使用手册、产品设计相关软体等。需要更多亚信产品相关资讯,欢迎透过电子邮件接洽业务人员sales@asix.com.tw,或访问亚信公司网站https://www.asix.com.tw/。

使用特权

评论回复
55
asixpm| | 2020-6-30 11:47 | 只看该作者
asixpm 发表于 2020-6-30 11:46
AX58200是一款2/3端口EtherCAT从站专用通讯SoC。亚信电子提供AX58200 EtherCAT从站ADIO开发套件与免费的 ...

欢迎观赏以下亚信电子AX58200开发套件介绍视频...
18分钟快速架设AX58200 EtherCAT从站ADIO开发套件环境视频
https://v.youku.com/v_show/id_XNDUxMTYxNTQ1Mg==.html

AX58200 EtherCAT从站单片机马达控制开发套件环境架设演示视频
https://v.youku.com/v_show/id_XNDYzNDI3NzYwMA==.html

使用特权

评论回复
56
keaibukelian| | 2020-7-9 13:54 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
57
labasi| | 2020-7-9 13:55 | 只看该作者
做出实物了吗

使用特权

评论回复
58
paotangsan| | 2020-7-9 13:55 | 只看该作者
思路很不错

使用特权

评论回复
59
renzheshengui| | 2020-7-9 14:00 | 只看该作者
理论上可以有多少个从站啊

使用特权

评论回复
60
wakayi| | 2020-7-9 14:01 | 只看该作者
长知识了 呵呵

使用特权

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

本版积分规则