- 博客(111)
- 资源 (2)
- 收藏
- 关注
原创 IgH使用倍福EL6751 CANOpen master 控制伺服
EL6751 | EtherCAT 端子模块,1 通道通信接口,CANopen,主站/从站在一个EtherCAT端子模块网络中,通过该端子模块可以集成任何 CANopen 设备并且可将该端子模块用作为主站(EL6751)或从站(EL6751-0010)。另外,它也可以发送或接收一般性 CAN 消息,而无需利用应用程序中的 CAN 帧。支持所有 CANopen PDO 通讯类型:事件驱动,时间驱动(使用事件定时器),同步,轮询。与 PC 控制器的任务循环同步。
2025-03-14 16:29:20
302
原创 IgH详解十八、支持 AoE 读写
AoE 协议用于访问底层现场总线的从站设备的对象字典,例如,用于连接到 EtherCAT-CANopen 网关设备的 CAN 应用协议从站。EL6751是倍福的canopenmaster主站io,canopen从站的pdo数据可以映射的pdo中,但是要访问从站的对象字典要通过AoE来实现读写,当前IgH不支持AoE,在IgH上实现AoE的读写功能。通过抓包,可以看到AoE成功的写数据到EL6751从站中,查询返回无错误。AoE的读写报文头可参考ETG1020规范文档有详细说明。参考规范 ETG.1020。
2025-02-28 17:01:06
504
原创 2.1 链路层发现协议(LLDP)
每个支持LLDP的设备会定期向邻居设备发送LLDP帧(也称为LLDPDU,Link Layer Discovery Protocol Data Unit)。LLDP帧包含设备的详细信息,如设备名称、端口信息、VLAN、IP地址、系统功能等。,链路层发现协议)是一种用于网络设备的链路层协议,用于在局域网(LAN)中自动发现和通告设备的信息。MAC地址固定:01:80:c2:00:00:0e PN主从站、启动后发送本设备的设备信息。:设备支持的功能(如路由器、交换机、桥接等)。:端口的VLAN信息。
2025-02-24 19:42:01
346
原创 二、Profinet常用的通信协议
Profinet发现和配置协议(PN-DCP):IO-Supervisor根据IO-Controller的硬件配置为连接分配一个参考,并给出具体的IP地址,这个阶段与ARP一起完成。Profinet输入输出提供商状态(PNIO-PS):类似于PNIO,其中服务状态被添加到交换中,这对于IO-控制器和IO-设备之间的循环实时和等时实时数据包来说是可选的。Profinet输入输出(PNIO):是使用Profinet-IO版本2或3在IO控制器和IO设备之间发送循环实时和同步实时数据包的应用。
2025-02-24 15:44:21
418
原创 一、Profinet:工业自动化的强大通信协议
Profinet 是由组织开发的工业通信协议,基于以太网技术,专为满足工业自动化中的实时通信需求而设计。它不仅是传统现场总线(如 PROFIBUS)的升级,更是一个面向未来的开放式标准,支持从传感器到控制系统的无缝集成。Profinet 作为一种高效、灵活且可靠的工业通信协议,已经成为工业自动化领域的重要支柱。它不仅能够满足当前工业生产的实时性和可靠性需求,还为未来的智能化制造奠定了坚实基础。无论是制造业、过程自动化还是物流领域,Profinet 都展现出了强大的适应性和扩展性。
2025-02-24 10:07:44
994
原创 倍福控制器搭建IgH环境
最近收到了倍福CX5230控制器,控制器上自带EBUS总线扩展的IO,使用的是CCAT网卡,在控制器上安装preempt-rt Linux系统,再安装IgH。运行控制程序,可以正常控制IO输出。IgH正常识别到了扩展的IO模块。
2023-11-22 14:10:43
1065
原创 全志A40i PRREMPT-RT Linux平台搭建IgH环境
编译出 ec_master.ko ec_sunxi.ko, 不过这里不会使用ec_generic.ko驱动文件,这个通用的驱动文件是在TCP/IP协议栈接口之上进行调用的,所以会走TCP/IP协议栈,会影响实时性。下面优化网卡驱动,会在网卡驱动上直接支持IgH接口。全志A40i上有gmac和emac,其中emac是使用队列的方式,而非DMA方式发送报文,队列在报文发送多于2包的时候存在阻塞情况,所以这里我们选择使用gmac优化做实时网卡驱动。再加载ec_sunxi gmac的实时网卡驱动。
2023-10-19 16:21:07
1162
5
原创 ubuntu 16.04 阿里软件源
/etc/apt/source.listdeb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restric
2023-08-03 10:16:14
581
原创 Linuxcnc-ethercat从入门到放弃(1)、环境搭建
可以直接下载安装好linuxcnc的实时debian系统,直接刻盘安装就可以了。linuxcnc-ethercat单轴_哔哩哔哩_bilibili。配置文件放在linuxcnc/configs/sim.axis下。配置完成后可以启动linuxcnc软件,选择sd710启动。安装cia402,控制ethercat伺服需要用到。安装IgH主站,网上有很多教程可供参考。安装linuxcnc-ethercat。当前release版本2.8.4。项目开源网站 LinuxCNC。
2023-07-28 13:50:17
4805
原创 IgH详解十七、支持(module)模块化IO
关于模块化IO的规范可参考 ETG5001_1_V0i10i0_S_D_MDP_GeneralSpec 描述。根据之前的IgH支持ENI功能,使用相关工具生成eni文件,根据eni文件配置参数进行配置,实现伺服的控制。模块化IO在总线上是一个从站 ,有耦合器,耦合器后面可以接多个卡片式IO,目前很多IO厂家都有相关产品。查找到PDO映射的地址。
2023-06-15 15:30:48
1698
原创 IgH详解十二、IgH实现使用ENI文件配置从站(二)
实现eni数据解析,根据ETG2100_V1i0i1_S_R_ENISpec规范对eni的描述,在程序运行时,解析出eni数据。通过eni解析实现了eni配置参数自动配置到从站,增强了IgH的兼容性,解决不同厂家自带参数差异导致的IgH的兼容问题。把解析出的数据封装成IgH需要的格式,配置到从站中。ENI文件可借助TwinCAT生成。解析出的eni数据log。
2023-06-15 14:50:26
2343
17
原创 EtherCAT设备协议详解五、Modular Device Profile
根据设备协议描述,每个slot对应一组PDO,实现周期数据的交换,还增加了对应的配置空间,实现对不同模块的数据配置。目前开源IgH并不支持ETG5001协议,正在开源基础上增加对协议的支持。一个从站对应多个插槽,插槽可随机插入不同型号的卡片IO,实现扩展功能。从总线上看是一个从站,实际上可以扩展多个卡片式IO模块。
2023-05-26 14:32:04
3088
3
原创 TwinCAT ENI 数据详解
Inputs 对应cmd 10,可以看到命令偏移是84byte再加上10字节的cmd header = 94。第一条命令起始偏移16,第一条命令长度可根据ECAT CMD格式计算出来 = 10 + Data + 2。ProcessImage中的752也是实际数据的bit的偏移量。通过 ECAT报文格式我们知道,报文头有16字节,所以第一个命令在报文中的偏移位置是16。Data是4字节所以 第一条命令长度 = 10 + 4 +2 = 16。
2023-05-24 11:35:21
1896
原创 imx6ul 移植perf工具
perf是一款专业的性能分析工具,是Linux系统自带的一款性能分析工具,可以用来分析CPU、内存、磁盘等资源的使用情况。它与Linux内核紧密结合,可以充分利用Linux内核提供的各种性能分析机制,如性能计数器、tracepoint、kprobe等。使用perf可以分析系统性能瓶颈,定位应用程序的性能问题,优化代码等,因此是Linux系统管理员、开发人员和性能分析人员的重要工具之一。perf工具位于内核 open_kernel/tools/perf 目录下,直接编译会报错缺少相关库。
2023-04-06 15:06:58
633
原创 arm平台交叉编译rt-tests
如果要为ARM平台添加libnuma-dev库,需要在x86平台上进行交叉编译,生成ARM平台可用的库文件。
2023-04-04 14:52:25
1198
1
原创 EtherCAT设备协议详解四、EtherCAT 从站SII
0x1a00 7个entry 0x6041 0x6064 0x6077 0x6061 0x5fff 0x603f 0x60f4。规范参考 ETG2010_S_R_v1i0i0_EtherCATSIISpecification.pdf。0x001e 是General 类型 0x0010 * 2 = 32字节。下面是EEPROM空间分配图(2个字节为单位存储的)Nameid = 0x06 是 FreeRUN。根据字符串的结构描述可以解析出各个字符串。可以从图上解析出相关信息。0x003C 是DC。
2023-03-28 17:02:29
2331
2
原创 EtherCAT设备协议详解三、EtherCAT CoE
只需要一个耦合器,后面可以接多个模块,在总线上看到的只有一个从站,需要读取对应的设备描述空间来获取耦合器上接的模块类型和个数。这种模块的设备比每个模块都是从站可以节约硬件成本。比如配置0x1700对象下面映射的数据,就需要通过sdo把0x6040、0x607a等写入到0x1700对象下。CoE 是 CANopen on EtherCAT, 在ethercat报文中封装CANopen协议。关于canopen怎么封装到ethercat报文中的可以参考下面文章。配置pdo的映射的数据就需要用到SDO。
2022-12-16 17:28:03
4567
原创 EtherCAT设备协议详解二、EtherCAT状态机及配置流程
设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(AL 状态代码寄存器)发出错误信号。设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因。设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因。safe-op状态主要把pdo中的数据设置的从站中,确认从站是否会报错。DC同步稳定,从站也没有报错就可以申请进入op状态。
2022-12-16 14:59:44
15213
19
原创 EtherCAT设备协议详解一、EtherCAT概述
• 国际范围内涵盖的开放技术标准(IEC61158,61784,61800和ISO 15745)• 用于控制自动化技术的以太网(EtherCAT) 是一种基于以太网的现场总线系统。后面介绍上图中的从站设备协议,图上内容很多,原图可以从ethercat官网获取。• 涉及从站和从站的设置节点采用物理连接的菊花链样式但在逻辑上按循环运行。• EtherCAT专注于精确、低抖动从节点间同步 (≤ 1 μs)• 每个从站“动态”处理消息数据当帧从一个节点传递到下一个节点时。– ETG拥有EtherCAT的权利。
2022-12-16 14:05:04
5439
原创 IgH详解十六、双主站
IgH支持双主站,只需要在配置文件中,配置双主站的MAC地址即可。启动主站后,可以看到两个主站。 IgH分别创建了EtherCAT0和EtherCAT1两个设备,分别对应双主站。 根据主站个数初始化各个主站的数据结构。网卡驱动中先获取到所有的网卡 网络驱动中会依次比较主站配置的mac地址和网卡的mac地址是否一致,如果一致就把网卡绑定当前主站。
2022-12-06 18:11:59
2174
8
原创 IgH详解十五、igh线缆冗余
线缆冗余是为了应对EtherCAT通信线缆断开的补救措施。通常环形拓扑结构就要用到线缆冗余。如果环线在一些点中断,仍然可以达到两个分支。 如果一个线缆断开,则在断开的线缆两端的帧将分别被处理。因此这两个帧均只包含输入数据的一部分。主站将它们结合起来,并通过所有输入数据整合成一个帧 IgH开启冗余需要在编译之前配置 --with-devices=2 表示两路网口。./configure --enable-generic --enable-8139too=no --with-devices=2同时配置两路ma
2022-12-06 17:29:14
1740
2
原创 IgH详解十四、igh添加总线链路状态监测功能
总线上连接两个清能德创S7伺服,先读取一次链路状态,然后拔掉伺服0和1之间的网线,然后插上网线。读取状态,可以看到两个伺服端口的错误计数有增加。在工业现场有可能因为复杂的现场环境导致ethercat网络链路出现异常。监测链路的异常是分析总线异常一个很重要的功能。EtherCAT从站芯片支持物理链路丢失计数和数据帧破坏计数。在igh tool加入linkstat命令,来读取分析相关寄存器。利用从站的错误计数功能实现链路状态监视功能。2、链路受到干扰有错包。
2022-11-28 13:59:05
1065
9
原创 IgH详解十、EtherCAT DC(4)主站做参考时钟和从站作参考时钟性能对比
以主站为参考时钟效果如下,可以看到抖动的范围比较大,最大值受主站系统的实时性影响比较大,当主站实时性差的时候最大值会变大,档抖动范围不能收敛的实时从站就会报同步错误。以主站做参考时钟,主站经常会报did not sync after 警告,就是通过监视从站0x92c寄存器的值在一定时间后还不能达到一个稳定的范围。前面介绍过从站做参考时钟要比主站做参考时钟稳定,通过IgH主站和从站作参考时钟对比下两者的实际差异。通过实际的对比可以看到从站做参考时钟是比主站做参考时钟要稳定的。总线上接了两个清能德创的伺服。
2022-11-24 16:31:52
4187
26
原创 IgH详解十一、IgH(FSM)有限状态机
前面介绍过启动流程,下面介绍一下IgH的主要设计思想 FSM当驱动加载完成后就启动了Idle线程,idle线程就开始执行状态机函数idle线程会一直调用主站的fsm->state函数,在函数中对state函数指针赋值,从而改变fsm->state调用的函数。每当完成一个功能就把下一个功能的函数指针赋值给state,下次执行的就是新的功能函数了,执行完成后会赋值完成状态,通过判断就知道一个流程的完成。idle线程中还会判断...
2022-05-30 18:44:40
2284
2
原创 IgH详解十、EtherCAT DC(3)IgH实现
IgH DC计算IgH在主站启动后,等待从站状态机扫描完从站后,就开始计算传输延时。 ec_master_attach_slave_configs //主站绑定从站配置信息通过前面的分析我们知道,需要先选择一个从站作为参考时钟,根据总线的拓扑结构来计算各从站的传输延时。ec_master_find_dc_ref_clock // 没有指定参考从站就把第一个带DC的从站作为参考时钟同时初始化了时钟漂移补偿用的数据报文ec_datagram_fpwr...
2022-05-20 16:40:17
4752
20
原创 IgH详解十、EtherCAT DC(2)同步流程
DC同步流程在init阶段先计算传输延时、系统时间偏差 把计算的时间偏差和传输延迟写入各个从站 广播参考从站时钟若干次,进行时钟漂移补偿在preop状态设置从站的工作周期 设置从站启动触发sync的时间,周期的发信号给从站在safeop 、op状态一直广播参考从站的时钟进行动态的漂移补偿...
2022-05-20 16:30:00
3929
8
原创 IgH详解十、EtherCAT DC(1)理论
(Distributed Clocks) 分布式时钟分布式时钟相当于每个节点都有一个时钟,在同一时刻,触发所有节点做给定的动作,要达到同一时刻触发就要求大家的时钟保持一致,也就是同步。比如每个人都有手机,只要手机接入网络,就会进行时间同步,获得一致的时间,比如早上9点上班,网购的整点秒杀,如果我们的手机时间不同步,可能就上班迟到了,点开网页秒杀已经结束了。比如买了两个打印机,左边的1万,右边的9.9包邮,现在要在纸上打印一条斜线,左边的完全同步...
2022-05-20 16:20:43
5379
8
原创 IgH详解九、EtherCAT PDO原理(1)
过程数据对象 (PDO)过程数据对象(PDO)是EtherCAT 从站在每个周期内传输的过程数据,是应用程序期望循环更新或发送到从站的用户数据(比如每个周期下发伺服的位置)。因此,EtherCAT 主站在启动阶段对每个 EtherCAT 从站进行参数化,以定义要与该从站传输或从该从站传输的过程数据(以位/字节为单位的大小、源位置、传输类型)PDO的配置(PDO通过邮箱SDO配置,SDO如何下发数据见上一篇文章)寄存0x1c12 RxPDO 0x1c13 TxPDO下面以一次实际配置过程来
2022-05-07 18:24:43
11144
5
原创 IgH详解八、EtherCAT SDO原理
主站通过使用 SDO对对象字典进行读取/写入操作,完成对从站设备进行参数设置、状态监视等。从站SDO的读写是非实时的,所以需要多次访问来确保数据操作的正确性。如下图写入操作,主站把数据发送到从站,从站返回WC确保数据收到,经过几个周期后主站发起响应查询,看从站是否有正确的写入数据。从从站读取数据主站同样需要发起多次访问,以确保数据正确读取下面我们看下SDO是怎么封装到EtherCAT中的?邮箱协议从站的SM0,SM1同步管理做为邮箱通信使用,当有邮箱数据时会.
2022-04-27 20:44:20
11323
5
原创 raspberry pi RT-Linux平台搭建IgH环境
1、编译安装内核 参考Raspberry Pi官方文档选择相应的内核版本进行编译安装,这里不多介绍Raspberry Pi Documentation - The Linux kernelThe official documentation for Raspberry Pi computers and microcontrollershttps://www.raspberrypi.com/documentation/computers/linux_kernel.html2、编译Ig...
2022-03-30 14:31:38
5499
14
原创 TCP CheckSum 计算
TCP校验和覆盖TCP首部和TCP数据,还要加上一个12字节的伪首部。计算时先把TCP报头中的校验和字段置为0计算方法 把伪首部、TCP报头、TCP数据分为16位的字,如果总长度为奇数个字节,则在最后增添一个位都为0的字节。累加所有的16位字。最后结果如果有进位,把高16位移到低16位和低16位进行相加,直到高16位都为0,最后,对计算结果取反,作为TCP的校验和。上图计算示例:伪首部源目的ip地址 : a9fe 5205 a9fe 52...
2021-11-09 16:05:39
7398
3
原创 IgH详解七、ethercat实时网卡驱动
IgH支持两种模式的网络驱动一、generic 通用模式的网卡驱动这种模式下是通过TCPIP协议栈对上层提供的socket接口来实现的,这种模式下网络收发的实时性取决于TCPIP协议栈的处理效率,一般实时性都不好,优点是通用性好,板卡自带的驱动就可以使用,不需要修改。 二、实时网卡驱动 以e1000e为例来对比,在普通网卡驱动上需要实现的功能来达到好的实时性。1、在网卡probe过程中,把网卡驱动注册到etherc...
2021-09-26 16:44:53
9833
5
原创 IgH详解六、IgH命令行工具使用
当加载好主栈驱动程序后,可以通过命令行工具查看主栈和从站的相关信息。下面接收命令行的具体功能1、ethercat alias [ OPTIONS ] < ALIAS >*--alias -a <alias>:从站的别名;*--position -p <pos>:从站的绝对位置;*--force -f:所有从站;配置从站别名sudo ethercat alias --p 0 0x10012、ethercat c...
2021-09-24 14:51:59
8926
14
原创 IgH详解五、从站扫描流程
当我们启动主栈后可使用ethercat命令行工具查看从站的的相关信息,比如:ethercat slave0 0:0 PREOP + CoolDrive RC 1 0:1 PREOP + CoolDrive RC ...
2021-09-01 16:35:33
5697
11
原创 IgH详解四、数据报接收流程
IgH通过调用ecrt_master_receive接口接收数据报文。ec_device_poll接口调用的就是我们在实时网卡驱动中注册的ec_poll接口,以e1000为例在初始化网卡驱动的时候会调用ecdev接口给协议栈注册网卡的轮询接收接口。到这里也只是注册了接收接口,那又是怎么把报文传递给协议栈的呢?接收的数据报文是怎么处理的呢? 也是通过在网卡驱动中调用协议栈接收函数来实现的。在网卡驱动中调用了协议栈的ecdev_receive函数,可以看到sk...
2021-09-01 10:38:50
2649
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人