| | | | | | | | | | | | | 基于FPGA状态机设计实现EtherCAT从站基本通信链路并验证
| | | | | | | | | | | | | | | | | | |
Ethercat slave是什么?相比其他的有什么特点优势。如何通过FPGA实现Ethercat slave,基于FPGA状态机设计实现EtherCAT从站基本通信链路并验证 摘 要: EtherCAT是工业控制领域广泛应用的现场总线之一,从站控制器ESC(EtherCAT Slave Controller)是从站模块实现EtherCAT协议数据通信的关键,对从站控制芯片实现自主可控是工业控制系统国产化研发的重要基础。基于EtherCAT通信协议及基本通信功能逻辑,设计了EBUS编码/解码、Auto-forwarder、Loop-back funcTIon关键通信节点的FPGA状态机,并通过解析各阶段数据状态变化,验证了各节点通信数据的正确性。实验结果表明,基于上述状态机的FPGA实现EtherCAT从站基本通信链路是完全可行的。 目录 0 引言EtherCAT是由BECKHOFF提出的在工业控制领域获得广泛应用的现场总线之一,该总线具备全双工工作模式,可基于主站(Master)和从站(Slave)连接的模式实现数据传递,且具有低延时、高安全性的特点。EtherCAT从站控制器ESC(EtherCAT Slave Controller)是从站模块实现EtherCAT通信协议的关键,目前国内基于EtherCAT协议的通信功能基本都采用ET1100/ET1200等从站芯片来实现[1-4]。然而,由于这类芯片除基本通信功能外,还具备大量其他功能,而此类额外通信机制并不对我国技术人员公开,造成对此类通信芯片还无法实现完全自主可控,采用有效的安全机制提升系统安全性更是无从谈起。随着工业控制领域的信息安全问题日益突出,此类不可自主可控通信芯片的应用给我国核心控制系统的运行引入一定安全风险。为了实现对控制系统用通信芯片的完全自主可控,基于FPGA实现EtherCAT通信协议的自主化开发显得非常必要,同时也是采用自主安全机制提升通信系统安全能力的重要前提。 基本通信链路是实现收发EtherCAT协议数据的核心,因此,本研究基于EtherCAT协议特征及数据传递机制,设计关键通信节点的FPGA状态机,验证FPGA实现EtherCAT从站控制器基本通信链路功能的可行性,为完善EtherCAT其他通信功能及安全机制奠定重要基础。 1 EtherCAT从站控制器框架EtherCAT主站与各从站之间的通信链路如图1所示。通信过程中,数据帧遍历所有从站设备,数据帧通过某一从站时,从站设备根据报文命令分析寻址到本机报文并进行读/写数据到指定位置,数据帧到达最后一个从站后,该从站把处理后的数据帧发送给主站。主站收到此上行电报后处理返回数据,一次通信结束[5-6]。 EtherCAT从站控制器主要包括数据帧处理单元、EBUS接口编码/解码模块、Auto-forwarder模块、Loop-back funcTIon模块等。以ET1100/ET1200从站控制器为例,其内部框架如图2所示,主要包括MII、EBUS接口,EtherCAT数据帧处理单元,现场总线内存管理单元(FMMU,Fliedbus Memory Management Unit),存储同步管理通道(SM,SyncManager),分布时钟,PDI接口,ESC地址空间(包括寄存器和用户数据存储器),EEPROM控制,以及状态控制、中断、看门狗和物理层管理等部分。 其中,帧处理单元(EtherCAT Processing Unit)分析并处理EtherCAT数据流。现场总线内存管理单元(FMMU,Fliedbus Memory Management Unit)是EtherCAT从站控制IP核中的核心模块之一,用于实现主站对从站的逻辑寻址。存储同步管理通道(SM,SyncManager)实现主站和本地应用数据交换。Ethercat帧和PDI接口都必须轮询处理器来判断另一端是否完成访问。PDI接口模块是ESC芯片的应用数据接口。 在FPGA实现EtherCAT从站控制器的过程中,如果能实现数据链路的通路,数据帧能够通过EBUS、MII接口传输到FPGA中,FPGA将数据帧进行识别并进行CRC校验,解包出EtherCAT的帧格式和协议命令,并通过端口连接状态将数据帧发送。那么,可以说明EtherCAT从站控制器是可以在FPGA中进行自主开发实现。在以上的数据链路中,EBUS接口涉及到EBUS模块,EBUS模块主要对EBUS协议进行解析,通过曼彻斯特编码/解码接收或发送数据;FPGA将数据帧进行识别并进行CRC校验是Auto-Forwarder模块;通过Loop-back funcTIon模块将数据帧发送。以下分别介绍上述各模块的实现过程。 2 各模块实现逻辑2.1 EBUS编码/解码模块对于EBUS实现方式,EBUS接口的LVDS信号数据率是100 Mb/s,EBUS接口是利用曼彻斯特编码/解码(Manchester encoded)通过LVDS方式实现。 在实现EBUS部分时,根据EBUS协议要求,需要实现曼彻斯特解码和曼彻斯特波编码。其中“0”用“01”表示,“1”用“10”表示。EBUS协议中分为idle标识符、开始帧标识符(SOF)、结束帧标识符(EOF)。Idle标识符为“0”,开始帧标识符为连续3个时钟(200 MHz)连续的1,结束帧标识符为连续3个时钟(200 MHz)连续的0。EBUS协议如图3所示。 曼彻斯特编码状态机如图4所示,曼彻斯特编码的状态机共分为8个状态,分别为初始1状态(IDLE_1C)、初始2状态(IDLE_2C)、帧开始1状态(SOFR_1C)、帧开始2状态(SOFR_2C)、编码1状态(ENCO_1C)、编码2状态(ENCO_2C)、结束帧1状态(EOFR_1C)、结束帧2状态(EOFR_2C),处理时钟为200 MHz。 各状态说明如下: IDLE_1C为初始1状态,对应发送EBUS协议的idle标识符,发送的数据为‘0’。下一时钟即进入IDLE_2C状态。 IDLE_2C为初始2状态,对应发送EBUS协议的idle标识符,发送的数据为‘1’。当发送数据有效时进入SOFR_1C状态,否则进入IDLE_1C状态。 SOFR_1C为帧开始1状态,对应的发送EBUS协议的开始帧标识符,下一时钟进入SOFR_1C状态。 SOFR_2C为帧开始2状态,对应的发送EBUS协议的开始帧标识符,下一时钟进入ENCO_1C状态。 ENCO_1C为编码1状态,对应发送帧数据,下一时钟进入ENCO_2C。 ENCO_2C为编码2状态,对应发送帧数据,当发送数据无效时进入EOFR_1C状态,否则进入ENCO_1C状态。 EOFR_1C为结束帧1状态,对应发送帧结束标识符,下一时钟进入ENCO_2C状态。 EOFR_2C为结束帧2状态,对应发送帧结束标识符,此时一帧数据发送完毕,下一时钟回到IDLE_1C状态。 曼彻斯特解码状态机如图5所示,曼彻斯特解码的状态机共分为5个状态,分别为初始状态(IDLE)、帧开始状态(SOFR)、编码1状态(ENCO_1C)、编码2状态(ENCO_2C)、结束帧状态(EOFR),处理时钟为200 MHz。 各状态说明如下: IDLE为初始状态,对应接收EBUS协议的idle标识符,下一时钟即进入SODR状态。 SOFR为帧开始状态,对应的接收EBUS协议的开始帧标识符,当接收到连续3个‘1’即rx_sof_dv为1时,下一时钟进入ENCO_1C状态,否则进入IDLE状态。 ENCO_1C为编码1状态,对应接收帧数据,下一时钟进入ENCO_2C。 ENCO_2C为编码2状态,对应接收帧数据,当接收到连续3个‘0’时,进入EOFR状态,否则进入ENCO_1C状态。 EOFR_1C为结束帧状态,此时已经接收到完整的EtherCAT帧,下一时钟进入IDLE状态。 2.2 Auto-forwarder模块Auto-forwarder模块是MII和EBUS模块进入IPCORE的第一个处理模块,主要实现MII/EBUS数据缓存、检测帧导码、错误检测、将数据发送到自动回环(Loop-back funcTIon)和帧处理单元(EtherCAT Processing Unit)。Auto-forwarder模块实现MII/EBUS数据缓存功能是将EtherCAT帧数据存到FIFO中,并经过IPCORE处理时钟(25 MHz)数据读出,实现帧数据与IPCORE时钟同步,再进入到下一模块处理。检测帧导码是在数据帧数据有效后,通过检测帧导码(0x55555555555555555D),从而确定此帧为以太网帧。数据检测主要检测3种错误:物理层错误(RX错误)、数据帧错误、CRC错误。在数据经过FIFO同步后,在以太网帧的条件下,进行CRC校验,如果CRC校验正确,把帧数据发送到自动回环或帧处理单元中;如果CRC校验错误,将此帧丢弃。将数据发送到自动回环和帧处理单元是在CRC校验正确和无其他错误的条件下,将帧数据发送到自动回环和帧处理单元中。Auto-forwarder模块的状态机如图6所示。 Auto-forwarder模块的状态机共分为5个状态,分别为初始状态(IDLE)、检测前导码状态(DETECT_PREAM)、检测前导码开始状态(DETECT_START)、帧开始状态(FRAME_START)、帧处理状态(FRAME_PROC)。处理时钟为25 MHz。各状态说明如下: IDLE为初始状态,当没有帧数据时,状态处于IDLE状态。当检测到帧数据为5时,进入到DETECT_PREAM状态。 DETECT_PREAM 为检测前导码状态,帧接收帧导码5,当检测到D时,进入到DETECT_START状态。 DETECT_START为检测帧导码开始状态,在下一时钟进入到FRAME_START状态。 FRAME_START为帧开始状态,开始接收帧数据,在下一时钟进入到FRAME_PROC状态。 FRAME_PROC为帧处理状态,正式处理帧数据,当没有帧数据时就进入IDLE状态。 2.3 Loop-back function模块自动回环(Loop-back function)是根据端口打开状态确定数据帧转发状态,IP共有4个端口,如果当前端口处于闭合或未建立连接状态,则回环功能转发EtherCAT帧到下一个逻辑端后,端口0(PORT0)的回环功能会转发帧数据到数据帧处理单元。端口状态分别为:自动闭合、手动打开。不同端口数据帧的处理顺序如下: (1)0→EtherCAT Processing Unit→0 (2)0→EtherCAT Processing Unit→1 / 1→0 (3)0→EtherCAT Processing Unit→1 / 1→2 / 2→0 (log. ports 0,1, and 2)or0→EtherCATProcessing Unit→3 / 3→1 / 1→0 (log. ports 0,1, and 3) (4)0→EtherCAT Processing Unit→3 / 3→1 / 1→2 / 2→0 为便于验证及测试,本文重点探讨双端口情况下的数据转发功能及测试。 3 功能测试为了对基于FPGA的通信链路进行系统测试,搭建如图7所示的测试环境。 其中,EtherCAT主站是指倍福EtherCAT主站,可以将指定EtherCAT帧发送到从站中;EtherCAT从站(ASIC)是指倍福的以ET1100芯片为核心的EtherCAT从站,ETherCAT主站通过MII信号将EtherCAT帧发送到EtherCAT从站(ASIC)中,EtherCAT从站(ASIC)将EtherCAT帧转换成EBUS信号,将数据传输到EtherCAT测试板中;EtherCAT测试板是以FPGA为核心的测试板。 在测试中,测试板通过EBUS接口,将数据帧传输到FPGA中,FPGA通过EBUS解码得到数据帧,数据帧到FPGA将进行识别并进行CRC校验,解包出EtherCAT帧格式和协议命令。通过MII转发到PC上,PC通过wireshark进行抓包验证数据帧的正确性。 3.1 解码状态测试解码状态测试结果如图8所示,其中rx_data_interal为EBUS差分转单端信号,current_state为状态机信号,rx_dv为数据有效信号,rx_data为接收数据。可以看出,EBUS协议的LVDS信号通过差分转单端后,通过状态机处理,得到帧数据。 3.2 编码状态测试编码状态测试结果如图9所示,tx_data_interal为单端信号转EBUS差分信号,current_state为状态机信号,tx_dv为数据有效信号,tx_data为接收数据。可以看出,发送数据有效后,通过状态机将数据单端转差分发送出去。 3.3 Auto-forwarder数据状态经过Auto-forwarder状态的数据如图10所示,其中frame为帧数据,fifo为帧数据通过数据同步后的数据,state为状态机信号,frame_done为数据帧结束信号,frame_start为帧开始信号,frame_data_valid为数据帧有效信号,frame_crc_err为帧错误信号。结果表明,数据帧可以正确识别并进行解析,在帧结束后,可以看到frame_crc_err有一拍为低。 3.4 数据帧验证用wireshark抓取的数据结果表明,数据帧可以由FPGA正确处理,wireshark抓取报文正确接收到EtherCAT类型的转发报文,说明数据链路已打通。 4 结论本文通过解析各阶段数据结果,验证了关键通信链路上EBUS编码/解码、Auto-forwarder、Loop-back function模块的FPGA状态机的正确性,说明FPGA实现EtherCAT从站基本通信链路是完全可行的,为开发完善的ESC从站控制器创造了条件。 EtherCAT slave案例基于Infineon XMC4800 EtherCAT Slave Digital I/O控制方案 EtherCAT为目前最快速之工业网络技术,优点为国际标准安全协议、高效率低成本、精确同步、灵活拓朴结构、冗馀回复功能。 因应工业4.0智慧制造智慧工厂等工业自动化市场需求的增加,Infineon MCU XMC4800集成提供EtherCAT Slave工业乙太网路控制技术,实现工业自动化控制、智慧生产制造机器人、远端总线监控等应用。 Infineon XMC4800/XMC4300为EtherCAT协会会员产品,客户可基于XMC4800开发EtherCAT slave远端AIO/DIO模组、EtherCAT P电源、EtherCAT slave马达运动控制器、机械手臂……等工控产品。 展示板XMC4800集成MCU和EtherCAT slave ASIC,应用于EtherCAT Slave产品。 EtherCAT Master PC使用开源工具TwinCAT3监控Slave。 8通道ISOFACE数位输入接口可监视8个设备节点,8通道ISOFACE数位输出接口可控制8个设备节点,目前广泛应用于工厂自动化和楼宇自动化产品。 场景应用图 产品实体图 展示板照片
方案方块图 定义EtherCAT节点位址和规格 SSC Tool产生slave stack代码 DAVE4撰写MCU和EtherCAT从站程式 TwinCAT3控制EtherCAT远端设备节点 TwinCAT3监测EtherCAT远端设备节点 核心技术优势芯科技核心技术,专注FPGA开发十五年:19924911320,方案评估,业务咨询一、芯片优势: 1. XMC4800 MCU based on ARM Cortex-M4 at 144 MHz, 2 MB flash and 352 KB SRAM. 2. XMC4800 integrated Beckhoff ET1100 EtherCAT ASIC, interface capable of 100 Mbit/s transfer rates with 2 MII ports. 3. 通讯单元:Ethernet, USB, CAN bus, UART, SPI, IIC, IIS, external memory, SD/MMC card. 4. 外设单元:ADC 12-bit, DAC 12-bit, POSIF and DSD for motor control. 5. PWM CCU4/CCU8 support capture, compare, timer, counter, mosfet dead time. 二、EtherCAT slave demo: 1. 软体工具说明: (1) XMC_ESC excel:定义 Isoface 8ch DI/8ch DO位址和输出输入格式。 (2) Beckhoff Slave Stack Code Tool:简称SSC Tool为代码产生器,产生EtherCAT SSC code and ESI file. (3) DAVE4:Infineon XMC IDE. (4) TwinCAT2/TwinCAT3:EtherCAT master monitor. 2. XMC_ESC 定义 EtherCAT slave设备位址和输出输入格式。 3. SSC tool代码产生器,产生SSC code, ESI file和ETG产品资讯。 4. XMC_ESC.c 撰写展示板对应位址和通道之程式。 5. DAVE4撰写XMC4800 and EtherCAT slave 应用层,打通EtherCAT slave控制。 6. TwinCAT3为EtherCAT monitor,模拟控制工厂远端设备节点。 方案规格1. Infineon XMC4800集成支持工业乙太网路从站自动化控制应用。 2. EtherCAT slave controller support 1 MII port input, 1MII port output. 3. 24V 8通道数位输入模组,具备电源隔离与故障保护,可监控工厂设备输入讯号。 4. 24V 8通道数位输出模组,具备电源隔离与故障保护,可远端控制工厂设备输出讯号。 5. OPTIGA Trust E 适用于工业自动化系统,增强系统安全性。 6. 展示板通讯接口,整合工业远端控制:EtherCAT slave, Ethernet, CAN bus, micro USB, external SDRAM, external FRAM. 7. IDE DAVE4 example code for basic EtherCAT physical layer evaluation. 8. Beckhoff slave stack code tool for EtherCAT software support. 9. Third-party driver tools for full EtherCAT application and charge support. 10. TwinCAT 3 support EtherCAT master. SOF封装数据组 中SOF信号和EOF信号是什么 您是要做rfid相关的通讯协议研究吗。 Sof: Start of Frame Eof: End of Frame. 阅读器和电子标签的对话以帧的形式进行,帧的起始标志是SOF(Start of Frame),结束标志是EOF(End of Frame)。单载波的SOF和EOF如图4所示。单载波的SOF包括三个部分:一段长度为56.64μs的未调制时间;24个频率为Fc/32的脉冲、逻辑1的位编码;而EOF亦包括三个部分:逻辑0的位编码、24个频率为Fc/32的脉冲、一段长度为56.64μs的未调制时间。 双载波的起始标志和结束标志 双载波的SOF和EOF如图5所示。双载波的SOF包括27个频率为Fc/28的脉冲、24个频率为Fc/32的脉冲、逻辑1的位编码;而EOF亦包括三个部分:逻辑0的位编码、24个频率为Fc/32的脉冲、27个频率为Fc/28的脉冲。
|