zoukankan      html  css  js  c++  java
  • 周期性过程数据通信和非周期性邮箱数据通信

    实际自动化控制系统中,应用程序之间通常有两种数据交换形式:时间关键和非时间关键。时间关键表示特定的动作必须在确定的时间窗口内完成。如果不能再要求的时间窗口内完成通讯,则有可能引起控制失效。时间关键的数据通常周期性发送,成为周期性过程数据通信。非时间关键的数据可以非周期性发送,在EtherCAT中采用非周期性邮箱数据通信。

    1、周期性过程数据通信

    周期性过程数据通信通常使用FMMU进行逻辑寻址,主站可以使用逻辑读、写或读写命令同时操作多个从站。周期性数据通信模式下,主站和从站有多种同步运行模式。

    (1)自由运行

    在自由运行模式下,本地控制周期由一个本地定时器中断产生。周期时间可以由主站设定,这是从站的可选功能。自由运行模式的本地周期如图所示。其中T1为本地微处理器从ESC复制数据并计算输出数据的时间;T2为输出硬件延时;T3为输入锁存偏移时间。这些参数反映了从站时间性能。

     

     (2)同步于数据输入输出事件

    本地周期在发生数据输入或输出事件的时候触发,如图所示。主站可以将过程数据帧的发送周期写给从站,从站可以检查是否支持这个周期时间或对周期时间进行本地优化。从站可以选择支持这个功能。通常同步于数据输出事件,如果从站只有输入数据,则同步于数据输入事件。

     

     (3)同步于分布式时钟同步事件

    本地周期由SYNC事件触发,如图所示。主站必须在SYNC事件之前完成数据帧的发送,此时要求主站时钟也要同步于参考时钟。

     

    为了进一步优化从站同步性能,从站应该在数据收发事件发生时从接收到的过程数据帧复制输出数据,然后等待SYNC信号到达后继续本地操作,如图所示。数据帧必须比SYNC信号提前T1时间到达,从站在SYNC事件之前已经完成数据交换和控制计算,接收SYNC信号后可以马上执行输出操作,从而进一步提高同步性能。

     主站设备同步运行模式

    主站有以下两种同步模式:

    (1)周期性模式

    在周期性模式下,主站周期性地发送过程数据帧。主站周期通常由一个本地定时器控制。从站可以运行在自由运行模式或同步于接受数据事件模式。对于运行在同步模式的从站,主站应该检查相应的过程数据帧的周期时间,保证大于从站支持的最小周期时间。

    主站可以以不同的周期时间发送多种周期性的过程数据帧,以便获取最优化的带宽。例如,以较小的周期发送运动空置数据,以较大的周期发送I/O数据。

    (2)DC模式

    在DC模式下,主站运行与周期性模式类似,只是主站本地周期应该和参考时钟同步。主站本地定时器应该根据发布参考时钟的ARMW报文进行调整。在运行过程中,用于动态补偿时钟漂移的ARMW报文返回主站后,主站时钟可以根据读回的参考时间进行调整,使之大致同步于参考时钟时间。

    DC模式下,所有支持DC的从站都应该同步于DC系统时间。主站也应该使其通信周期同步于DC参考时钟时间。下图表示主站本地周期与DC参考时钟同步的工作原理。

    主站本地运行由一个本地定时器启动。本地定时器应该比DC参考时钟定时存在一个提前量,提前量为以下时间之和:

      ●控制程序执行时间;

      ●数据帧传输时间;

      ●数据帧传输延时D;

      ●附加偏移(与各从站延迟时间的抖动和控制程序执行时间的抖动值有关,用于主站周期时间的调整)。

    2、非周期性邮箱数据通信

    EtherCAT协议中非周期性数据通信成为邮箱数据通信,它可以双向进行——主站到从站和从站到主站。它支持全双工、两个方向独立通信和多用户协议。从站到从站的通信由主站作为路由器来管理。邮箱通信数据头中包含一个地址域,使主站可以重寄邮箱数据。邮箱数据通信是实现参数交换的标准方式,如果需要配置周期性过程数据通信或需要其他非周期性服务时需要使用邮箱数据通信。

    邮箱数据报文结构如图所示。通常邮箱通信只对应一个从站,所以报文中使用设备寻址模式。其数据头中各数据元素的解释如表所示:

     

     (1)主站到从站通信——写邮箱命令

    主站发送写数据区命令将发送邮箱数据给从站。主站需要检查从站邮箱命令应答报文中工作计数器WKC。如果工作计数器为1,表示写命令成功。反之,如果工作计数器没有增加,通常因为从站没有读完上一个命令,或在限定时间内没有响应,主站必须重发写邮箱数据命令。

    (2)从站到主站通信——读邮箱命令

    从站有数据要发送给主站,必须先将数据写入输入邮箱缓存区,然后由主站来读取。主站发现从站ESC输入邮箱数据区有数据等待发送时,会尽快发送适当的读命令来读取从站数据。主站有两种方法来测试从站是否已经将邮箱数据填入输入数据区。一种是使用FMMU周期性地读某一个标志位。使用逻辑寻址可以同时读取多个从站的标志位,但其缺点是每个从站都需要一个FMMU单元。另一个方法是简单地轮询ESC输入邮箱的数据区。读命令的工作计数器增加1表示从站已经将新数据填入了输入数据区。

    邮箱通信出错时,应答数据定义如表所列:

     

  • 相关阅读:
    Linux 如何查看当前目录
    Docker快速入手实战笔记
    【ssh】ssh登录出现‘The authenticity of host ‘IP’ can't be established.’的问题
    【AFL(七)】afl-fuzz.c小改——输出文件夹暂存
    【steam】Steam背景美化——长展柜终极指南
    【AFL(六)】AFL源码中的那些头文件
    【AFL(五)】文件变异策略
    【Latex】详细的简易教程——写在论文开始之前
    【Latex】论文写作工具:VScode 2019 + latex workshop
    【AFL(四)】afl-cmin修改:文件夹相关操作鲁棒性
  • 原文地址:https://www.cnblogs.com/young-dalong/p/14694179.html
Copyright © 2011-2022 走看看