EtherCAT主站SOEM —— 分布式时钟(Distributed Clock)抓包分析
函数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)抓包分析相关推荐
- EtherCAT主站SOEM函数详解---- ecx_readstate、ecx_writestate
EtherCAT主站SOEM函数详解----状态读取函数 ecx_readstate ecx_writestate 在控制驱动器等从站中,经常需要只知道从站的状态,在SOEM开发的主站中,如何读取从站 ...
- EtherCAT主站SOEM在Ubuntu上的移植
EtherCAT主站SOEM在Ubuntu上的移植 原文:https://blog.csdn.net/ethercat_i7/article/details/52794069?utm_medium=d ...
- ethercat主站soem开发板,stm32f407/stm32h7低成本主站方案,带台达伺服电机,ls伺服电机
ethercat主站soem开发板,stm32f407/stm32h7低成本主站方案,带台达伺服电机,ls伺服电机,三洋伺服电机,汇川伺服电机,雷塞智能步进电机等支持ethercat的设备. 支持DC ...
- DNS抓包分析--wireshark
DNS抓包分析–wireshark DNS-(Domain Name System,域名系统),是因特网上作为余名和IP地址相互映射的一个分布式数据库,能够使用户更加方便地访问互联网,而不是去记住能够 ...
- 用Wireshark抓包分析协议 计算机网络
此篇博客记录使用Wireshark抓包分析协议. 目录 一.DNS 二.分析TCP握手过程 三.TLS报文 四.HTTP协议 五.SMTP 六.ARP 七.RTP 八.RTMP 一.DNS DNS是域 ...
- 如何抓包分析BLE 空口报文(GAP + GATT + LESC procedure)?
文章目录 一.如何抓取BLE 空口报文? 二.BLE 通信报文是如何交互的? 2.1 GAP Discovery and Connection establishment procedures 2.2 ...
- 网络:抓包分析dns的原理
DSN理论 DNS是什么 在互联网上有多达到上亿的设备,而这些设备之间互相联通网络,每一台主机都需要一个唯一的标识符(就像是我们每个人都有一张身份证),而这个标识符就是IP地址,由于IP地址是数字,不 ...
- 网络安全学习第10篇 - ping程序的实现,抓包分析ping数据包以及ping工具对于网络安全方面的威胁
请结合附件:Ping的实现原理与ping.cpp的内容,编写一个程序,使其能够实现简单的ping的功能,即判断目标网站是否可以连接,然后通过Wireshark进行抓包分析其ICMP协议,指出哪个数据包 ...
- 华为OSPF抓包分析七种状态
前言: OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(Auto ...
最新文章
- java-分支重载以及构造方法
- 1的阶乘在c语言里咋表示,C语言编程求阶乘1到10并分别显示在屏幕上 – 手机爱问...
- 计算机为什么启动二次才能打开,为什么电脑要2次重启才能启动显示器那
- linux下分析cel文件,详细解析Linux scp命令的应用
- java程序运行三步骤 理解编译
- 12.2 新特性:RMAN 自动恢复到 REDO 终点的步骤简化
- /proc/sys/net/ipv4/目录介绍
- 什么是JAVA内容仓库(Java Content Repository)(4完)
- ubuntu之路——day9.2 Covariate shift问题和Batch Norm的解决方案
- SpringBoot作mongodb批量更新
- unity 加载关卡_Unity手游实战:从0开始SLG——本地化篇(四)提取本地化元素
- 单点登录原理及实现方式
- 微信android支持版本,兼容安卓4.2.2版本安装哪个版本微信!微信支持版本是什么版本吗...
- N1 webpad刷机要点
- python hist函数_Python pandas.DataFrame.hist函数方法的使用
- 51单片机入门(3)点灯的进阶——跑马灯(通过阻塞延时实现)
- Interpreter(解释器)
- PHP微信固码免签系统源码+带监控APP和教程
- 三菱FX3UFX2NFX1N PLC 模拟器模拟通信功能
- php开发服务器电脑,如何在自己电脑搭web服务器开发环境