全部
  • 全部
  • 解决方案
  • 技术问答
  • 视频中心
  • 知识分享
  • 技术资讯
  • SEED产品
400-048-1230
订阅
  • 首页
  • 解决方案
  • 技术问答
  • 视频中心
  • 知识分享
  • 技术资讯
  • SEED产品
基于SEED-RT118X套件开发EtherCat从站(三)通信机制
来源:Arrow 发布:2024/06/27 浏览量:929

继上一期基于SEED-RT118X套件开发EtherCat从站(二)同步机制,这期为您带来该系列的第三篇。

 

FMMU的映射机制

 

在EtherCAT系统中,一旦系统搭建完成,主站便能够通过网络数据包与从机的EtherCAT控制器进行通信。为了实现主站与从站应用层之间的数据交互,EtherCAT引入了现场总线内存管理单元(FMMU)和从站同步管理器的概念。

 

FMMU(Fieldbus Memory Management Unit)是一个核心组件,它通过内部地址映射机制将逻辑地址转换为物理地址。在系统初始化阶段,主站会配置从站的FMMU模块,为每个从站的物理地址分配一个唯一的逻辑地址。此后,主站访问从站寄存器时,不是直接访问从站的物理地址,而是访问这些逻辑地址。FMMU单元会自动将这些逻辑地址转换成对应的实际物理地址,从而实现数据的准确传输。

 

这种地址映射机制的好处在于,它允许使用逻辑寻址来访问跨越多个从属设备的数据段。也就是说,一个数据包可以寻址多个任意分布的EtherCAT伺服控制器(ESC)内的数据。每个FMMU通道都负责将一个连续的逻辑地址空间映射到从属设备的一个连续的物理地址空间,从而实现了数据的集中管理和高效传输。

 

EtherCAT控制器的FMMU支持位映射功能,这使得数据的读写操作更加灵活和高效。同时,FMMU支持的访问类型可以配置为只读、只写或读写,以满足不同应用场景的需求。

 

SyncManagers的关键角色

 

FMMU(Fieldbus Memory Management Unit)在EtherCAT系统中扮演着关键角色,它负责管理主站对从站EtherCAT控制器的访问。然而,当EtherCAT主站需要与本地应用程序(如M7或M33)进行通信时,这种交互并非直接进行,而是必须通过EtherCAT从站控制器来实现。此时,从站控制器内的SyncManagers(同步管理器)便承担了管理这一通信功能的重任。

 

SyncManagers确保了EtherCAT主站与本地应用程序之间的数据交换既一致又安全。它们不仅管理数据的流动,还负责生成中断以通知双方数据的变化。这些SyncManagers由EtherCAT主站进行配置。

 

在通信过程中,SyncManagers支持不同的通信方向和通信模式,如缓冲模式和邮箱模式,这些都可以根据应用需求进行配置。当使用缓冲模式时,SyncManagers利用位于内存区域的一个特定缓冲区来交换数据。这个缓冲区的访问受到SyncManagers的硬件控制,确保了数据访问的安全性和一致性。

 

为了访问这个缓冲区,必须先访问其起始地址。如果未先访问起始地址,则对缓冲区的任何访问都将被拒绝。一旦起始地址被访问,就可以对整个缓冲区进行访问,无论是整体访问还是分几次访问。这种访问方式保证了数据的完整性和准确性。

 

当对缓冲区的访问完成后,必须访问其结束地址以标识访问的结束。此时,缓冲区的状态将发生变化,并可能生成中断或看门狗触发脉冲(如果已配置)。需要注意的是,在一个帧内不能两次访问结束地址,这确保了数据交换的规范性和准确性。

 

通过SyncManagers的精心管理,EtherCAT主站与本地应用程序之间的通信变得既高效又可靠,为工业自动化应用提供了强大的支持。

 

SyncManagers在EtherCAT系统中提供了两种主要的通信模式:邮箱模式和缓冲模式。

 

邮箱模式

邮箱模式在数据交互时采用了一种握手机制。在这种模式下,EtherCAT主站和从站应用层之间的通信是同步的,即只有在对方已经访问完缓冲区的情况下,双方才能继续访问。当发送方(无论是主站还是从站)写入缓冲区时,该缓冲区将被锁定以防止进一步的写操作,直到接收方完全读取了缓冲区中的数据。邮箱模式通常用于应用层协议和非周期性数据的交互,例如参数设置或诊断数据交换。

 

缓冲模式

缓冲模式则更适合于周期性数据的交互,如过程数据。在这种模式下,EtherCAT主站和从站应用层可以在任何时候访问通讯缓冲区。发送方总是可以更新缓冲区的内容,而不必等待接收方完成读取。然而,如果发送方写入数据的速度远快于接收方读取的速度,旧的数据可能会被新的数据覆盖。因此,接收方将始终收到最新的且与缓冲区内容一致的数据。缓冲模式传输的数据通常被称为PDO(过程数据对象)过程数据,它们是EtherCAT系统中实现高速数据传输的关键。    

 

对于邮箱模式的通信协议,我们可以进一步细分为不同的种类。这些协议为EtherCAT系统提供了丰富的功能和灵活性:

  • EoE(Ethernet over EtherCAT):定义了一个标准方式,用于在EtherCAT网络上交换或隧道传输标准以太网帧,实现了EtherCAT与标准以太网协议的互操作性。

 

  • CoE(CANopen over EtherCAT):定义了一个标准方式,用于访问CAN应用层对象字典,并在事件驱动路径上交换CAN应用层紧急消息和PDO消息,为CANopen协议在EtherCAT系统中的应用提供了支持。

 

  • FoE(File Access over EtherCAT):定义了一个标准方式,用于下载和上传固件以及其他类型的“文件”,为从站的远程配置和更新提供了便利。

 

  • SoE(Service over EtherCAT):定义了一个标准方式,用于访问IEC 61800-7标识符,为从站设备提供了标准化的服务接口。

 

  • VoE(Vendor-specific over EtherCAT):在VoE头部之后跟随的是一个特定厂商的协议,用于识别厂商和厂商特定的类型,为厂商自定义协议在EtherCAT系统中的应用提供了可能性。

 

  • AoE(ADS over EtherCAT):定义了一个标准方式,用于在EtherCAT上交换自动化设备规范(ADS)消息,为基于PC的自动化系统和EtherCAT设备之间的通信提供了桥梁。

 

FMMU和SyncManagers的配置

 

从下图EtherCAT从站控制器结构中,我们可以直观的看到FMMU以及同步管理器的位置。

 

一般来说一个从站既需要邮箱模式同步管理器,也需要缓冲模式同步管理器。我们来看一下SEED-RT118X开发套件对应的TwinCAT主站里关于FMMU以及SM的配置,这些配置通过XML文件获取。    

 

可以看到SEED-RT118X开发套件从站它使用了三个FMMU单元。前两个FMMU用于主站访问同步管理器,而第三个则用于主站访问从站的邮箱状态。例如,第一个FMMU配置表明:主站通过写入逻辑地址0x01000000.0来更新从站的物理地址0x1100.0,而该物理地址0x1100.0(地址0x1100的0bit位)恰好是同步管理器SM2的起始地址。

 

SEED-RT118X开发套件从站配备了四个同步管理器,分别用于邮箱模式的输入和输出,以及缓冲模式的输入和输出。这四个同步管理器的物理地址分别为:0x1000、0x1080、0x1100、0x1400。其中,0x1000和0x1080刚好是邮箱的输入和输出地址。

 

值得注意的是,尽管邮箱数据在实时性方面要求不高,但邮箱的通信仍然需要有序地进行。因此,虽然邮箱数据本身没有直接使用FMMU进行地址映射,但第三个FMMU被用于传输邮箱状态(0x080D),以确保主站和从站能够有序地访问邮箱数据。通过读取这个邮箱状态,主站和从站能够确保在适当的时候进行数据的写入和读取操作,从而维持通信的同步性和有序性。 

 

SEED-RT118X开发套件从站源代码的数据处理流程

 

在SEED-RT118X开发套件从站的源代码中,我们可以深入探索邮箱模式同步管理器的数据处理流程。首先,我们定位到cia402appl.c文件中的main()函数:

 

Main函数在从站执行一系列初始化操作后,会进入MainLoop()循环。这个循环是从站程序的主要执行路径,负责持续监控和处理各种任务。

 

在MainLoop()循环中,会调用ecatslv.c文件中的ECAT_Main(void)函数。这个函数是EtherCAT从站软件库的核心部分,负责处理EtherCAT通信协议相关的任务。在ECAT_Main(void)中,会进一步调用mailbox.c中的MBX_Main()函数。进入MBX_Main(void)函数后,会调用MailboxServiceInd(pMbx)函数。这个函数是处理邮箱服务指示的入口点,它根据邮箱的状态和配置来执行相应的操作。在MailboxServiceInd(pMbx)函数中,我们可以看到SEED-RT118X开发套件从站支持了CANopen over EtherCAT(CoE)协议,因为该函数中调用了COE_ServiceInd(TCOEMBX MBXMEM *pCoeMbx)这个特定于CoE协议的函数。

 

进一步跟踪代码,我们可以发现EtherCAT通过CoE协议进行了一些PDO(过程数据对象)过程数据的初始化配置。这些配置涉及数据的映射、传输方式等,确保PDO数据能够正确地在EtherCAT主站和从站之间传输。

          

我们再结合SEED-RT18X开发套件源代码看一下从站如何处理缓冲模式同步管理器数据即PDO过程数据,PDO过程数据主要通过下面两个函数来处理。

  

PDO_InputMapping函数主要负责将从站本地数据写入EtherCAT控制器中,以便主站能够读取。这个函数通常在PDI_Isr和Sync1_Isr这两个由EtherCAT控制器触发的中断处理函数中执行。以下是该函数的主要处理步骤:   

  1. 调用APPL_InputMapping((UINT16*)aPdInputData);函数,将从站本地数据写入到aPdInputData数组中。这个数组作为PDO输入数据的缓冲区,供主站读取。

  2. 调用HW_EscWriteIsr(((MEM_ADDR *) aPdInputData), nEscAddrInputData, nPdInputSize);函数,将aPdInputData数组中的数据写入EtherCAT从站控制器中对应的同步管理器地址。这里的nEscAddrInputData是在从站初始化时已经设置为对应缓冲模式输入同步管理器的地址。

 

另一方面,PDO_OutputMapping函数则负责将从EtherCAT控制器接收到的来自主站数据写入从站本地地址。这个函数主要在PDI_Isr中断处理函数中执行。以下是该函数的主要处理步骤:

  1. 调用HW_EscReadIsr(((MEM_ADDR *)aPdOutputData), nEscAddrOutputData, nPdOutputSize);函数,将从EtherCAT从站控制器中对应同步管理器地址的数据读取到aPdOutputData数组中。这里的nEscAddrOutputData是在从站初始化时已经设置为对应缓冲模式输出同步管理器的地址。

  2. 调用APPL_OutputMapping((UINT16*) aPdOutputData);函数,将aPdOutputData数组中的数据写入从站本地的相应位置,供本地应用程序后续使用。

         

相关阅读

工业控制
请使用浏览器分享功能 请点击右上角,进行分享
关于艾睿 代理产品线 联系我们 条款和条件