本项目主要是在信迈科技TI OMAPL138 C6748 DSP上移植SOEM。主要工作有操作系统和硬件层的适配。

下面先简要介绍下概念。

EtherCAT 是一个以以太网为基础的开放架构的现场总线系统,EtherCAT 数据部分封装在以太网帧中,主站发送以太网帧在以太网上传输。 EtherCAT 只需要物理层,数据链路层和应用层,OSI 七层协议体系结构中 的另外四层都不是必需的。EtherCAT 帧结构也可以封装在 IP/UDP 数据报中,进而上传到从站的应用层由从站控制器的硬件进行处理[16]。如图 2.1 所示。
传输延迟测量算法的基本步骤如下:
a.主站广播一个测量帧,所谓测量帧,就是写端口 0 时间寄存器任意值即
可。向每一个从站写 0 到寄存器 DCTIME0 中。
b.当这个测量帧达到每一个从站的端口 n(n=0,1,2,3)以及 ESC 处理器的时
候,就会在相应的时间戳寄存器中记下到达时的本地时钟数值。
c.主站读取各从站端口本地时间,并依据网络拓扑分析,计算出每一个从
站的传输延迟时间。
d.主站最后将计算出来的结果写入到相应从站的系统时间延迟寄存器中
ECT_REG_DCSYSDELAY。

如前面论述,如果所有从站使用相同的时钟源,或者各个从站的时钟源频
率严格一致,则就不存在漂移补偿了。为了尽力消除漂移对同步的影响,则必
须进行漂移补偿。而时间控制环就是用来进行漂移补偿的。时间控制环模型如
图 2.14 所示:
时间控制环是一个负反馈回路。每一个从站都有一个这样的时间控制环。
图中的 i 表示从站 i,即给出的是从站 i 的时间控制环。其基本原理是将本地系
统时间与参考时钟的系统时间进行比较。根据比较结果,补偿单元或者加快本
地时钟,或者减慢本地时钟。
为了保证时间控制环的的运行,EtherCAT 引入了如下几个机制:
a.从站提供一个系统时间寄存器 ECT_REG_DCSYSTIME。该寄存器的写
访问有特殊的含义:将参考时钟的时间数值写入到这个寄存器,则该从站 ESC
会将写入的数值与该从站自己的系统时间副本进行比较,将比较结果送入补偿
单元,从而调整该 ESC 从站的本地时钟快慢,使得本地系统时间与参考系统时
间最终趋于一致。
b.一读多写指令:FRMW 或 ARMW 指令,用于时间控制环的漂移校正。
指定参考时钟从站的配置地址或者物理序号,对 ECT_REG_DCSYSTIME 寄存
器执行一读多写操作。
该指令帧经过参考时钟从站 时,地址命中,则执行读
ECT_REG_DCSYSTIME 寄存器。读的结果,即是该指令帧达到该参考时钟从站
处理器时的系统时间,即 Tsystime(1) = Tref,假设参考时钟从站是 1。此后,每当经
过一个从站,使用读取到的 Tref 数值,写入到该从站的 ECT_REG_DCSYSTEM

寄存器。具体就是将此刻本地系统时间与参考时钟进行比较:Tsystime(i) - Tref ,由
于当该指令帧达到从站 i,需要耗时 Tdelay(i),所以,与参考时间 Tref 对等的该从
站的系统时间应该为:Tsystime(i) - Tdelay(i)。因此,准确的比较公式为:
Δt = [Tsystime(i) - Tdelay(i)] - Tref (2.6)
Tdelay(i):第 i 个从站的传输延迟,Tref:参考时钟系统时间
参考图 2.14,这个正是时间控制环的前端输入。计算结果送给补偿单元。
补偿单元根据Δt 的数值来调整本地时钟的快慢:
Δt=0,则说明从站 i 与参考时钟完全一致,就不用调节了。
Δt>0,说明从站 i 本地时钟走的太快,则将其调慢一点。
Δt<0,说明从站 i 本地时钟走的太慢,则将其调快一点。
时钟调快或者调慢,无法通过硬件来实现,因为硬件时钟源已经固定,所
以,须通过软件逻辑来完成。比如,假设每 10ns 中断一次,则每中断一次,本
地时间加 10。那么现在根据Δt,如果Δt>0,则本地时间+9;如果Δt<0,则本
地时间+11,这样就相当于调整了本地时间的快慢。经过补偿单元调节后,其输
出是调整后的 Tlocal(i),该值与 Toffset(i)之和,就是本地系统时间副本 Tsystime(i)。
经过一次补偿后,从站 i 的系统时间副本更加接近于参考时钟。因为一个
MW 指令帧,所有从站都经过一次补偿。所以,相当于全网段的时间同步往前
精确一步。显然,补偿不能够一次完成,应该隔一段时间就需要全网段补偿一
次。EtherCAT 建议两种漂移补偿方式:静态补偿和动态补偿。
静态补偿在系统初始化的时候进行。当测量并配置完毕各个从站的系统时
间偏差,以及传输延迟后,则可以启动静态补偿。一次执行 N 次的一读多写指
令。读取参考时钟从站的系统时间,将参考时钟写入后续从站中,如 Sanyo
MOTIONR 就希望执行 15000 的漂移补偿[41]。
动态漂移补偿在系统正常运行的时候,由于漂移因素的存在,必须定期执
行漂移补偿,否则,随着时间的推移,各个从站的系统时钟必定向不同步的方
向迈进。但是在系统正常运行时,就不能如在初始化阶段那样任性了,尤其是
像多轴机器人复合运动的时候,随时都在执行过程数据的更新。在这样的情况
下,漂移补偿必须周期性进行。
一个简单的方式就是将漂移补偿命令子报文嵌入到过程数据的发送帧中。
因为过程数据是周期执行的,因此两者有很高的契合度。本文实验正是使用这
样的方式:每当发送一个过程数据帧,则附加一个漂移补偿子报文。在执行周

期性过程数据的同时做漂移补偿操作。
过程数据的发送周期非常短,如 1ms 甚至更低,因此相当于每 1ms 执行一
次漂移补偿。在 1ms 之内,漂移的偏差相当有限,这样就保证了在整个系统的
运行周期内,时钟同步就有了切实的保证。

SOEM Ethercat在TI DSP RTOS上的移植相关推荐

  1. 嵌入式实时操作系统μC/OS-Ⅱ 在DSP芯片上的移植与测试

    [摘要]为了降低DSP 系统软件的开发难度,保证系统的实时性,缩短开发周期,将嵌入式实时操作系统μC/OS-Ⅱ移植到DSP 芯片中是目前比较常用的一种方法.本文介绍了嵌入式实时操作系统μC/OS-Ⅱ的 ...

  2. EtherCAT主站SOEM在Ubuntu上的移植

    EtherCAT主站SOEM在Ubuntu上的移植 原文:https://blog.csdn.net/ethercat_i7/article/details/52794069?utm_medium=d ...

  3. 计算机编程术语. dsp,TI DSP——专业名词解释

    差分信号是一对大小相等而极性相反的对称信号: 差分传输区别一传统的一根信号线一根地线的传输做法,差分传输在这两根线上都传输信号,这两个信号振幅相等,相位相反. 差分传输的信号能够有很强的抗外部干扰的能 ...

  4. TI DSP入门学习

    本FAQ是针对刚刚进入DSP硬件和软件设计领域的网友,希望能够帮助大家快速入门.在设计和调试时少走弯路. 水平有错误和不完善的地方,大家一定指出,免得流毒无穷.欢迎大家补充!! 1.TI DSP的选型 ...

  5. 最近在ST公司的STxp70的dsp平台上开发音频codec模块.

    公司最近和ST公司有个DAB的项目, 需要将AACplus,BSAC,MPEG-lay2以及lay3的算法在该dsp平台上 进行优化.这个dsp平台比较的奇怪和TI的以及arm的core不太一样,它有 ...

  6. TI DSP 6657 SRIO 简介

    TI DSP 6657 SRIO 简介 SRIO 协议介绍 TI 的 KeyStone 系列设备中实现了 RapidIO 协议,实现 RapidIO 的部分外设,被 TI 称为 SRIO (Seria ...

  7. TI DSP 28335 ADC连续采样检测SPI控制的DAC输出 SCI串口232通信

    文章目录 前言 1 SCIA FIFO 串口通信配置 2 DAC 数模转换 配置 2.1 TLV5620芯片简介 2.2 TLV5620初始化函数 2.2 DAC 输出函数 3 ADC 模数转换 配置 ...

  8. TI DSP系列分类

    首先上图,TI官网产品结构树,由此可见TI当前主推和热门使用的DSP处理器. ------------------------------------------------------------- ...

  9. 开发TI DSP需要知道的

    三.DSP发展动态 1.TMS320C2000 TMS320C2000系列包括C24x和C28x系列.C24x系列建议使用LF24xx系列替代C24x系列,LF24xx系列的价格比C24x便宜,性能高 ...

  10. STM32H743 SOEM EtherCAT基于STM32H743芯片和SOEM的EtherCAT主站源码

    STM32H743 SOEM EtherCAT基于STM32H743芯片和SOEM的EtherCAT主站源码 提供配套CUBE工程 STM32H743 SOEM EtherCAT基于STM32H743 ...

最新文章

  1. 面试官问我,使用Dubbo有没有遇到一些坑?我笑了。
  2. R语言ggplot2可视化:ggplot2可视化两个水平条形图(horizontal)、并设置两个条形图使用共享的X轴、使用类似population pyramid可视化的方式绘制共享X轴的水平条形图
  3. 115网盘如何打开php文件格式,115网盘下载:因纽特语教材(初级+高级+音频)
  4. Dubbo启动时qos-server can not bind localhost:22222错误解决
  5. c++dll生成和调用
  6. linux-VM无法连接mks套接字连接尝试次数太多
  7. c++ websocket客户端_python测试开发django81.dwebsocket实现websocket
  8. mysql函数未定义_未定义的函数,MYSQL错误
  9. 文件的记录c语言程序,c语言程序学生籍贯信息记录簿设计.docx
  10. Composer报错Could not find a matching version of package解决方式
  11. html css 实现发票(付款申请书)模板
  12. Unity四元数,欧拉角
  13. 手把手教你安装黑苹果之openCore-0.6.3 EFI制作全过程,非常详细
  14. java split保留分隔_String split如何保留分隔符
  15. 计量经济学笔记3-Eviews操作-多元线性回归
  16. 大数相乘 (模板)
  17. iframe 的使用理解
  18. js 生成UUID的几种方法
  19. 虾皮二面:如何设计优惠券系统?
  20. xml根据属性去重。如csprj去重

热门文章

  1. 一个屌丝程序猿的人生(四十九)
  2. vss2005 Internet配置
  3. 计算机室 多媒体教室制度,专用教室、多媒体教室管理制度
  4. 如何卸载红蜘蛛多媒体网络教室软件
  5. navicat中如何查看mysql日志_如何查看 Navicat Premium 日志文件
  6. 御剑江湖一键端mysql_御剑情缘gm完整端下载
  7. 计算机主板详细维修,教你电脑主板维修必备基础知识
  8. 传智播客张孝祥 JavaScript视频教程
  9. discuz 论坛DIY增加{lastposter}最后回复者以及{forumicon}版块图标调用解读
  10. JAVA 实现 Word转PDF