函数ecx_configdc的作用是测量传输时延(仅限当前slave不是第一个slave时,才计算时延)

1. 只连接一个从站时,ESC为LAN9252芯片。(不计算propagation delay,只计算offset)

LAN9252为3个port,跟下图有可能不一样。

首先写value==0x00000000至0x0900 ~0x0903,表示重置slave 1捕捉的数据帧第一个前导位到达port 0的时刻为零,该BWR命令使port 0 1 2 3均产生前导位到达的时刻

 /* latch DCrecvTimeA of all slaves *///0x0900
ecx_BWR(context->port, 0, ECT_REG_DCTIME0, sizeof(ht), &ht, EC_TIMEOUTRET); 

然后得到当前时刻值mastertime64,该值是从2000-01-01零时刻到目前总共经过的纳秒数。

然后读0x0900 ~ 0x0903,value==0x068dfdd2,该值代表slave 1 捕捉的数据帧第一个前导位到达port 0的时刻。

(void)ecx_FPRD(context->port, slaveh, ECT_REG_DCTIME0, sizeof(ht), &ht, EC_TIMEOUTRET);//0x0900

读0x0918 ~ 0x091F,value==0x00001eff068dfdd2,该值代表slave 1捕捉的数据帧第一个前导位到达EtherCAT协议处理单元的时刻。

(void)ecx_FPRD(context->port, slaveh, ECT_REG_DCSOF, sizeof(hrt), &hrt, EC_TIMEOUTRET);//0x0918

计算offset value,offset==mastertime64 - 0x00001eff068dfdd2==0x2e775e31b1a6352e,并将其写入0x0920~0x0927

(void)ecx_FPWR(context->port, slaveh, ECT_REG_DCSYSOFFSET, sizeof(hrt), &hrt, EC_TIMEOUTRET);//0x0920

读0x0904 ~ 0x0907, 0x0908 ~ 0x090B, 0x090C ~ 0x090F,分别表示捕捉的第一个前导位到达port 1,2,3的时刻

0x0904 ~ 0x0907 value==0x54414372

0x0908 ~ 0x090B value==0

0x090C ~ 0x090F value==0

(void)ecx_FPRD(context->port, slaveh, ECT_REG_DCTIME1, sizeof(ht), &ht, EC_TIMEOUTRET);//0x0904context->slavelist[i].DCrtB = etohl(ht);(void)ecx_FPRD(context->port, slaveh, ECT_REG_DCTIME2, sizeof(ht), &ht, EC_TIMEOUTRET);//0x0908context->slavelist[i].DCrtC = etohl(ht);(void)ecx_FPRD(context->port, slaveh, ECT_REG_DCTIME3, sizeof(ht), &ht, EC_TIMEOUTRET);//0x090ccontext->slavelist[i].DCrtD = etohl(ht);

其实没太懂为啥经过了port 1???

EtherCAT主站SOEM —— 分布式时钟(Distributed Clock)抓包分析相关推荐

  1. EtherCAT主站SOEM函数详解---- ecx_readstate、ecx_writestate

    EtherCAT主站SOEM函数详解----状态读取函数 ecx_readstate ecx_writestate 在控制驱动器等从站中,经常需要只知道从站的状态,在SOEM开发的主站中,如何读取从站 ...

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

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

  3. ethercat主站soem开发板,stm32f407/stm32h7低成本主站方案,带台达伺服电机,ls伺服电机

    ethercat主站soem开发板,stm32f407/stm32h7低成本主站方案,带台达伺服电机,ls伺服电机,三洋伺服电机,汇川伺服电机,雷塞智能步进电机等支持ethercat的设备. 支持DC ...

  4. DNS抓包分析--wireshark

    DNS抓包分析–wireshark DNS-(Domain Name System,域名系统),是因特网上作为余名和IP地址相互映射的一个分布式数据库,能够使用户更加方便地访问互联网,而不是去记住能够 ...

  5. 用Wireshark抓包分析协议 计算机网络

    此篇博客记录使用Wireshark抓包分析协议. 目录 一.DNS 二.分析TCP握手过程 三.TLS报文 四.HTTP协议 五.SMTP 六.ARP 七.RTP 八.RTMP 一.DNS DNS是域 ...

  6. 如何抓包分析BLE 空口报文(GAP + GATT + LESC procedure)?

    文章目录 一.如何抓取BLE 空口报文? 二.BLE 通信报文是如何交互的? 2.1 GAP Discovery and Connection establishment procedures 2.2 ...

  7. 网络:抓包分析dns的原理

    DSN理论 DNS是什么 在互联网上有多达到上亿的设备,而这些设备之间互相联通网络,每一台主机都需要一个唯一的标识符(就像是我们每个人都有一张身份证),而这个标识符就是IP地址,由于IP地址是数字,不 ...

  8. 网络安全学习第10篇 - ping程序的实现,抓包分析ping数据包以及ping工具对于网络安全方面的威胁

    请结合附件:Ping的实现原理与ping.cpp的内容,编写一个程序,使其能够实现简单的ping的功能,即判断目标网站是否可以连接,然后通过Wireshark进行抓包分析其ICMP协议,指出哪个数据包 ...

  9. 华为OSPF抓包分析七种状态

    前言: OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(Auto ...

最新文章

  1. java-分支重载以及构造方法
  2. 1的阶乘在c语言里咋表示,C语言编程求阶乘1到10并分别显示在屏幕上 – 手机爱问...
  3. 计算机为什么启动二次才能打开,为什么电脑要2次重启才能启动显示器那
  4. linux下分析cel文件,详细解析Linux scp命令的应用
  5. java程序运行三步骤 理解编译
  6. 12.2 新特性:RMAN 自动恢复到 REDO 终点的步骤简化
  7. /proc/sys/net/ipv4/目录介绍
  8. 什么是JAVA内容仓库(Java Content Repository)(4完)
  9. ubuntu之路——day9.2 Covariate shift问题和Batch Norm的解决方案
  10. SpringBoot作mongodb批量更新
  11. unity 加载关卡_Unity手游实战:从0开始SLG——本地化篇(四)提取本地化元素
  12. 单点登录原理及实现方式
  13. 微信android支持版本,兼容安卓4.2.2版本安装哪个版本微信!微信支持版本是什么版本吗...
  14. N1 webpad刷机要点
  15. python hist函数_Python pandas.DataFrame.hist函数方法的使用
  16. 51单片机入门(3)点灯的进阶——跑马灯(通过阻塞延时实现)
  17. Interpreter(解释器)
  18. PHP微信固码免签系统源码+带监控APP和教程
  19. 三菱FX3UFX2NFX1N PLC 模拟器模拟通信功能
  20. php开发服务器电脑,如何在自己电脑搭web服务器开发环境

热门文章

  1. 吴恩达深度学习——读书笔记
  2. 使用ADXL375Z加速度传感器数据数据不对的处理方法
  3. 局域网与城域网 - 万兆以太网标准(10GBase)
  4. 电子电力技术学习笔记(1)——电力二极管
  5. uniappAndroid离线打包 小米审核不通过
  6. MySQL Transportable Tablespace
  7. 教你用C++ ChatRoom(CSocket)原理实现聊天室,附开源源码
  8. 快速实现渠道二维码生成与统计
  9. 关于Node.js后端架构的一点后知后觉
  10. [多图]华硕EeePC 900拆解图