一、EtherCAT从站协议栈:先搭个骨架
做EtherCAT从站开发,第一件事是什么?
不是写代码,是理解协议栈怎么跑的。
EtherCAT从站协议栈,说白了就是一套处理数据帧的机制。主站发一个帧下来,从站得在极短时间内把数据读走、写回、再转发出去。这个时间窗口有多短?我告诉你,通常只有几微秒。
协议栈分三层:
- 物理层:负责收发电信号,就是那对差分线
- 数据链路层:ESC(EtherCAT从站控制器)干的活,帧检测、转发、中断
- 应用层:咱们工程师写的代码,处理PDO、SDO这些
我个人习惯把协议栈想象成一个快递分拣中心。主站的帧就是一辆卡车,从站是分拣员。卡车开进来,分拣员迅速看一眼哪些包裹是自己的,拿走,再放上新的包裹,车继续开走。整个过程不能停。
核心要点:EtherCAT从站不存储转发,而是"飞读飞写"。数据在帧经过的瞬间完成交换。
二、EEPROM在EtherCAT中的作用:从站的"身份证"
EEPROM在EtherCAT从站里扮演什么角色?
我打个比方:它就像你的身份证。主站一上电,第一件事就是读EEPROM,看看你是谁、你支持什么功能、你的配置参数是什么。
EEPROM里存的东西,叫SII(从站接口信息)。主站通过读取SII,才知道怎么跟你通信。没有EEPROM,或者EEPROM内容不对,从站就"哑巴"了——主站认不出你,自然没法正常工作。
我在项目中遇到过一件事:有一批从站板子,焊上去死活连不上主站。查了两天,最后发现是EEPROM里一个字节写错了。就一个字节,导致整个从站无法识别。从那以后,我每次烧录EEPROM都要做三次校验。
警告:EEPROM内容错误是从站开发中最常见的"隐形杀手"。硬件没问题,软件没问题,但就是连不上——十有八九是EEPROM配置错了。
三、SII结构解析:EEPROM里的"藏宝图"
SII的全称是Slave Information Interface,从站接口信息。它定义了EEPROM里数据的组织方式。
SII的结构其实不复杂,我把它拆成几个部分:
| 地址范围 | 内容 | 大小 |
|---|---|---|
| 0x0000 - 0x003F | 标准EEPROM布局(必填) | 64字节 |
| 0x0040 - 0x007F | 字符串区域(可选) | 64字节 |
| 0x0080 - 0x00FF | 通用配置区域(可选) | 128字节 |
| 0x0100+ | 扩展数据(可选) | 可变 |
你想想看,主站上电后,先读0x0000到0x003F这64个字节。这64个字节里包含了从站的基本信息:厂商ID、产品码、版本号、支持的邮箱协议等等。如果这64个字节不对,后面的数据主站根本不会去读。
小技巧:调试时,我习惯先用EtherCAT配置工具读一下EEPROM的原始数据。看看0x0000到0x003F这段,基本就能判断问题出在哪。
四、标准EEPROM布局(0x0000-0x003F):最关键的64字节
这64字节是EEPROM的"门面",也是主站最先读取的区域。咱们逐段看看:
4.1 0x0000 - 0x0007:ESC配置区
这8个字节告诉ESC芯片怎么工作。比如数据链路层的配置、中断使能等。我一般不动这里,除非要改ESC的某些特殊行为。
4.2 0x0008 - 0x000F:从站类型标识
这里存的是厂商ID和产品码。主站靠这两个字段来识别从站型号。我曾经见过两个不同厂商用了相同的产品码,结果主站把A厂商的从站当成了B厂商的,通信乱套了。
4.3 0x0010 - 0x0017:版本与序列号
硬件版本号、软件版本号、序列号。调试阶段我习惯把版本号设成0x0001,量产前再改成正式版本。
4.4 0x0018 - 0x001F:邮箱通信配置
如果你的从站需要SDO通信(邮箱方式),这里就要配置邮箱的大小和通道数。纯PDO的从站可以全填0。
4.5 0x0020 - 0x0027:同步管理器配置
同步管理器(Sync Manager)是EtherCAT的核心机制之一。这里配置每个同步管理器的通道类型和方向。我建议新手先搞清楚SM0到SM3的用途:
- SM0:邮箱写通道(主站→从站)
- SM1:邮箱读通道(从站→主站)
- SM2:过程数据输出(主站→从站)
- SM3:过程数据输入(从站→主站)
4.6 0x0028 - 0x003F:FMMU与保留区
FMMU(现场总线内存管理单元)配置,以及一些保留字节。这部分我建议保持默认值,除非你很清楚自己在做什么。
实战经验:我调试过几十个EtherCAT从站项目,90%的EEPROM问题都出在0x0008-0x000F和0x0020-0x0027这两个区域。要么是厂商ID写错了,要么是同步管理器配置跟实际代码不匹配。
五、知识体系总览
下面这张图,是我自己总结的EEPROM配置知识体系。你看一眼,心里就有数了:
嗯,这张图把今天讲的内容串起来了。从协议栈到SII结构,再到标准布局,一层层往下走。你记住一句话:EEPROM是从站的身份证,0x0000-0x003F是身份证上的照片和姓名。
我的建议:刚开始学EtherCAT从站开发,别急着写应用代码。先把EEPROM配置搞明白。我见过太多人,代码写得飞起,结果连不上主站,最后发现是EEPROM里一个字节没配对。磨刀不误砍柴工,EEPROM配好了,后面就顺了。
公众号:蓝海资料掘金营,微信deep3321