自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 资源 (2)
  • 收藏
  • 关注

原创 倍福控制器搭建IgH环境

最近收到了倍福CX5230控制器,控制器上自带EBUS总线扩展的IO,使用的是CCAT网卡,在控制器上安装preempt-rt Linux系统,再安装IgH。运行控制程序,可以正常控制IO输出。IgH正常识别到了扩展的IO模块。

2023-11-22 14:10:43 458

原创 全志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 724 4

原创 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 336

原创 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 2939

原创 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 933

原创 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 1217 3

原创 EtherCAT设备协议详解五、Modular Device Profile

根据设备协议描述,每个slot对应一组PDO,实现周期数据的交换,还增加了对应的配置空间,实现对不同模块的数据配置。目前开源IgH并不支持ETG5001协议,正在开源基础上增加对协议的支持。一个从站对应多个插槽,插槽可随机插入不同型号的卡片IO,实现扩展功能。从总线上看是一个从站,实际上可以扩展多个卡片式IO模块。

2023-05-26 14:32:04 1390 2

原创 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 1194

原创 imx6ul 移植perf工具

perf是一款专业的性能分析工具,是Linux系统自带的一款性能分析工具,可以用来分析CPU、内存、磁盘等资源的使用情况。它与Linux内核紧密结合,可以充分利用Linux内核提供的各种性能分析机制,如性能计数器、tracepoint、kprobe等。使用perf可以分析系统性能瓶颈,定位应用程序的性能问题,优化代码等,因此是Linux系统管理员、开发人员和性能分析人员的重要工具之一。perf工具位于内核 open_kernel/tools/perf 目录下,直接编译会报错缺少相关库。

2023-04-06 15:06:58 507

原创 arm平台交叉编译rt-tests

如果要为ARM平台添加libnuma-dev库,需要在x86平台上进行交叉编译,生成ARM平台可用的库文件。

2023-04-04 14:52:25 807 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 1516

原创 EtherCAT设备协议详解三、EtherCAT CoE

只需要一个耦合器,后面可以接多个模块,在总线上看到的只有一个从站,需要读取对应的设备描述空间来获取耦合器上接的模块类型和个数。这种模块的设备比每个模块都是从站可以节约硬件成本。比如配置0x1700对象下面映射的数据,就需要通过sdo把0x6040、0x607a等写入到0x1700对象下。CoE 是 CANopen on EtherCAT, 在ethercat报文中封装CANopen协议。关于canopen怎么封装到ethercat报文中的可以参考下面文章。配置pdo的映射的数据就需要用到SDO。

2022-12-16 17:28:03 3167

原创 EtherCAT设备协议详解二、EtherCAT状态机及配置流程

设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(AL 状态代码寄存器)发出错误信号。设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因。设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因。safe-op状态主要把pdo中的数据设置的从站中,确认从站是否会报错。DC同步稳定,从站也没有报错就可以申请进入op状态。

2022-12-16 14:59:44 8931 9

原创 EtherCAT设备协议详解一、EtherCAT概述

• 国际范围内涵盖的开放技术标准(IEC61158,61784,61800和ISO 15745)• 用于控制自动化技术的以太网(EtherCAT) 是一种基于以太网的现场总线系统。后面介绍上图中的从站设备协议,图上内容很多,原图可以从ethercat官网获取。• 涉及从站和从站的设置节点采用物理连接的菊花链样式但在逻辑上按循环运行。• EtherCAT专注于精确、低抖动从节点间同步 (≤ 1 μs)• 每个从站“动态”处理消息数据当帧从一个节点传递到下一个节点时。– ETG拥有EtherCAT的权利。

2022-12-16 14:05:04 3869

原创 IgH详解十六、双主站

IgH支持双主站,只需要在配置文件中,配置双主站的MAC地址即可。启动主站后,可以看到两个主站。 IgH分别创建了EtherCAT0和EtherCAT1两个设备,分别对应双主站。 根据主站个数初始化各个主站的数据结构。网卡驱动中先获取到所有的网卡 网络驱动中会依次比较主站配置的mac地址和网卡的mac地址是否一致,如果一致就把网卡绑定当前主站。

2022-12-06 18:11:59 1574 8

原创 IgH详解十五、igh线缆冗余

线缆冗余是为了应对EtherCAT通信线缆断开的补救措施。通常环形拓扑结构就要用到线缆冗余。如果环线在一些点中断,仍然可以达到两个分支。 如果一个线缆断开,则在断开的线缆两端的帧将分别被处理。因此这两个帧均只包含输入数据的一部分。主站将它们结合起来,并通过所有输入数据整合成一个帧 IgH开启冗余需要在编译之前配置 --with-devices=2 表示两路网口。./configure --enable-generic --enable-8139too=no --with-devices=2同时配置两路ma

2022-12-06 17:29:14 1235

原创 IgH详解十四、igh添加总线链路状态监测功能

总线上连接两个清能德创S7伺服,先读取一次链路状态,然后拔掉伺服0和1之间的网线,然后插上网线。读取状态,可以看到两个伺服端口的错误计数有增加。在工业现场有可能因为复杂的现场环境导致ethercat网络链路出现异常。监测链路的异常是分析总线异常一个很重要的功能。EtherCAT从站芯片支持物理链路丢失计数和数据帧破坏计数。在igh tool加入linkstat命令,来读取分析相关寄存器。利用从站的错误计数功能实现链路状态监视功能。2、链路受到干扰有错包。

2022-11-28 13:59:05 747 2

原创 IgH详解十、EtherCAT DC(4)主站做参考时钟和从站作参考时钟性能对比

以主站为参考时钟效果如下,可以看到抖动的范围比较大,最大值受主站系统的实时性影响比较大,当主站实时性差的时候最大值会变大,档抖动范围不能收敛的实时从站就会报同步错误。以主站做参考时钟,主站经常会报did not sync after 警告,就是通过监视从站0x92c寄存器的值在一定时间后还不能达到一个稳定的范围。前面介绍过从站做参考时钟要比主站做参考时钟稳定,通过IgH主站和从站作参考时钟对比下两者的实际差异。通过实际的对比可以看到从站做参考时钟是比主站做参考时钟要稳定的。总线上接了两个清能德创的伺服。

2022-11-24 16:31:52 2453 18

原创 cyclictest生成结果统计图

cyclictest生成结果统计图

2022-11-24 14:25:48 1002

原创 IgH详解十三、igh支持 hot connect

ethercat hot connect

2022-11-13 16:48:11 1098 2

原创 IgH详解十二、IgH实现使用ENI文件配置从站(一)

IgH实现使用ENI文件配置从站

2022-07-05 21:00:00 3082 4

原创 IgH详解九、IgH PDO配置(2)

IgH配置pdo流程

2022-06-06 00:03:54 3435 31

原创 IgH详解十一、IgH(FSM)有限状态机

前面介绍过启动流程,下面介绍一下IgH的主要设计思想 FSM当驱动加载完成后就启动了Idle线程,idle线程就开始执行状态机函数idle线程会一直调用主站的fsm->state函数,在函数中对state函数指针赋值,从而改变fsm->state调用的函数。每当完成一个功能就把下一个功能的函数指针赋值给state,下次执行的就是新的功能函数了,执行完成后会赋值完成状态,通过判断就知道一个流程的完成。idle线程中还会判断...

2022-05-30 18:44:40 1802

原创 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 3353 17

原创 IgH详解十、EtherCAT DC(2)同步流程

DC同步流程在init阶段先计算传输延时、系统时间偏差 把计算的时间偏差和传输延迟写入各个从站 广播参考从站时钟若干次,进行时钟漂移补偿在preop状态设置从站的工作周期 设置从站启动触发sync的时间,周期的发信号给从站在safeop 、op状态一直广播参考从站的时钟进行动态的漂移补偿...

2022-05-20 16:30:00 2792 5

原创 IgH详解十、EtherCAT DC(1)理论

(Distributed Clocks) 分布式时钟分布式时钟相当于每个节点都有一个时钟,在同一时刻,触发所有节点做给定的动作,要达到同一时刻触发就要求大家的时钟保持一致,也就是同步。比如每个人都有手机,只要手机接入网络,就会进行时间同步,获得一致的时间,比如早上9点上班,网购的整点秒杀,如果我们的手机时间不同步,可能就上班迟到了,点开网页秒杀已经结束了。比如买了两个打印机,左边的1万,右边的9.9包邮,现在要在纸上打印一条斜线,左边的完全同步...

2022-05-20 16:20:43 3726 6

原创 IgH详解九、EtherCAT PDO原理(1)

过程数据对象 (PDO)过程数据对象(PDO)是EtherCAT 从站在每个周期内传输的过程数据,是应用程序期望循环更新或发送到从站的用户数据(比如每个周期下发伺服的位置)。因此,EtherCAT 主站在启动阶段对每个 EtherCAT 从站进行参数化,以定义要与该从站传输或从该从站传输的过程数据(以位/字节为单位的大小、源位置、传输类型)PDO的配置(PDO通过邮箱SDO配置,SDO如何下发数据见上一篇文章)寄存0x1c12 RxPDO 0x1c13 TxPDO下面以一次实际配置过程来

2022-05-07 18:24:43 7457 4

原创 IgH详解八、EtherCAT SDO原理

主站通过使用 SDO对对象字典进行读取/写入操作,完成对从站设备进行参数设置、状态监视等。从站SDO的读写是非实时的,所以需要多次访问来确保数据操作的正确性。如下图写入操作,主站把数据发送到从站,从站返回WC确保数据收到,经过几个周期后主站发起响应查询,看从站是否有正确的写入数据。从从站读取数据主站同样需要发起多次访问,以确保数据正确读取下面我们看下SDO是怎么封装到EtherCAT中的?邮箱协议从站的SM0,SM1同步管理做为邮箱通信使用,当有邮箱数据时会.

2022-04-27 20:44:20 8118 3

原创 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 5076 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 5955 3

原创 IgH详解七、ethercat实时网卡驱动

IgH支持两种模式的网络驱动一、generic 通用模式的网卡驱动这种模式下是通过TCPIP协议栈对上层提供的socket接口来实现的,这种模式下网络收发的实时性取决于TCPIP协议栈的处理效率,一般实时性都不好,优点是通用性好,板卡自带的驱动就可以使用,不需要修改。 二、实时网卡驱动 以e1000e为例来对比,在普通网卡驱动上需要实现的功能来达到好的实时性。1、在网卡probe过程中,把网卡驱动注册到etherc...

2021-09-26 16:44:53 7818 4

原创 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 6531 12

原创 IgH详解五、从站扫描流程

当我们启动主栈后可使用ethercat命令行工具查看从站的的相关信息,比如:ethercat slave0 0:0 PREOP + CoolDrive RC 1 0:1 PREOP + CoolDrive RC ...

2021-09-01 16:35:33 4325 10

原创 IgH详解四、数据报接收流程

IgH通过调用ecrt_master_receive接口接收数据报文。ec_device_poll接口调用的就是我们在实时网卡驱动中注册的ec_poll接口,以e1000为例在初始化网卡驱动的时候会调用ecdev接口给协议栈注册网卡的轮询接收接口。到这里也只是注册了接收接口,那又是怎么把报文传递给协议栈的呢?接收的数据报文是怎么处理的呢? 也是通过在网卡驱动中调用协议栈接收函数来实现的。在网卡驱动中调用了协议栈的ecdev_receive函数,可以看到sk...

2021-09-01 10:38:50 2070 5

原创 IgH详解三、数据报发送流程

数据发送通过调用ecrt_master_send接口来发送报文。红框内容说明:为什么有条件的插入主站状态机数据呢?其实是和主栈的idle和op线程有关,通过之前的介绍我们知道,主站启动时启动了idle线程,idle线程会主动的调用ecrt_master_send接口来发送报文但是当我们在应用程序中请求主站的时候,idle线程就退出了,转而启动了op线程继续执行主站状态机可以看到op线程没有调用send函数,写过IgH应用程序就应该知道,我们会在周期任务中周期的调用sen...

2021-08-30 23:26:58 3032

原创 IgH详解二、主栈启动流程(二)

继续上一篇, ec_master.ko加载后只是初始化了主栈的一些数据和状态,并未运行主栈,因为此时网络并未启动,主栈无法和从站通信。当我们加载实时网卡驱动时,此时建立了网络连接,就可以启动主栈来根据连接的从站做信息的同步,这里以e1000网卡为例:加载网卡驱动时会调用主栈ecdev_open函数,来启动主栈idle线程下面主要分析一下idle的运行流程我们只分析正常流程,报文的收发我们以后分析介绍,这里只介绍处理流程idle线程中运行主栈状态机,之前我们说...

2021-08-26 18:04:36 3088 12

原创 IgH详解二、主栈启动流程(一)

前面已经介绍过,主栈代码位于master/ 目录下,IgH主栈编出来的是ec_master.ko,所以是以KO的形式加载的,驱动的入口函数在module.c中,声明了驱动入口函数ec_init_module上面是加载驱动时可以传入的一些命令行参数IgH支持多主站和双网口设备冗余,目前我们只讨论单主站和单网卡情况主栈初始化首先创建了一个字符设备,作用是IgH上层应用程序是通过ioctl接口来调用主栈驱动程序接口的,创建/dev/EtherCAT0设备,上层应用程序可以通...

2021-08-25 19:36:00 4706 2

原创 IgH详解 一、概述

IgH源码地址:https://gitlab.com/etherlab.org/ethercatIgH是开源的EtherCAT主站协议栈,虽然功能上和从站兼容性性比不上商业协议栈,但完全能满足学习和普通场景的使用,公司也可以基于IgH作产品开发,基本能满足大部分使用场景。 本系列博客主要分为三部分1、介绍IgH主站ec_master运行流程; 2、介绍IgH对网卡驱动的实时性优化;3、IgH上层应用程序开发。 关于IgH在不同实时系统上安装,和实时系...

2021-08-24 20:04:12 13201 2

原创 EtherCAT 寻址模式详解

1、寻址模式寻址模式就是在EtherCAT报文的地址数据写入不同的数据和CMD是相关的模式 内容 描述 位置寻址 / 自增量寻址 位置 各从站位置递增,postion = 0 的从站被寻址 偏移地址 ESC内部寄存器或内存地址 节点寻址 / 固定地址寻址 地址 报文的站地址设置的站地址一致时,从站被寻址 偏移地址 ESC内部寄存器或内存地址 广播 位置 每个从站对位置加1(从站不使用该位置) 偏移地址...

2021-08-24 15:22:41 6126 5

原创 EtherCAT报文格式详解

1、EtherCAT报文组成从图中抓的包可以看出EtherCAT报文分为三部分(1)、以太网帧头 (2)、EtherCAT帧头 (3)、EtherCAT数据 说明:KUNBUS TAP是实时抓包工具加的时间戳信息,报文的FCS也在里面2、帧头解析(1)、EtherCAT是基于以太网的所以头部首先是以太网帧头,包含目的和源MAC地址,EtherCAT帧类型固定为 0x88A4(2)、EtherCAT帧头2字节,包含ECAT数据长度3、ECAT数据解析ECAT数据就是主...

2021-08-23 20:13:27 7812 9

Keil.STM32G4xx_DFP.1.1.0.rar

keil官网的开发包 Keil.STM32G4xx_DFP.1.1.0.pack,试用于STM32G4系列单片机

2019-09-18

6410移植Qt程序

将QT的应用程序移植到6410上面运行。亲自测试过了,移植成功!

2013-06-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除