EtherCAT
野猪力量
这个作者很懒,什么都没留下…
展开
-
KPA EtherCAT主站协议栈基准
转自http://www.hkaco.com/zdh/KPA/kpa-ethercat-master/benchmark.html 配置“简单”: 64Bytes帧, 1 LRD / 1 LWR, No DC, No Mailbox (EK1100 – EL1004 – EL2004) 配置“复杂”: 1满帧 (1514Bytes frame for PDO...转载 2019-05-17 14:25:45 · 1860 阅读 · 0 评论 -
收发EtherCAT帧——ecx_closenic
这个函数作用是关闭socket,入参是port结构体但是我们没有这个socket,关闭它?感觉之前写STM32F7摘掉TCP/IP,是在while(1)里发送ARP包,端口一直开着,所以并没用到。所以之后的test里也要改一下,是否不用关闭?int ecx_closenic(ecx_portt *port)//??? close() in linux sys/socket.h...原创 2019-04-19 16:02:13 · 509 阅读 · 0 评论 -
EtherCAT从站控制器EEPROM介绍
转自 https://blog.csdn.net/ethercat_i7/article/details/52778845ESC使用EEPROM来存储所需要的设备相关信息,称为从站信息接口SII(Slave Information Interface)。以Beckhoff 两通道模拟量输入模块EL3102为例,简单介绍 EEPROM中存储的各种信息的位置和含义。1、EEPROM内容一览...转载 2019-04-24 10:58:58 · 8905 阅读 · 1 评论 -
收发EtherCAT帧——ecx_setupnic函数
该函数的说明上写的是连接网卡与socket,实际上我们抛弃了socket,socket究竟是啥,百度之,发现本质上是一个封装了TCP/IP的接口,然而我们需要的是把TCP/IP从LWIP中摘出来,就像之前我做的,发送ARP包,绕过TCP/IP。我们需要的不是TCP/IP的接口,而是EtherCAT的接口,至于这个接口叫啥无所谓。那么就来看一下这个函数干了什么吧入参1:port结构体入参...原创 2019-04-19 15:52:09 · 888 阅读 · 0 评论 -
收发EtherCAT帧——recv
recv #include <sys/socket.h> ssize_t recv(int sockfd, void *buf, size_t len, int flags);入参1为创建的文件描述符fd;入参2为接收数据的缓冲区指针;入参3为接收数据的长度;入参4为表示信息,默认设置为0当应用程序调用recv接收数据的时候,recv函数会等待sockfd...原创 2019-04-19 13:36:03 · 728 阅读 · 0 评论 -
收发EtherCAT帧——ecx_srconfirm函数
ecx_srconfirm阻塞发送&接收,用于非过程帧。该函数将datagram填入帧,然后发送出去。之后会等待从站回应。如果没有超时,则重试该过程。入参1:port结构体入参2:帧的index序号入参3:超时时间,精确到us出参:workcounter or EC_NOFRAMEint ecx_srconfirm(ecx_portt *port, int idx...原创 2019-04-19 13:33:46 · 455 阅读 · 0 评论 -
收发EtherCAT帧——ecx_waitinframe函数
ecx_waitinframe阻塞接收。入参1:port结构体入参2:帧的index序号入参3:超时时间,精确到us出参:workcounter值int ecx_waitinframe(ecx_portt *port, int idx, int timeout)显示调用osal.c里的函数osal_timer_start,这个函数会取当前的绝对时间,然后再加上超时的时...原创 2019-04-19 10:56:51 · 414 阅读 · 0 评论 -
收发EtherCAT帧——ecx_waitinframe_red函数
ecx_waitinframe_red阻塞冗余接收。在非冗余模式下,该函数跳过secondary stack及冗余相关的函数。在冗余模式下,该函数等待两个帧(primary、secondary)都到达。该函数的结果会进入一个决策树,决策树决定下次的路由方式,以便保证下次可以正确接收。入参1:port结构体入参2:请求的帧index序号入参3:绝对超时时间出参:wor...原创 2019-04-19 10:47:07 · 390 阅读 · 0 评论 -
收发EtherCAT帧——ecx_inframe函数
ecx_inframe非阻塞接收。每个帧都存到对应index的buffer里。若某帧之前已经存到buffer里,则该函数不调用ec_recvpkt,而是直接从buffer index恢复。若请求的index不在buffer中,则该函数调用ec_recvpkt,来得到index对应的帧。一共有3个选项——1. 没有读帧,退出——2. 读帧,但不对应于请求的index,存入...原创 2019-04-19 09:22:24 · 1367 阅读 · 0 评论 -
EtherCAT主站SOEM源码解析----EEPROM访问
转自 https://blog.csdn.net/ethercat_i7/article/details/52796068SOEM(Simple Open EtherCAT Master)是一个开源的EtherCAT主站。本文介绍其中读取从站EEPROM信息的步骤。1、ESC EEPROM访问控制寄存器从站控制芯片ESC EEPROM控制寄存器如下:2、读EEPROM步骤 ...转载 2019-04-23 18:52:20 · 1396 阅读 · 0 评论 -
收发EtherCAT帧——ecx_getindex函数
ecx_getindex该函数找到新的index序号,并分配相应的rx buffer,返回值为新的index序号。利用while从1到16遍历新的index序号,如果rx buffer状态非Empty的话,就继续看下一个index对应的rx buffer,如果rx buffer状态为空的话,则跳出while,将rx buffer状态改为Allocated, but not filled...原创 2019-04-19 16:20:54 · 596 阅读 · 0 评论 -
EtherCAT主站SOEM源码解析----IOmap
转自 https://blog.csdn.net/ethercat_i7/article/details/52837888SOEM通过函数ec_config_map(&IOmap)完成逻辑地址和物理地址的映射,应用程序需要定义一个数组IOmap,例如:char IOmap[4096];完成映射后,应用程序就可以通过读写数组IOmap[]来完成与从站的数据交换。1、映射关系S...转载 2019-04-24 13:47:07 · 2120 阅读 · 0 评论 -
SOEM主站simple_test之ec_send_processdata
ec_send_processdata() ——ec_send_processdata_group() —— ecx_send_processdata_group() ——ecx_main_send_processdata()完整代码:/** Transmit processdata to slaves. * Uses LRW, or LRD/LWR if LRW is not...原创 2019-05-06 17:35:48 · 2835 阅读 · 1 评论 -
Beckhoff EL2008,8 通道数字量输出端子模块
转自 http://www.beckhoff.com.cn/cn/default.htm?ethercat/el2008.htm转载 2019-04-25 16:06:26 · 2956 阅读 · 0 评论 -
开源Ethercat主站 SOEM和IgH的比较
转自 https://blog.csdn.net/x356982611/article/details/74626315简介EtherCAT的主站开发是基于EtherCAT机器人控制系统的开发中非常重要的环节。目前常见开源的主站代码为的RT-LAB开发的SOEM (Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® M...转载 2019-04-25 13:33:31 · 871 阅读 · 0 评论 -
EtherCAT主站SOEM —— 分布式时钟(Distributed Clock)抓包分析
函数ecx_configdc的作用是测量传输时延(仅限当前slave不是第一个slave时,才计算时延)1. 只连接一个从站时,ESC为LAN9252芯片。(不计算propagation delay,只计算offset)LAN9252为3个port,跟下图有可能不一样。首先写value==0x00000000至0x0900 ~0x0903,表示重置slave 1捕捉的数据帧第一...原创 2019-04-25 11:13:38 · 3215 阅读 · 3 评论 -
EtherCAT主站SOEM源码解析----分布时钟DC
转自 https://blog.csdn.net/ethercat_i7/article/details/52858758?locationNum=5&fps=1#commentBox分布时钟(DC,Dsitributed Clock)可以使所有EtherCAT设备使用相同的系统时间,从而控制各设备任务的同步执行。1、DC从站支持分布式时钟的从站称为DC从站,同步原理如下...转载 2019-04-25 09:52:15 · 1374 阅读 · 0 评论 -
(笔记)使用ET2000和Wireshak分析Ethercat主站的实时性
做这个实验(https://blog.csdn.net/wofreeo/article/details/89450713)时的备忘笔记。1. Wireshark -> 分析 ->启用的协议对话框,勾选esl_eth,目的是可以让ET2000 Probe给EtherCAT包打上时间戳。2.在Wireshark的filter里输入类似于(frame.number>=657...原创 2019-04-29 17:10:42 · 2831 阅读 · 4 评论 -
倍福虚拟学院
倍福虚拟学院 http://tr.beckhoff.com.cn/转载 2019-04-20 15:01:14 · 5452 阅读 · 0 评论 -
BECKHOFF EK1100 EtherCAT coupler(耦合器)
转自 http://c.gongkong.com/PhoneVersion/ProductDetail?pId=114315https://www.beckhoff.com/english.asp?ethercat/ek1100.htm?id=1983920606转载 2019-04-20 12:31:45 · 6339 阅读 · 0 评论 -
LAN9252芯片介绍
MicrochipTechnologyInc.(美国微芯科技公司)今日宣布推出集成了两个10/100PHY的分立EtherCAT®从属控制器LAN9252。这款高度集成的器件配有两个10/100以太网收发器,同时支持光纤和铜线,并具备电缆诊断功能。LAN9252支持传统的主机总线和SPI/SQI™通信以及独立的数字I/O接口,令系统设计人员在执行实时EtherCAT通信标准时可以从多种单片机型号中...转载 2019-04-20 10:36:33 · 16262 阅读 · 0 评论 -
Wireshark官方EtherCAT协议包示例
不想抓包时,可以通过这个示例来学习EtherCAT协议Description:Example traffic ofEthercat. Capture shows the boot up of an network with Beckhoff 1100, 1014, 2004, 3102 and 4132 modules.网址https://wiki.wireshark.org/Sam...原创 2019-04-23 18:16:12 · 2588 阅读 · 0 评论 -
收发EtherCAT帧——ecx_recvpkt
ecx_recvpktstatic int ecx_recvpkt(ecx_portt *port, int stacknumber)非阻塞读socket,将frame放入临时buffer入参1为port结构体;入参2为stack号码,字面意思是0为primary stack,1为secondary stack,我猜测是0代表非冗余端口,1代表冗余端口 /** temp...原创 2019-04-18 19:42:20 · 456 阅读 · 0 评论 -
EtherCAT主站SOEM源码解析----Raw Socket
转自 https://blog.csdn.net/ethercat_i7/article/details/52847876SOEM使用Raw Socket收发EtherCAT帧,通过系统调用bind、send和recv实现EtherCAT通信。1、创建Socket初始化函数ec_init(ifname)最终会调用/oshw/linux/nicdrv.c下的以下这个函数完成绑定网卡和创建...转载 2019-04-18 14:14:09 · 1760 阅读 · 0 评论 -
EtherCAT主站SOEM在Ubuntu上的移植
转自 https://blog.csdn.net/ethercat_i7/article/details/52794069写的不错。转载 2019-04-10 17:09:45 · 1010 阅读 · 0 评论 -
编译SOEM(Simle Open EtherCAT Master)-windows篇
转自https://blog.csdn.net/x356982611/article/details/74330511写的不错。转载 2019-04-10 17:08:25 · 1140 阅读 · 0 评论 -
实时工业以太网EtherCAT高速发展背后
摘自 https://www.sohu.com/a/217100124_4881762017年,是实时工业以太网EtherCAT技术诞生的第14年,也是EtherCAT进入中国的十周年。2017年11月15日, 由EtherCAT技术协会(ETG )举办的“EtherCAT中国路演北京站”活动落下帷幕,作为今年的最后一场路演,也是压轴路演,会议吸引了来自工业自动化领域的100余名专家、企业...转载 2018-11-06 16:28:22 · 2637 阅读 · 0 评论 -
EtherCAT从站协议栈代码笔记之cia402appl.c
首先解释一下CiA,CiA是一个组织,CAN in Automation,主要工作是推广CANopen协议。CANopen大概是这样的:CANopen四问 http://www.gongkong.com/article/201412/55783.html1. CANopen的起源,CANopen从何而来? 德国Bosch公司于1983年研发CAN协议,用于汽车传动系统的网络通讯。之后...原创 2018-09-05 16:31:42 · 12609 阅读 · 6 评论 -
EtherCAT从站协议栈代码笔记之diag.c
上来就有个条件编译选项#if DIAGNOSIS_SUPPORTED,查看定义发现需要跑EtherCAT从站协议栈的平台支持动态内存分配,虽然好像Cortex-M3也支持动态内存分配,但是这个条件编译选项没有开,因此从第32行到第592行都可以注销掉,这样整个diag.c都可以从项目中移除。...原创 2018-09-05 15:34:32 · 1028 阅读 · 0 评论 -
EtherCAT从站协议栈代码笔记之sampleappl.c
这个源文件实际上包含该项目的入口函数main函数。那么如何找到入口函数呢?可以进入debug的simulator模式,选中run to main(),当执行完启动文件startup_cm3.s后就进入了main函数(注意在main函数之前还进入了SystemInit函数),如下图所示: 这个main函数主要架构如下:int main(void) { HW_Init(...原创 2018-09-05 19:00:06 · 3571 阅读 · 0 评论 -
EtherCAT从站协议栈代码笔记之el9800appl.c
条件编译选项,#if EL9800_APPLICATION,从第34行一直到595行, 这个条件编译是当使用EL9800板子才用的,由于我们不用EL9800,因此这些都可以注释掉。整个el9800appl.c也可以从项目列表中移除。...原创 2018-09-05 14:10:19 · 2367 阅读 · 0 评论 -
EtherCAT从站协议栈代码笔记之testappl.c
上来就有一个条件编译选项,#if TEST_APPLICATION,从第49行一直到1857行,按F12或右键转至定义处,发现是这样的: 如果创建用户自己的应用,则不需要定义这个宏,也就是说这个宏是为了测试一些主站的实现或者是从站的堆。因此这个testappl.c里的全部代码都可以注释掉。...原创 2018-09-05 13:48:11 · 769 阅读 · 0 评论 -
EtherCAT从站协议栈代码笔记之ecat_def.h
ecat_def.h1.Slave Sample Code Configuration Defines// 对各种支持的硬件的条件编译选项,当移植到某一特定硬件平台时,可以将没有用到的注释掉。// EtherCAT协议栈自身的一些功能的开启与关闭,比如COE,FOE等等。2.Compiler Defines//对于数据结构还有C底层的一些函数的重命名3.Applicati...原创 2018-09-05 13:39:00 · 2234 阅读 · 0 评论 -
编译SOEM on Windows
参考了 https://blog.csdn.net/x356982611/article/details/74330511从 http://openethercatsociety.github.io/ 下载SOEM 1.3.1 源代码下载wincap https://www.winpcap.org 并安装,我安装的时候提示计算机里已经安了高版本的wincap了,所以就不用装了。安装 v...原创 2019-04-11 09:21:07 · 3124 阅读 · 0 评论 -
STM32F4+DP83848以太网通信指南系列
转自 https://blog.csdn.net/m0_37777700/article/details/83620671DP83848 Ethernet Boardhttp://www.waveshare.net/wiki/DP83848_Ethernet_BoardSTM32F4+DP83848以太网通信指南系列(一):知识储备 https://blog.csdn.net/m0_37...转载 2019-04-11 10:03:27 · 4039 阅读 · 1 评论 -
SOEM代码Slaveinfo Demo分析2
上回写到winpcap只是在Windows上,在STM32F746上裸跑或者带系统跑时并没有, /* we use pcap socket to send RAW packets in windows user mode*/ *psock = pcap_open(ifname, 65536, PCAP_OPENFLAG_PROMISCUOUS | ...原创 2019-04-16 11:11:35 · 1056 阅读 · 0 评论 -
SOEM代码Slaveinfo Demo分析
分析Windows版本的Demo,以便之后移植到STM32F746上。1. slaveinfo.exe入口函数为main,需要一个以太网PHY的网卡名,网卡名在Windows下是\Device\NPF_{XXXXXXX...XXXXXXXXX},在STM32F746下如何表示?2. 首先需要调用ec_init,初始化网卡,绑定socket/* initialise SOEM, b...原创 2019-04-15 10:20:15 · 3089 阅读 · 1 评论 -
ATMEL (爱特梅尔)公司EEPROM命名规则
看了一下ATMEL公司出产的EEPROM的丝印,确实命名很乱,根据丝印根本看不出是啥型号的EEPROM芯片。后来才发现命名规则,需要看第二行,16开头就是16Kbit,32开头就是32Kbit。来判断一下这两个EEPROM都是什么型号 左边是AT24C16,右边是AT24C32,分别是16Kbit和32Kbit。数据手册下载可以参考这个网址 https://www.a...原创 2019-04-26 14:04:54 · 9979 阅读 · 2 评论 -
使用ET2000和Wireshak分析Ethercat主站的实时性
转自 https://blog.csdn.net/ethercat_i7/article/details/77479316在DC同步模式下,Ethercat主站能否在规定的时间内发送过程数据帧,是影响整个系统性能的关键因素,本文介绍如何使用Wireshark抓取总线上的Ethercat数据包,并将主站发过程数据帧的时间间隔以曲线的形式显示出来。1、连接ET20002、启用ESL协议...转载 2019-04-22 14:16:54 · 1404 阅读 · 3 评论 -
EtherCAT网络监控的两种方法(交换机/网络探测仪+Wireshark)
1. 使用带网管功能的交换机,比如TP-LINK TL-SG20052. 使用Beckhoff官方的Ethernet Probe,比如ET2000http://www.beckhoff.com.cn/cn/press/2007/pr200713.htmhttps://download.beckhoff.com/download/software/TwinCAT/TwinCAT2/Inf...原创 2019-04-22 11:11:58 · 4397 阅读 · 1 评论