imtoken链接地址|ethercat 修改 pdo

作者: imtoken链接地址
2024-03-14 17:14:22

IgH详解九、EtherCAT PDO原理(1)-CSDN博客

>

IgH详解九、EtherCAT PDO原理(1)-CSDN博客

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

EtherCat技术研究

已于 2022-06-05 20:20:34 修改

阅读量6.8k

收藏

33

点赞数

4

分类专栏:

IgH详解

文章标签:

ethercat

于 2022-05-07 18:24:43 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/gufuguang/article/details/124636801

版权

IgH详解

专栏收录该内容

23 篇文章

248 订阅

订阅专栏

过程数据对象 (PDO)

过程数据对象(PDO)是EtherCAT 从站在每个周期内传输的过程数据,是应用程序期望循环更新或发送到从站的用户数据(比如每个周期下发伺服的位置)。因此,EtherCAT 主站在启动阶段对每个 EtherCAT 从站进行参数化,以定义要与该从站传输或从该从站传输的过程数据(以位/字节为单位的大小、源位置、传输类型)

PDO的配置(PDO通过邮箱SDO配置,SDO如何下发数据见上一篇文章)

寄存0x1c12 RxPDO 0x1c13 TxPDO

下面以一次实际配置过程来分析

 可以从报文看出配置的流程,配置出的数据如下图所示。

 配置映射的起始地址

可以看到对PDO的操作有两种方式:

一种是RxPDO、TxPDO分别访问,使用LRD、LWR

另外一种是RxPDO、TxPDO数据复用,减少带宽,是LRW, 从站先从PDO中读取数据,然后把需要发送到主站的数据写入。

从上面的报文中我们知道我们映射了8个字节,使用LRW只需要4个字节,节省了4个字节的带宽,当PDO数据很多时,效果会更加明显

 

上面是使用倍福的TwinCAT软件控制的一个IO的抓包结果

优惠劵

EtherCat技术研究

关注

关注

4

点赞

33

收藏

觉得还不错?

一键收藏

知道了

4

评论

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

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

复制链接

扫一扫

专栏目录

EtherCAT动态PDO映射的实现方法

06-05

作为EtherCAT协议栈的补充,实现PDO动态映射,是一个完整的EtherCAT从站必要的组成部分。

EtherCAT通信主站----PDO过程数据映射

热门推荐

weixin_43956732的博客

09-07

1万+

EtherCAT通信主站----PDO过程数据映射FMMU与Sync Manager配置PDO过程数据映射PDO映射PDO分配PDO 映射的步骤

EtherCAT其中COE在数据链路层采用EtherCAT协议,在运用层采用CanOpen协议,其和兴是对象字典,对PDO和SDO相关知识,可以参考CanOpen通信----PDO与SDO,本文将只PDO的映射相关知识。

FMMU与Sync Manager配置

为了使SDO与PDO数据能在EtherCAT数据链路层上得到正确解析,需要对FMMU与Sync Mana

4 条评论

您还未登录,请先

登录

后发表或查看评论

ethercat linux 主站igh程序讲解

01-08

linux,ethercat 开源master igh

汇川伺服电机

igh流程讲解

英文论文Motion Control of 6-DOF Manipulator Based on EtherCAT

六轴机械臂开源控制

IgH_EtherCAT_Master移植过程.rar_dgs_igh ethercat详解_igh ethercat配置_ig

07-13

这是关于Igh开源主站如何移植到嵌入式linux系统当中,便于后续的开发。

EtherCAT使用与解析-关于PDO映射

lswdcyy的博客

04-11

1万+

关于PDO映射这部分,最好先参考https://blog.csdn.net/lswdcyy/article/details/105441470先了解一下配置相关的东西;

首先这里已经假设你已经了解完毕配置相关内容且已经初步了解PDO的是以什么样的形式存在于domain和子报文中,那么下面继续:

对于PDO映射,首先他是已经有了一个sync中关联PDO的这样一个链表的前提下才进行的PDO映射,那...

EtherCAT——PDO/SDO

a1347065101的博客

07-26

3915

主站与从站进行数据交互的方式主要通过PDO和SDO,即过程数据和邮箱数据其概念与CANOpen中的概念相同。

【EtherCAT】COE对象字典与PDO映射简介

专注嵌入式软硬件开发。

10-09

7518

将CANopen作为EtherCAT的应用层,在保证兼容性的同时,为了适配EtherCAT数据链路层接口,充分发挥EtherCAT的网络优势,需要对CANopen协议相应的功能扩充,然后就有了COE(CANopen over EtherCAT)。对象字典可以这样理解,“一切信息皆对象”,比如某个数据,属性,设备ID,大小,方向,某个IO变量的值等等。对象字典就是对象的集合。每个对象都有对应的索引和索引。根据索引和子索引就能找到字典里的字(对象)。

CANopen通信之PDO通信

weixin_34273479的博客

02-20

1727

CANopen通信之PDO通信

过程数据对象(ProcessDataObject,PDO)是用来传输实时数据的,提供对设备应用对象的直接访问通道,它用来传输实时短帧数据,具有较高的优先权。PDO传输的数据必须少于或等于8个字节,PDO的CAN报文数据域中每个字节都用作数据传输,因此,在应用层上不包含传输控制信息,报文利用率极高。

P...

igh ethercat主站文档(中文翻译上)

qq_43530144的博客

05-12

5913

此翻译主要是用翻译软件翻译,部分自己修改,若有不当之处,可以下方评论或私聊我提醒修改,若转载,请注明出处

本文是1-4章节。

1 The IgH EtherCAT Master

本章介绍有关EtherCAT主站的一些常规信息。

1.1功能摘要

下面的列表简要介绍了主要功能。

•设计为Linux 2.6 / 3.x的内核模块。

•根据IEC 61158-12 [2] [3]实施。

•带有支持EtherCAT的本地驱动程序,可用于几种常见的以太网芯片,以及用于Linux内核支持的所有芯片的通用驱动程序。

–本地

IGH移植步骤.rar_IgH_EtherCAT_JHY_SOEM ethercat移植_ethercat移植_igh ethe

07-13

Linux平台下EtherCAT主站移植相关操作,辅助开发测试参考

IgH EtherCAT Master 1.5.2 Documentation

12-03

IgH EtherCAT Master 1.5.2 英文官方文档

IgH EtherCAT master-ethercatpack.7z

10-16

(1)将编译生成的Igh库文件替换libethercat\std文件, 文件名可能要改成,或者不该也行,自己写Makefile时匹配库名称就行 (2)将 scripts/ 目录复制到开发运行GenerateSlavesConfig.sh脚本,将脚本生成的ec_common_...

东北林业大学《经济动物生产学》2020考研专业课复试大纲.pdf

03-13

东北林业大学考研复试大纲

arm64架构下arangodb3.10.11docker镜像

03-13

arm64架构下arangodb3.10.11

毕业设计 - 选课系统 - android端.zip

03-13

【项目资源】:

包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。

包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。

【项目质量】:

所有源码都经过严格测试,可以直接运行。

功能在确认正常工作后才上传。

【适用人群】:

适用于希望学习不同技术领域的小白或进阶学习者。

可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。

【附加价值】:

项目具有较高的学习借鉴价值,也可直接拿来修改复刻。

对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。

【沟通交流】:

有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。

鼓励下载和使用,并欢迎大家互相学习,共同进步。

# 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

Cambridge English Dictionary_2.2.0_1710333549.apk

最新发布

03-13

Cambridge English Dictionary_2.2.0_1710333549.apk

东北农业大学811运筹学2020考研专业课初试大纲.pdf

03-13

东北林业大学

AO3430-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明

03-13

SOT23;N—Channel沟道,20V;6A;RDS(ON)=24mΩ@VGS=4.5V,VGS=8V;Vth=0.45~1V;

松下 igh ethercat

01-30

松下工业自动化系统公司开发的IGH EtherCAT是一种高性能的工业以太网通信协议。它采用了快速实时数据传输技术,具有低延迟和高稳定性的特点。IGH EtherCAT可以实现多种不同的设备之间的高速通信和数据交换,能够有效地提高工业自动化系统的运行效率和生产效益。

IGH EtherCAT采用了开放的标准协议和通信接口,可以实现设备之间的即插即用,简化系统的集成和维护。它还支持实时监控和远程控制,可以帮助用户实现智能化生产管理和远程维护。

作为一种先进的工业通信协议,IGH EtherCAT已经在众多行业中得到广泛的应用,包括汽车制造、机械制造、电子制造等领域。它可以满足复杂工业环境下的高速数据传输和实时控制需求,为企业提供了更加可靠和高效的自动化解决方案。

总的来说,IGH EtherCAT不仅具有高性能和稳定性,而且具有开放的标准接口和广泛的应用场景,可以为工业自动化系统的建设和应用带来更多的便利和价值。随着工业4.0和智能制造的发展,IGH EtherCAT必将在工业自动化领域发挥越来越重要的作用。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

EtherCat技术研究

CSDN认证博客专家

CSDN认证企业博客

码龄11年

暂无认证

84

原创

3万+

周排名

2万+

总排名

27万+

访问

等级

2392

积分

574

粉丝

168

获赞

261

评论

1119

收藏

私信

关注

热门文章

机内码、国际码、区位码换算

24861

各种ADC转换方式的优缺点

20211

IgH详解 一、概述

12652

IgH配置EtherCAT流程

12340

目前常用AD/DA芯片简介

7913

分类专栏

Linuxcnc-ethercat

1篇

IgH详解

23篇

arm_Linux

1篇

TCP/IP

1篇

S3C2440

18篇

EtherCAT

13篇

最新评论

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

EtherCat技术研究:

扫描跟兼容性关系不大,先要确保ethercat报文是否有正常收发

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

EtherCat技术研究:

要看你报文是否有超时,是否有丢包?用的实时网卡驱动吗?需要你根据自己环境去查

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

weixin_50007256:

大佬,我偶然会出现伺服和io的从站突然重启后扫描不上来的情况,重启前还是能扫描上来的,是因为兼容性的问题么。

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

weixin_50007256:

大佬,从站成功切到op之后,为了检测从站是否会断开,我判断ec_slave_config_state_t.online的值,出现有时候online为false的现象,但是从站状态一直是op,这是什么原因呢

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

records111:

大神你好,我想请教下你用从站作为参考时钟的话,主站的时钟是怎么被同步的呢,可以详细聊聊吗

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

倍福控制器搭建IgH环境

全志A40i PRREMPT-RT Linux平台搭建IgH环境

ubuntu 16.04 阿里软件源

2023年11篇

2022年18篇

2021年12篇

2019年3篇

2018年1篇

2015年2篇

2013年58篇

目录

目录

分类专栏

Linuxcnc-ethercat

1篇

IgH详解

23篇

arm_Linux

1篇

TCP/IP

1篇

S3C2440

18篇

EtherCAT

13篇

目录

评论 4

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

EtherCAT使用与解析-关于PDO映射_ethercat报文映射参数-CSDN博客

>

EtherCAT使用与解析-关于PDO映射_ethercat报文映射参数-CSDN博客

EtherCAT使用与解析-关于PDO映射

最新推荐文章于 2024-02-26 16:21:11 发布

会笑的那双眼

最新推荐文章于 2024-02-26 16:21:11 发布

阅读量1.4w

收藏

45

点赞数

2

分类专栏:

EtherCAT

文章标签:

ethercat

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/lswdcyy/article/details/105453144

版权

EtherCAT

专栏收录该内容

11 篇文章

38 订阅

订阅专栏

关于PDO映射这部分,最好先参考https://blog.csdn.net/lswdcyy/article/details/105441470先了解一下配置相关的东西;

首先这里已经假设你已经了解完毕配置相关内容且已经初步了解PDO的是以什么样的形式存在于domain和子报文中,那么下面继续:

对于PDO映射,首先他是已经有了一个sync中关联PDO的这样一个链表的前提下才进行的PDO映射,那么这份配置你会发现在应用层例子中他有的时候没有,但有的时候又是存在的,然后使用ecrt_slave_config_pdos()函数进行PDO的在sync中的配置,之所以是可有可无的这样一个步骤,究其原因需要追溯到主站状态机部分,主站状态机在扫描SII信息(https://blog.csdn.net/lswdcyy/article/details/105332841)时会提取TxPDO和RxPDO到从站的同步管理器(SII信息中有PDO和sync相关的信息);然后在使用ecrt_master_slave_config()进行函数配置的时候会将对应从站的sync相关的PDO(master->slaves->sync)复制到从站配置部分。这样,即使不去人为的配置同步管理器和PDO的映射关系,也没什么影响。

当然另外一种就是使用ecrt_slave_config_pdos()函数对从站配置进行设置,该函数会将原本SII复制到的从站配置中的sync进行清除,而后依据新的配置进行设置:需要使用的配置结构如下:

typedef struct

{

uint16_t index; /**< PDO entry index. */

uint8_t subindex; /**< PDO entry subindex. */

uint8_t bit_length; /**< Size of the PDO entry in bit. */

} ec_pdo_entry_info_t;

typedef struct {

uint16_t index; /**< PDO index. */

unsigned int n_entries; /**< Number of PDO entries in \a entries to map.

Zero means, that the default mapping shall be

used (this can only be done if the slave is

present at bus configuration time). */

ec_pdo_entry_info_t *entries; /**< Array of PDO entries to map. Can either

be \a NULL, or must contain at

least \a n_entries values. */

} ec_pdo_info_t;

typedef struct {

uint8_t index; /**< Sync manager index. Must be less

than #EC_MAX_SYNC_MANAGERS(此处16) for a valid sync manager,

but can also be \a 0xff to mark the end of the list. */

ec_direction_t dir; /**< Sync manager direction. */

unsigned int n_pdos; /**< Number of PDOs in \a pdos. */

ec_pdo_info_t *pdos; /**< Array with PDOs to assign. This must contain

at least \a n_pdos PDOs. */

ec_watchdog_mode_t watchdog_mode; /**< Watchdog mode. */

} ec_sync_info_t;

分别是sync、pdo和pdo_entry结构体,三者关系是sync索引PDO,PDO索引PDO_entry,至于从站如何获取PDO配置的话,可以使用

sudo ethercat cstruct

进行该信息提取。

另外需要明确的是,上面两种PDO配置并不冲突,可以理解前者是从站的默认配置,后者是用户为了个性化自定义配置(有无均可,只不过不自定义的话可能会有冗余信息)。

那么继续ecrt_slave_config_pdos()配置函数解析;该函数的目的已经明确,就是为了对从站同步管理器的自定义设置,具体过程如下:

针对每个ec_sync_info_t输入结构数组进行PDO映射处理,分为三个层次:

1.sync层次:sync层次主要配置同步管理器的方向和看门狗设置;

2.PDO层次:处理PDO的时候需要两个过程,一个就是对之前的PDO配置进行清除,第二个过程就是将自定义配置的PDO设置到从站配置的同步管理器链表中,这个过程还会查询之前的默认配置,将之前PDO中的PDO_entry复制到PDO中;

3.PDO entry层次:这个层次将默认配置完全丢弃,从站同步管理器配置方面完全使用用户自定义的同步管理器配置。

通过以上解析,对于从站PDO映射配置大致如上。关于PDO配置如何在从站中生效,就涉及到了主站状态机运行部分,这个放在另外一个单元单独叙述。

优惠劵

会笑的那双眼

关注

关注

2

点赞

45

收藏

觉得还不错?

一键收藏

知道了

0

评论

EtherCAT使用与解析-关于PDO映射

关于PDO映射这部分,最好先参考https://blog.csdn.net/lswdcyy/article/details/105441470先了解一下配置相关的东西;首先这里已经假设你已经了解完毕配置相关内容且已经初步了解PDO的是以什么样的形式存在于domain和子报文中,那么下面继续:对于PDO映射,首先他是已经有了一个sync中关联PDO的这样一个链表的前提下才进行的PDO映射,那...

复制链接

扫一扫

专栏目录

EtherCAT通信主站----PDO过程数据映射

weixin_43956732的博客

09-07

1万+

EtherCAT通信主站----PDO过程数据映射FMMU与Sync Manager配置PDO过程数据映射PDO映射PDO分配PDO 映射的步骤

EtherCAT其中COE在数据链路层采用EtherCAT协议,在运用层采用CanOpen协议,其和兴是对象字典,对PDO和SDO相关知识,可以参考CanOpen通信----PDO与SDO,本文将只PDO的映射相关知识。

FMMU与Sync Manager配置

为了使SDO与PDO数据能在EtherCAT数据链路层上得到正确解析,需要对FMMU与Sync Mana

EtherCAT主站 - SOEM-master-1.4.zip

11-08

EtherCAT主站 - SOEM-master-1.4.zip 。 源代码。

参与评论

您还未登录,请先

登录

后发表或查看评论

EtherCAT动态PDO映射的实现方法

06-05

作为EtherCAT协议栈的补充,实现PDO动态映射,是一个完整的EtherCAT从站必要的组成部分。

CanOpen--PDO映射

天道酬勤

12-21

1357

canopen--PDO映射

EtherCAT报文格式详解

EtherCAT

08-23

7268

1、EtherCAT报文组成

从图中抓的包可以看出EtherCAT报文分为三部分(1)、以太网帧头 (2)、EtherCAT帧头 (3)、EtherCAT数据 说明:KUNBUS TAP是实时抓包工具加的时间戳信息,报文的FCS也在里面

2、帧头解析

(1)、EtherCAT是基于以太网的所以头部首先是以太网帧头,包含目的和源MAC地址,EtherCAT帧类型固定为 0x88A4

(2)、EtherCAT帧头2字节,包含ECAT数据长度

3、ECAT数据解析

ECAT数据就是主...

EtherCAT抓包及报文分析

最新发布

weixin_44058390的博客

02-26

981

EtherCAT协议是位于Ethernet协议之上的网络层协议,与IP协议平级。

EtherCAT的COE报文

u014453443的博客

01-04

516

动态PDO配置包括PDO Assignment和PDO Configuration,前者指的是,已经有配置好的一堆1600,1601,1602等等PDO,我们可以选择如何组合成我们自己的传输数据。其中,子索引0是分配的PDO数目,其他子索引是PDO映射对象的索引号,也就是前面的0x1600~0x17FF。COE协议是完全遵循CANopen协议的,但针对EtherCAT通信做了一些扩展,索引为0x1c00~0x1c4f,用于设置存储同步管理器的类型,通信参数和PDO数据分配。0x1c12配置示例。

【EtherCAT】COE对象字典与PDO映射简介

专注嵌入式软硬件开发。

10-09

7518

将CANopen作为EtherCAT的应用层,在保证兼容性的同时,为了适配EtherCAT数据链路层接口,充分发挥EtherCAT的网络优势,需要对CANopen协议相应的功能扩充,然后就有了COE(CANopen over EtherCAT)。对象字典可以这样理解,“一切信息皆对象”,比如某个数据,属性,设备ID,大小,方向,某个IO变量的值等等。对象字典就是对象的集合。每个对象都有对应的索引和索引。根据索引和子索引就能找到字典里的字(对象)。

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

EtherCAT

05-07

6851

过程数据对象 (PDO)

过程数据对象(PDO)是EtherCAT 从站在每个周期内传输的过程数据,是应用程序期望循环更新或发送到从站的用户数据(比如每个周期下发伺服的位置)。因此,EtherCAT 主站在启动阶段对每个 EtherCAT 从站进行参数化,以定义要与该从站传输或从该从站传输的过程数据(以位/字节为单位的大小、源位置、传输类型)

PDO的配置(PDO通过邮箱SDO配置,SDO如何下发数据见上一篇文章)

寄存0x1c12 RxPDO 0x1c13 TxPDO

下面以一次实际配置过程来

ethercat主站开发之-----一拖多驱动控制

hubeihualei的博客

08-03

459

ethercat伺服电机驱动怎么实现一托多控制

EtherCAT对象字典分析

cln512的博客

07-23

6312

EtherCAT开发中,主要通过两款软件查看XML文件,分别是"XML Notepad"和"Altova XMLSpy",两款界面如下:

通过对比可以看出Altova XMLSpy软件显示的更为直观,因此我在开发时主要使用此软件。

接下来进入正题。通过igh开发EtherCAT应用程序首先必须知道从站的对象字典,我们可以通过igh自带的ethercat软件查看从站的对象字典。实验设备为安装了xe...

03_过程数据对象(PDO)

zaichen321的博客

02-13

3181

CANopen PDO 传输

详解EtherCAT主站协议栈-综合文档

05-22

详解EtherCAT主站协议栈

Documentation-EtherCAT-Library-LabVIEW-2.9

07-24

This document describes the usage and installation of the “EtherCAT Library for LabVIEW“ version 2.9.

EtherCAT-Device-Protocol-Poster

02-16

EtherCAT初学者之路

EtherCAT使用与解析-关于SDO与PDO关系

热门推荐

lswdcyy的博客

04-07

1万+

SDO和PDO都是基于CANopen的对象字典进行讨论的,CoE基于CANopen协议进行了补充,使之可以应用在EtherCAT上,两者都是建立在CANopen的对象字典之上的,且针对的对象字典是同一个。

PDO有一些是用于特殊功能的,并不能随便乱用!

关于CoE,有一些需要注意一下,就是RxPDO和TxPDO这两种其实本质上都是PDO,都是基于索引+子索引+数据大小的模式,不同之处在于,这两...

EtherCAT使用与解析-关于ethercat应用层使用

lswdcyy的博客

04-11

9551

下载ethercat源码并且安装好之后,测试ethercat使用可以遵循以下步骤:

1.开启ethercat系统:执行这一步需要确保一点,那就是按照ethercat源码中的README指导将一些需要的文件复制以及创建软连接到/opt/init.d/ehtercat以及/opt/sysconfig/ethercat这两个文件,前者是系统启动文件,后者是系统配置文件,说起这个配置文件,其实就是一份变...

EtherCAT使用与解析-从站配置子状态机(init->preop)

lswdcyy的博客

04-05

4588

从站配置的子状态机是./master/fsm_slave_config.h/ec_fsm_slave_config结构体

struct ec_fsm_slave_config

{

ec_datagram_t *datagram; /**< Datagram used in the state machine. */

ec_fsm_change_t *fsm_change...

ethercat pdo映射

08-30

EtherCAT(Ethernet for Control Automation Technology)是一种实时以太网通信协议,它被广泛应用于工业自动化控制系统中。

EtherCAT PDO(Process Data Object)映射是EtherCAT网络中通信数据的传输方式之一。PDO允许直接传输过程数据,而不需要额外的通信协议。

PDO映射的过程可以分为两个步骤。首先是PDO的配置,这包括定义PDO映射的对象和数据类型,以及指定PDO的传输类型、数据长度等参数。其次是PDO的映射,即将定义的PDO对象与实际的硬件设备或I/O模块进行关联。

在EtherCAT网络中,PDO映射可以通过专门的配置工具或编程接口进行设置。通过配置工具,可以直观地定义PDO对象、数据类型和映射关系。而通过编程接口,开发者可以自定义PDO的配置和映射过程,实现更灵活的通信需求。

使用PDO映射的好处是可以提高通信的实时性和可靠性。由于PDO直接传输过程数据,避免了额外的协议栈和数据处理过程,减少了通信的延迟和资源消耗。此外,PDO映射还可以针对实际需求进行灵活配置,提高系统的可配置性和可扩展性。

总之,EtherCAT PDO映射是一种基于EtherCAT网络的通信数据传输方式,通过配置和映射PDO对象,可以实现高效实时的数据传输,提高工业自动化控制系统的性能和可靠性。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

会笑的那双眼

CSDN认证博客专家

CSDN认证企业博客

码龄9年

暂无认证

105

原创

2万+

周排名

9万+

总排名

14万+

访问

等级

1953

积分

83

粉丝

61

获赞

52

评论

313

收藏

私信

关注

分类专栏

html5

8篇

css

11篇

c++

7篇

程序技巧

1篇

test

1篇

软件工具使用

2篇

make

2篇

base_c_c++

1篇

protobuf

1篇

git

1篇

nginx

2篇

markdown

1篇

开源库

1篇

线程池

2篇

vmware

1篇

tcp

5篇

websocket

1篇

http

1篇

linux内核

10篇

个人感悟

算法

1篇

STL源码

9篇

其他

1篇

EtherCAT_Linuxcnc

2篇

EtherCAT

11篇

库使用

1篇

linux

qt

11篇

python

2篇

IIS

1篇

软件发布

1篇

清理c盘

1篇

架构

最新评论

EtherCAT使用与解析-ethercat空闲阶段函数解析

开启伯恩:

”这里还有个点就是在接收过程中需要进行多次接收“,这个多次接收,在进入op后,怎么处理?

EtherCAT使用与解析-关于SDO与PDO关系

huangbojun2008:

1600,1800,1c00之类的都属于SDO吧?

EtherCAT使用与解析-ethercat系统内核模块加载与初始化操作

无 过:

对,然后我下载回来了,十分感谢您,参考你的博客才能安装到最后一步的,感谢!

EtherCAT使用与解析-ethercat系统内核模块加载与初始化操作

会笑的那双眼:

这个看样子就是缺内核模块了,是没执行安装吗?正常编译后应该有个安装过程的。

EtherCAT使用与解析-ethercat系统内核模块加载与初始化操作

会笑的那双眼:

不需要,那些是底层的东西,ethercat-master自己做的

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

css选择器

px_em_rem

line-height

2023年22篇

2022年29篇

2021年22篇

2020年18篇

2018年14篇

目录

目录

分类专栏

html5

8篇

css

11篇

c++

7篇

程序技巧

1篇

test

1篇

软件工具使用

2篇

make

2篇

base_c_c++

1篇

protobuf

1篇

git

1篇

nginx

2篇

markdown

1篇

开源库

1篇

线程池

2篇

vmware

1篇

tcp

5篇

websocket

1篇

http

1篇

linux内核

10篇

个人感悟

算法

1篇

STL源码

9篇

其他

1篇

EtherCAT_Linuxcnc

2篇

EtherCAT

11篇

库使用

1篇

linux

qt

11篇

python

2篇

IIS

1篇

软件发布

1篇

清理c盘

1篇

架构

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

倍福:汇川EtherCAT不同PDO参数组的选择配置_汇川板卡pdo-CSDN博客

>

倍福:汇川EtherCAT不同PDO参数组的选择配置_汇川板卡pdo-CSDN博客

倍福:汇川EtherCAT不同PDO参数组的选择配置

最新推荐文章于 2023-07-26 17:33:48 发布

光怪陆离的节日

最新推荐文章于 2023-07-26 17:33:48 发布

阅读量4.4k

收藏

4

点赞数

1

分类专栏:

倍福

文章标签:

倍福

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_41883890/article/details/128254318

版权

倍福

专栏收录该内容

282 篇文章

146 订阅

¥239.90

¥99.00

订阅专栏

汇川EtherCAT伺服力矩输出值PDO配置,不同PDO参数组的选择

操作流程 首先连接伺服,扫描配置,如下所示:

默认的Nc轴会自动连接一些关键的数据,如控制字、状态字、指令位置、指令速度、位置反馈、速度反馈这些。 有些其它的参数可以通过PLC变量连接获取,如下所示

而一般伺服的xml文件会配置好几组PDO参数,可根据实际情况勾选

需要注意的的定义好的PDO参数组不能修改,但是能够显示每组PDO存在的参数,在实际使用中勾选不同组即可:

例如需要勾选力矩控制,并且限制力矩大小则,

了解本专栏

订阅专栏 解锁全文

优惠劵

光怪陆离的节日

关注

关注

1

点赞

4

收藏

觉得还不错?

一键收藏

打赏

知道了

0

评论

倍福:汇川EtherCAT不同PDO参数组的选择配置

默认的Nc轴会自动连接一些关键的数据,如控制字、状态字、指令位置、指令速度、位置反馈、速度反馈这些。需要注意的是该勾选项必须是在伺服OP状态才能勾选,勾选完成之后需要激活配置,伺服重新上电。汇川EtherCAT伺服力矩输出值PDO配置,不同PDO参数组的选择。例如需要勾选力矩控制,并且限制力矩大小则,勾选1704的PDO列表项。而一般伺服的xml文件会配置好几组PDO参数,可根据实际情况勾选。有些其它的参数可以通过PLC变量连接获取,如下所示。则右边会有该选项的显示。

复制链接

扫一扫

专栏目录

订阅专栏

汇川SV680系列伺服EtherCAT通讯配置文件

06-01

汇川 SV680 系列伺服EtherCAT通讯配置文件 xml

倍福、基恩士、三菱等PLC,EtherCAT总线控制汇川SV680系列伺服配置文件

TwinCAT学习笔记2--配置EtherCAT变频器设备的过程数据

嵌入式及工业自动化

10-26

4091

本例程使用的是倍福嵌入式控制器CX5120-0125。

变频器使用博能传动公司A1系列驱动器,支持EtherCAT通信。

继续上一篇博文《TwinCAT学习笔记1--扫描2台EtherCAT变频器设备》

驱动器参数配置

PDO类型

PZD类型

参数名称

设置说明

RPDO...

参与评论

您还未登录,请先

登录

后发表或查看评论

EtherCAT——PDO/SDO

最新发布

a1347065101的博客

07-26

3915

主站与从站进行数据交互的方式主要通过PDO和SDO,即过程数据和邮箱数据其概念与CANOpen中的概念相同。

倍福Beckhoff EtherCAT IPCore Datasheet

04-13

FPGA最新版

Section I – Technology

Section II – Register Description

Section III – Hardware Description

EtherCAT动态PDO映射的实现方法

06-05

作为EtherCAT协议栈的补充,实现PDO动态映射,是一个完整的EtherCAT从站必要的组成部分。

倍福PLC控制汇川伺服需要配置的COE参数

weixin_41883890的博客

01-23

5048

使用第三方伺服,除了需要相关的电机文件外,还需要手动配置一些启动的COE参数,比如控制模式、电机正反转方向、伺服数字输入端子等,本文以汇川伺服为例配置启动时的COE参数。

操作流程

1.1. IS620N介绍

IS620N是汇川生产的伺服系统,支持EthercAT协议,其外观如下所示。

面板上面显示伺服的各种状态,具体的含义如下所示

线路的连接分为:主回路连接、控制回路连接、编码器连接和动力线连接,其接线和调试的线路连接如下所示:

1.2. 扫描IO

接好线后,添加电机文件,在Twinca

十五.EtherCAT开发之对象字典的映射原理

aiot_bigbear的专栏,关注我获取最新技术文章信息与海量资源~

06-21

1037

仔细阅读四个代码文件l 文件el9800appl.c:主函数,数据收发函数所在l 文件el9800appl.h:对象字典定义所在,包含对象字典的类型、权限、长度、映射关系、链接变量、初值等等l 文件el9800hw.c:PDI接口函数,定时器/IRQ/DC中断函数l 文件el9800hw.h:上个文件的一些宏。

EtherCAT通信主站----PDO过程数据映射

weixin_43956732的博客

09-07

1万+

EtherCAT通信主站----PDO过程数据映射FMMU与Sync Manager配置PDO过程数据映射PDO映射PDO分配PDO 映射的步骤

EtherCAT其中COE在数据链路层采用EtherCAT协议,在运用层采用CanOpen协议,其和兴是对象字典,对PDO和SDO相关知识,可以参考CanOpen通信----PDO与SDO,本文将只PDO的映射相关知识。

FMMU与Sync Manager配置

为了使SDO与PDO数据能在EtherCAT数据链路层上得到正确解析,需要对FMMU与Sync Mana

EtherCAT总线运动控制学习笔记(RXXW_Dor)

RXXW_Dor的博客

11-06

3045

说到总线控制,就要说到报文、对象字典、PN通信我们大部分会说报文,EtherCAT通信我们常说对象字典,叫法不一样,但是原理基本一致,下面我们简单认识下上面是对象字典。

03_过程数据对象(PDO)

zaichen321的博客

02-13

3181

CANopen PDO 传输

汇川CANOPEN通讯篇,汇川plccanopen通讯案例,C,C++

09-10

汇川CANOPEN通讯协议,学习CANOPNEN有很大的参考价值,对于SPO、PDO都有详细介绍,对于CANOPNE的入门有很大的帮助

倍福控制松下驱动器Ethercat.zip

04-30

倍福控制松下驱动器,Ethercat总线通信

Application Note ET9300 (EtherCAT Slave Stack Code

01-17

Application Note ET9300 (EtherCAT Slave Stack Code

倍福EtherCAT技术

12-22

倍福EtherCAT技术PPT介绍,1EtherCAT 技术2EtherCAT 安全3XFC | 极端快速控制技术4科技自动化5EtherCAT 组件

PLC中MX、MB、MW、MD的含义和长度

热门推荐

weixin_41883890的博客

11-15

1万+

存储区域包括有:输入映像区(I),输出映像区(Q),内部存储区(M),物理输入区(PI),物理输出区(PQ),数据块(DB),数据块(DI),临时堆栈(L)MB表示长度为字节的操作数在内部存储区,MW表示长度为字的操作数在内部存储区,MD表示长度为双字的操作数在内部存储区。标识参数用来表示操作数在该存储区域内的具体位置。辅助标识符包括有:X(位),B(字节),W(字—2字节),D(双字—4字节)D 是指长度占一个双字(四个字节)W 是指长度占一个字(两个字节)B 是指长度占一个字节。M表示是辅助存储单元。

编码器A相B相Z相的定义

weixin_41883890的博客

01-23

1万+

编码器的信号又A相、B相、Z相的定义,这个和电机的ABC相的没有关系,本文介绍编码器A相、B相、Z相的概念。

编码器A相B相Z相的概念

谓U相、V相、W相是指的电机的主电源的三相交流供电,与编码器没有任何关系。“A相、B相、Z相”与“U相、V相、W相”是完全没有什么关系的两种概念,前者是编码器的通道输出信号;后者是交流电机的三相主回路供电。

而编码器的A相、B相、Z相信号中,A、B两个通道的信号一般是正交(即互差90°)脉冲信号;而Z相是零脉冲信号。详细来说,就是一般编码器输出信号除A、B两相(A、B两通

PDI速度环、位置环、电流环控制原理

weixin_41883890的博客

01-27

1万+

PID参数电流环、速度环、位置环介绍

三环控制简介

1.1. 电流环

电流环指的是电流反馈系统. 一般指的是将输出电流采用正反馈或负反馈的方式接入处理环节的方法,主要为了通过提高电流的稳定性能来提高系统的性能。

在工业现场,用一个仪表放大器来完成信号的调理并进行长线传输,会产生以下问题:第一,由于传输的信号是电压信号,传输线会受到噪声的干扰;第二,传输线的分布电阻会产生电压降;第三,在现场如何提供仪表放大器的工作电压也是个问题。

为了解决上述问题和避开相关噪声的影响,我们用电流来传输信号,因为电流对噪声并

脉冲信号-422差分信号、PNP信号和NPN信号

weixin_41883890的博客

01-27

9779

通过脉冲模块EL2521控制步进电机,其信号类型有多种,本文对伺服输入信号类型:422差分信号、PNP信号、NPN信号的区别和原理做简要介绍。

脉冲信号类型介绍

1.1. RS422差分信号

1.1.1. 差分信号

差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反。在这两根线上的传输的信号就是差分信号。信号接收端比较这两个电压的差值来判断发送端发送的逻辑状态。在电路板上,差分走线必须是等长、等宽、紧密靠近、且在同一层面的两根

倍福E-bus和K-bus区别

weixin_41883890的博客

01-27

9518

E-bus指的是EtherCAT总线,K-bus指的是除了EtherCAT总线外的,其他类的耦合器(例如CANopen耦合器)和模块之间通讯的高速串行总线。本文介绍E-bus和K-bus的区别和相关产品

E-Bus简介

1.1. E-bus

1.1.1. 概念

Twincat系统连接倍福I/O系统时,默认Ethercat作为I/O总线,I/O模块之间使用E-Bus作为背板总线,E-Bus本质就是Ethercat,只不过传输的时候不是用的网线,而是背板后面的弹簧片触点(6个弹簧触点).所谓一网到底,就是每个

倍福汇川伺服PDO配置方法

05-17

倍福汇川伺服的PDO配置方法如下:

1. 打开伺服控制器的配置软件。

2. 选择对应型号的伺服驱动器,并进入参数配置界面。

3. 在界面中找到“PDO映射表”或“PDO配置”选项,进行配置。

4. 根据实际需求,选择需要配置的PDO对象,并设置对应的索引、子索引、数据类型等参数。

5. 进行保存并下载配置,确保配置生效。

需要注意的是,PDO配置是一项比较专业的工作,建议在进行配置前仔细阅读相关的技术文档,或者寻求专业的技术支持。同时,配置不当可能会导致伺服驱动器无法正常工作,因此操作时一定要谨慎。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

光怪陆离的节日

博客等级

码龄6年

1067

原创

1498

点赞

4878

收藏

5万+

粉丝

关注

私信

热门文章

亚德客真空表DPSN基本参数设置

45378

wincc7.5下载安装教程(Win10系统)

30059

电脑连接信捷PLC方法

27210

威伦触摸屏界面设置密码登录权限

25497

三菱FX系列DDRVA指令使用

22051

分类专栏

倍福

付费

282篇

汇川PLC

付费

21篇

倍福实用

付费

88篇

FX系列

付费

40篇

Q系列

付费

23篇

Windows

12篇

C# Web

12篇

WPF

53篇

C#

163篇

三菱PLC

2篇

PLC通信

4篇

EtherCAT伺服

1篇

Javascript

1篇

WinCC

1篇

Pro-face触摸屏

3篇

伺服

20篇

信捷PLC

5篇

电气元件

26篇

倍福教程

81篇

维纶

7篇

Git

3篇

CAD

1篇

高等数学

63篇

计算机组成原理

80篇

计算机网络

96篇

数据库

4篇

操作系统

64篇

11

mysql

1篇

NCI

3篇

笔记

机器人

10篇

欧姆龙PLC

1篇

打印机

1篇

富士伺服

3篇

精研JSCC

2篇

PLC逻辑思路

6篇

EmguCV

1篇

变频器

4篇

EPLAN

21篇

RS232

1篇

步进电机

3篇

AM600

8篇

数据结构与算法

71篇

OpenCV

C++

3篇

最新评论

C#和倍福PLC之间的通信

青衫磊磊:

你好,动态链接库能分享一下吗

倍福EtherCAT通信协议原理

光怪陆离的节日:

辽宁省辽阳市辽阳县黄泥洼镇圆通快递

15841293410

房丹

倍福EtherCAT通信协议原理

光怪陆离的节日:

欣X1024888888

倍福EtherCAT通信协议原理

光怪陆离的节日:

哲辰柳州螺蛳粉 广东省东莞市安居西街51号101室

倍福EtherCAT通信协议原理

光怪陆离的节日:

LXHWX881222

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

github ping不通的问题,出现网络超时

倍福控制汇川IS620N,关于多圈绝对值编码器断电保持问题

倍福EL6002做RS232通信获取称重数据

2024年1篇

2023年37篇

2022年416篇

2021年527篇

2020年87篇

2018年1篇

目录

目录

分类专栏

倍福

付费

282篇

汇川PLC

付费

21篇

倍福实用

付费

88篇

FX系列

付费

40篇

Q系列

付费

23篇

Windows

12篇

C# Web

12篇

WPF

53篇

C#

163篇

三菱PLC

2篇

PLC通信

4篇

EtherCAT伺服

1篇

Javascript

1篇

WinCC

1篇

Pro-face触摸屏

3篇

伺服

20篇

信捷PLC

5篇

电气元件

26篇

倍福教程

81篇

维纶

7篇

Git

3篇

CAD

1篇

高等数学

63篇

计算机组成原理

80篇

计算机网络

96篇

数据库

4篇

操作系统

64篇

11

mysql

1篇

NCI

3篇

笔记

机器人

10篇

欧姆龙PLC

1篇

打印机

1篇

富士伺服

3篇

精研JSCC

2篇

PLC逻辑思路

6篇

EmguCV

1篇

变频器

4篇

EPLAN

21篇

RS232

1篇

步进电机

3篇

AM600

8篇

数据结构与算法

71篇

OpenCV

C++

3篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

打赏作者

光怪陆离的节日

你的鼓励将是我创作的最大动力

¥1

¥2

¥4

¥6

¥10

¥20

扫码支付:¥1

获取中

扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

EtherCAT使用与解析-关于PDO映射生效以及主站状态机在此过程的作用_ethercat动态配置rxpdo-CSDN博客

>

EtherCAT使用与解析-关于PDO映射生效以及主站状态机在此过程的作用_ethercat动态配置rxpdo-CSDN博客

EtherCAT使用与解析-关于PDO映射生效以及主站状态机在此过程的作用

最新推荐文章于 2024-02-02 06:11:11 发布

会笑的那双眼

最新推荐文章于 2024-02-02 06:11:11 发布

阅读量4.1k

收藏

13

点赞数

4

分类专栏:

EtherCAT

文章标签:

ethercat

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/lswdcyy/article/details/105455849

版权

EtherCAT

专栏收录该内容

11 篇文章

38 订阅

订阅专栏

在PDO映射配置一文https://blog.csdn.net/lswdcyy/article/details/105453144,已经针对从站的同步管理器配置已经基本描述了,本章描述关于PDO映射如何在从站中生效的相关内容。

PDO映射交换目前我已知的内容涉及到3个部分:sync同步管理器配置,FMMU配置以及PDO映射关系配置:

先说sync同步管理器配置和FMMU配置,两者差别不大,sync主要是从站同步管理物理起始地址,FMMU需要设置从站映射物理起始地址和报文逻辑起始地址。

对于PDO映射关系,了解这个的话需要知道一个状态机,就是从站扫描状态机中的子状态机,ec_fsm_pdo状态机原理就是配置对象字典0x1C10~0x1C2F这32个PDO,这32个PDO名为Sync Manager PDO Assignment,分别对应0~31同步管理器的PDO映射,也就是从站同步管理器最多可以支持32个。

具体对每个同步管理器PDO配置通过邮箱通讯(邮箱可以完成对对象字典的读写)可以实现:

1.基于用户设置的PDO映射对映射表PDO进行配置:整体格式就是子索引为0的位置存放PDO对应的entry个数,然后存放entry的格式为(index + subindex + bit_length),直到将配置的PDO entry设置完毕;然后再将entry个数设置在PDO子索引为0的位置上。

2.对同步管理器映射PDO进行配置:整体格式为子索引为0的位置存储管理PDO的个数,之后的位置存储PDO,存储映射的PDO就是直接存储了映射表PDO的索引(2Byte),配置完毕之后,同样将该同步管理器管理的PDO个数设置在同步管理器分配PDO子索引为0的位置。

3.对从站的同步管理器PDO和映射表PDO进行重新配置后,将最开始空闲阶段扫描从站SII信息获取的PDO映射关系进行更新,更新为设置完毕的PDO映射关系,也就是用户设置的PDO关系。

这样PDO的映射关系和报文中信息的逻辑地址以及从站映射物理地址三者就产生了联系。

优惠劵

会笑的那双眼

关注

关注

4

点赞

13

收藏

觉得还不错?

一键收藏

知道了

0

评论

EtherCAT使用与解析-关于PDO映射生效以及主站状态机在此过程的作用

在PDO映射配置一文https://blog.csdn.net/lswdcyy/article/details/105453144,已经针对从站的同步管理器配置已经基本描述了,本章描述关于PDO映射如何在从站中生效的相关内容。PDO映射交换目前我已知的内容涉及到3个部分:sync同步管理器配置,FMMU配置以及PDO映射关系配置:先说sync同步管理器配置和FMMU配置,两者差别不大,sy...

复制链接

扫一扫

专栏目录

EtherCAT总线运动控制学习笔记(RXXW_Dor)

RXXW_Dor的博客

11-06

3045

说到总线控制,就要说到报文、对象字典、PN通信我们大部分会说报文,EtherCAT通信我们常说对象字典,叫法不一样,但是原理基本一致,下面我们简单认识下上面是对象字典。

EtherCAT动态PDO映射的实现方法

06-05

作为EtherCAT协议栈的补充,实现PDO动态映射,是一个完整的EtherCAT从站必要的组成部分。

参与评论

您还未登录,请先

登录

后发表或查看评论

CanOpen--PDO映射

天道酬勤

12-21

1357

canopen--PDO映射

EtherCAT的COE报文

u014453443的博客

01-04

516

动态PDO配置包括PDO Assignment和PDO Configuration,前者指的是,已经有配置好的一堆1600,1601,1602等等PDO,我们可以选择如何组合成我们自己的传输数据。其中,子索引0是分配的PDO数目,其他子索引是PDO映射对象的索引号,也就是前面的0x1600~0x17FF。COE协议是完全遵循CANopen协议的,但针对EtherCAT通信做了一些扩展,索引为0x1c00~0x1c4f,用于设置存储同步管理器的类型,通信参数和PDO数据分配。0x1c12配置示例。

TXPDO和RXPDO的配置

最新发布

m0_51152048的博客

02-02

416

下图都是同理。

EtherCAT通信主站----PDO过程数据映射

热门推荐

weixin_43956732的博客

09-07

1万+

EtherCAT通信主站----PDO过程数据映射FMMU与Sync Manager配置PDO过程数据映射PDO映射PDO分配PDO 映射的步骤

EtherCAT其中COE在数据链路层采用EtherCAT协议,在运用层采用CanOpen协议,其和兴是对象字典,对PDO和SDO相关知识,可以参考CanOpen通信----PDO与SDO,本文将只PDO的映射相关知识。

FMMU与Sync Manager配置

为了使SDO与PDO数据能在EtherCAT数据链路层上得到正确解析,需要对FMMU与Sync Mana

EtherCAT使用与解析-关于PDO映射

lswdcyy的博客

04-11

1万+

关于PDO映射这部分,最好先参考https://blog.csdn.net/lswdcyy/article/details/105441470先了解一下配置相关的东西;

首先这里已经假设你已经了解完毕配置相关内容且已经初步了解PDO的是以什么样的形式存在于domain和子报文中,那么下面继续:

对于PDO映射,首先他是已经有了一个sync中关联PDO的这样一个链表的前提下才进行的PDO映射,那...

【EtherCAT】COE对象字典与PDO映射简介

专注嵌入式软硬件开发。

10-09

7518

将CANopen作为EtherCAT的应用层,在保证兼容性的同时,为了适配EtherCAT数据链路层接口,充分发挥EtherCAT的网络优势,需要对CANopen协议相应的功能扩充,然后就有了COE(CANopen over EtherCAT)。对象字典可以这样理解,“一切信息皆对象”,比如某个数据,属性,设备ID,大小,方向,某个IO变量的值等等。对象字典就是对象的集合。每个对象都有对应的索引和索引。根据索引和子索引就能找到字典里的字(对象)。

EtherCAT通信DS402协议----PDO映射

weixin_43956732的博客

06-08

6513

EtherCAT通信DS402协议----PDO映射PDO 映射PDO 分配PDO 映射的步骤

EtherCAT 从站的过程数据由同步管理器通道对象组成,每个同步管理器通道对象描述了 EtherCAT 过程数据的一致性区域,并且包含多个过程数据对象。具备应用控制功能的EtherCAT 从站应该支持 PDO 映射和 SM-PDO-Assign 对象的读取。关于PDO的介绍可以参照我写的CanOpen通信----PDO与SDO

PDO 映射

PDO 映射涉及对象字典到 PDOs 的应用对象(实时过程数据)映射关

基于 Beckhoff TwinCAT3 主站对过程数据对象PDO (Process Data Object)动态配置使用经验总结

FL1717的博客

07-21

704

EtherCAT 是一种实时以太网技术,由一个主站设备和多个从站设备组成。主站设备使用标准的以太网控制器,具有良好的兼容性,任何具有网络接口的计算 机和具有以太网控制的嵌入式设备都可以作为。对于实际电流:驱动里添加出来,看看你驱动器的pdo里有没有这个电流值。在这右键添加新的过程数据,根据你的驱动器的说明,找对应的电流变量。选中驱动,右边的页面有一个process data。PC 端计算 机而言,主站控制器多采用。PDO 可分成两种:发送的 TxPDO。

EtherCAT xml配置文件编写和DSP程序适配,以 ET1100与DSP28335为例(2)

csdn392746239的博客

01-09

4109

Soem-1个电机PP模式 界面显示目标位置达到状态-添加代码注释-CSDN - EtherCAT主站-SOEM专栏的源代码

01-10

Soem-1个电机PP模式 界面显示目标位置达到状态-添加代码注释-CSDN.zip

EtherCAT主站-SOEM专栏的源代码。

EtherCAT主站SOEM -- 17 --Qt-Soem控制电机走PP模式并且界面显示目标位置达到状态,这一篇博客的源代码,博客链接( 正在编写,2024.1.21发布, https )。

注意: 该项目源代码提供了 QT-SOEM 配置从站到OP状态,并且对1个EtherCAT从站 电机进行操作,操作1个电机走PP模式 界面显示目标位置达到状态,正转达到目标位置,反转达到目标位置,及停止。

源代码 主要功能:

获取网卡信息,绑定网卡,配置EtherCAT网络,等待从站进入OP状态,检查EtherCAT主站和从站状等等。

Soem主站识别到 几 个从站。

并且操作1个电机走PP模式 界面显示目标位置达到状态,正转达到目标位置,反转达到目标位置,及电机运行过程中停止。

ethercat-1.5.2.rar_Ethercat主站_ethercat 1.5.2_igh_igh Windows_mas

07-14

主要是关于igh开源主站的介绍以及使用。这个可以作为参考文档。

Soem-跟从站通讯到OP状态-添加代码注释-CSDN - EtherCAT主站-SOEM专栏的源代码

01-09

Soem-跟从站通讯到OP状态-添加备注-CSDN.zip

EtherCAT主站-SOEM专栏的源代码。

EtherCAT主站SOEM -- 9 -- SOEM之基于QT搭建自己的EtherCAT主站,这一篇博客的源代码,博客链接( https://blog.csdn.net/qq_50808730/article/details/134361490 )。

注意: 该项目源代码只是提供了 QT-SOEM 配置从站到OP状态,没有对EtherCAT从站进行操作。

源代码 主要功能:

获取网卡信息,绑定网卡,配置EtherCAT网络,等待从站进入OP状态,检查EtherCAT主站和从站状等等。

Soem主站识别到 几 个从站。

EtherCAT主站芯片(ECM-XF)数据手册+参考原理图+使用说明

05-27

EtherCAT主站芯片(ECM-XF)数据手册+参考原理图+使用说明

要想自己打板玩一玩Ethercat的老哥们往这里看

EtherCAT使用与解析-关于SDO与PDO关系

lswdcyy的博客

04-07

1万+

SDO和PDO都是基于CANopen的对象字典进行讨论的,CoE基于CANopen协议进行了补充,使之可以应用在EtherCAT上,两者都是建立在CANopen的对象字典之上的,且针对的对象字典是同一个。

PDO有一些是用于特殊功能的,并不能随便乱用!

关于CoE,有一些需要注意一下,就是RxPDO和TxPDO这两种其实本质上都是PDO,都是基于索引+子索引+数据大小的模式,不同之处在于,这两...

EtherCAT使用与解析-关于ethercat应用层使用

lswdcyy的博客

04-11

9551

下载ethercat源码并且安装好之后,测试ethercat使用可以遵循以下步骤:

1.开启ethercat系统:执行这一步需要确保一点,那就是按照ethercat源码中的README指导将一些需要的文件复制以及创建软连接到/opt/init.d/ehtercat以及/opt/sysconfig/ethercat这两个文件,前者是系统启动文件,后者是系统配置文件,说起这个配置文件,其实就是一份变...

EtherCAT使用与解析-从站配置子状态机(init->preop)

lswdcyy的博客

04-05

4588

从站配置的子状态机是./master/fsm_slave_config.h/ec_fsm_slave_config结构体

struct ec_fsm_slave_config

{

ec_datagram_t *datagram; /**< Datagram used in the state machine. */

ec_fsm_change_t *fsm_change...

ethercat pdo映射

08-30

EtherCAT(Ethernet for Control Automation Technology)是一种实时以太网通信协议,它被广泛应用于工业自动化控制系统中。

EtherCAT PDO(Process Data Object)映射是EtherCAT网络中通信数据的传输方式之一。PDO允许直接传输过程数据,而不需要额外的通信协议。

PDO映射的过程可以分为两个步骤。首先是PDO的配置,这包括定义PDO映射的对象和数据类型,以及指定PDO的传输类型、数据长度等参数。其次是PDO的映射,即将定义的PDO对象与实际的硬件设备或I/O模块进行关联。

在EtherCAT网络中,PDO映射可以通过专门的配置工具或编程接口进行设置。通过配置工具,可以直观地定义PDO对象、数据类型和映射关系。而通过编程接口,开发者可以自定义PDO的配置和映射过程,实现更灵活的通信需求。

使用PDO映射的好处是可以提高通信的实时性和可靠性。由于PDO直接传输过程数据,避免了额外的协议栈和数据处理过程,减少了通信的延迟和资源消耗。此外,PDO映射还可以针对实际需求进行灵活配置,提高系统的可配置性和可扩展性。

总之,EtherCAT PDO映射是一种基于EtherCAT网络的通信数据传输方式,通过配置和映射PDO对象,可以实现高效实时的数据传输,提高工业自动化控制系统的性能和可靠性。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

会笑的那双眼

CSDN认证博客专家

CSDN认证企业博客

码龄9年

暂无认证

105

原创

2万+

周排名

9万+

总排名

14万+

访问

等级

1953

积分

83

粉丝

61

获赞

52

评论

313

收藏

私信

关注

分类专栏

html5

8篇

css

11篇

c++

7篇

程序技巧

1篇

test

1篇

软件工具使用

2篇

make

2篇

base_c_c++

1篇

protobuf

1篇

git

1篇

nginx

2篇

markdown

1篇

开源库

1篇

线程池

2篇

vmware

1篇

tcp

5篇

websocket

1篇

http

1篇

linux内核

10篇

个人感悟

算法

1篇

STL源码

9篇

其他

1篇

EtherCAT_Linuxcnc

2篇

EtherCAT

11篇

库使用

1篇

linux

qt

11篇

python

2篇

IIS

1篇

软件发布

1篇

清理c盘

1篇

架构

最新评论

EtherCAT使用与解析-ethercat空闲阶段函数解析

开启伯恩:

”这里还有个点就是在接收过程中需要进行多次接收“,这个多次接收,在进入op后,怎么处理?

EtherCAT使用与解析-关于SDO与PDO关系

huangbojun2008:

1600,1800,1c00之类的都属于SDO吧?

EtherCAT使用与解析-ethercat系统内核模块加载与初始化操作

无 过:

对,然后我下载回来了,十分感谢您,参考你的博客才能安装到最后一步的,感谢!

EtherCAT使用与解析-ethercat系统内核模块加载与初始化操作

会笑的那双眼:

这个看样子就是缺内核模块了,是没执行安装吗?正常编译后应该有个安装过程的。

EtherCAT使用与解析-ethercat系统内核模块加载与初始化操作

会笑的那双眼:

不需要,那些是底层的东西,ethercat-master自己做的

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

css选择器

px_em_rem

line-height

2023年22篇

2022年29篇

2021年22篇

2020年18篇

2018年14篇

目录

目录

分类专栏

html5

8篇

css

11篇

c++

7篇

程序技巧

1篇

test

1篇

软件工具使用

2篇

make

2篇

base_c_c++

1篇

protobuf

1篇

git

1篇

nginx

2篇

markdown

1篇

开源库

1篇

线程池

2篇

vmware

1篇

tcp

5篇

websocket

1篇

http

1篇

linux内核

10篇

个人感悟

算法

1篇

STL源码

9篇

其他

1篇

EtherCAT_Linuxcnc

2篇

EtherCAT

11篇

库使用

1篇

linux

qt

11篇

python

2篇

IIS

1篇

软件发布

1篇

清理c盘

1篇

架构

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

EtherCAT学习记录 - 知乎

EtherCAT学习记录 - 知乎首发于技术资料切换模式写文章登录/注册EtherCAT学习记录EXyang在逻辑世界的孤独濒危物种简介这篇文档是从我在学习EtherCAT的过程中,从一个学习者的角度去写的,主要是趁着记忆犹新的时候,记载了解到的知识点,并把当时通过时间查找资料总结的概念固化下来,以便帮助后来的新人。EtherCAT这个名词不仅仅只是代表着一个报文数据格式约定层面的通讯协议,它的从设备是需要使用专用的通信芯片才可以完成传输的,比如EtherCAT的开发者“倍福(Beckhoff)公司”的官方原厂芯片ET1100,其他的各个芯片厂商会取得倍福公司的内核授权,开发相关芯片,如亚信的AX58100等等。从物理层来看EtherCAT的通信电信号和我们普通的以太网一样,通信线也是使用普通网线+RJ45接口、或者光纤连接。因此理论上任意一个网卡模块都可以收发EtherCAT的数据内容,因此对于主站而言,使用普通的电脑通过网线连接一个EtherCAT从站就可以实现通信了,但是EtherCAT对于从站的要求就有特殊的定义,必须要使用专业的芯片才能完成,这个芯片被称为ESC。关于从站芯片的特殊性、从站芯片的数据处理以及实现原理,本文不对此进行深入介绍,因为这部分内容参考倍福公司文档、视频;以及网上的各种资料可以有更好的理解,何况其内容之多是不适合用文档进行描述,本文只是重点介绍应用开发人员需要了解的EtherCAT的通信知识,帮助开发者上手EtherCAT的通信理解。简单的说,应用开发者可以把EtherCAT分为两层:链路层和应用层,本文是以EtherCAT的从设备开发上,对这两层进行介绍。——EXyang1、EtherCAT链路层EtherCAT的从设备是必需要使用专用的通信模块才能实现的,从设备方案上一般是使用MCU(或其他控制器)+ESC芯片来实现。链路层的功能就是在ESC芯片上完成解析、发送的;通过配置ESC芯片,使芯片正常运行链路层功能并把应用层的数据交给MCU。ESC芯片还具有一个特点,那就是通常会给这个芯片外挂一个EEPROM存储器,里面可以保存一些芯片初始化的寄存器配置,这样就不需要每次上电后由MCU或主站来进行配置了。对于开发者而言,链路层的原理只需要知道EtherCAT的模型概念:报文是由主站发出,然后像一条列车一样发往各个从站,每个从站认为是串联起来的,会按照目前串联的位置顺序对数据进行发送,就像是列车的轨道一样;每到一站,数据就像货物一样可以以极快的速度进行上下车,到达最后一站就开始原路返回(在网线上看就是在同一根网线里的TX和RX,其中TX就是列车出发的方向,RX就是返程的方向。每个从设备一般有两个以太网口,一个口对接上一个从设备,另一个对接下一个从设备,而对应连接的两条网线在本地被“连接”成了一条网线,所以整个网络的所有网线可以认为是同一根网线。),数据每经过一个往返就完成了一次通信,主站就是列车的起始站,所有通信都是由主站发起并把控的。1.1、EtherCAT数据帧格式首先,需要了解EtherCAT帧格式,如图:如图所示,报文的起始数据我们看到了熟悉的内容:以太网帧头,只是其中的帧类型是EtherCAT专有的0X88A4,后面的就是EtherCAT的数据内容了。这与我们熟知的网络通信格式不同,不是遵循着TCP/IP的分层格式,没有网络层和传输层。图中清晰明了的显示了EtherCAT的格式中的各个部分,其中“第三行”的子报文格式结构中的“数据”段就是属于应用层的内容了(也称为一个“邮箱”数据),而其他部分都是由EtherCAT的链路层进行解析的,MCU不需要也无法参与其解析工作。帧格式说明如下图所示(列出了除了子报文格式的其他内容,子报文格式放到1.2章中进行说明):其实EtherCAT也还是能支持嵌入了UDP/IP格式的数据帧格式的(只是EtherCAT数据段会让出28个字节长度给UDP/IP段使用),如图:1.2、EtherCAT链路层通信机制要了解EtherCAT的链路层通信机制,首先就要明白EtherCAT通信链路层的通信“目标”,也就是通信到底是需要交换什么东西,数据内容又是怎么呈现的?这个问题的答案就是:EtherCAT的链路层定义每一个从设备都具有一个数据空间,被称为DPRAM,这段空间长度为16位,范围为0x0000~FFFF,主站与从站的通信目标就是能够读、写这段空间内允许被访问的数据。这段空间存在于从站的ESC芯片里,主站和从站MCU都可以访问这段空间(这段空间需要SM进行管理,后文会进行说明),从而作为中间缓存提供给应用层和主站之间建立起通信的桥梁。好,明确了这个目标之后,我们就要开始了解实现这一目标的方法了,我们可以分两步来进行:1、主站与从站ESC芯片通信,并可以通知MCU数据的到达等功能。2、从站MCU与ESC芯片通信。其中,第1步就是链路层的通信机制需要实现的内容了,这个通信机制主要的内容就是子报文来实现的。关于子报文,我们从上文的1.1章可以看到一个完整EtherCAT数据包中可以有多个子报文,这里的多个子报文并不是指有几个从设备就一定对应着有几个子报文,而是每个子报文中都有自己的指令逻辑可以寻址找到要通信的从站。1.2.1、子报文说明配合1.1章中的EtherCAT数据帧格式,子报文格式说明如图:简单的说,主站发出来的子报文就是通过上图中的“命令”配合“地址区”和“长度”寻址到目标从设备,从而对“数据区”中的内容进行读、写操作。这里主要就是对“命令”、“地址区”、“长度”、“数据区”四个部分进行说明,其他的内容不是初学者急需了解的,可以查看相关资料就行。 首先需要了解一下子报文的命令码: 一个子报文想寻址到要找的从站,可以分四种命令:顺序、设置、逻辑、广播寻址。与上图中的指令描述一一对应。1.2.1.1、顺序寻址与设置寻址顺序寻址:就是按照网络连接的顺序,从主站往后数的从站编号,按照负数递减寻址对应的从站,比如0为第一个从站,-1为第二个从站……依次递推。设置寻址:就是给每个从设备分配一个“从站地址”,通过找到对应的从站地址来确定通信的从站,也是传统主从网络中常见的形式。从站地址可以在ESC外挂的EEPROM中预先设置好,也可以是通信过程中进行修改。由于这两种寻址方式只是固定地址与位置顺序的区别,其他的方面几乎一致,所以也统称为“设备寻址”,设备寻址的指令对子报文格式中的“地址区”的使用如下图: 其中地址区被分为16位的从站地址+16位的从站内存地址,再配合子报文格式中的“长度”和“数据区”,子报文就找到要寻址的从设备,并对数据内容进行交互了。顺序寻址只是在网络初始化阶段时被使用,对每个从站设备的从站地址进行读写,而后面的通信通常都是使用设置寻址来进行。1.2.1.2、逻辑寻址 逻辑寻址是另一种更加灵活的寻址方式,基本概念主要需要了解以下几点: 1、我们从前文知道了每个从站的ESC芯片中都有一个16位长度的物理空间,其实主站也有自己的空间,不过是32位长度的,4G大小的“数据逻辑地址”空间。 2、逻辑寻址就是把主站的“数据逻辑地址”与从站的“物理空间”映射起来,一旦映射好了之后,主站访问从站数据就像是访问自己的内部空间一样,只需要发出指定要读写的“数据逻辑地址”即可达成目的。所以使用逻辑寻址的子报文格式中的“地址区”的使用就不是前文的设备寻址的格式了,而是一整段32位地址区来表示主站要访问的“数据逻辑地址”。 3、主站的“数据逻辑地址”与从站ESC的“物理空间”映射是需要在使用逻辑寻址指令通信之前就映射好,进行这个映射功能就是由从站的ESC芯片内的FMMU完成的。 由于FMMU是ESC中的一个功能模块,在ESC中有专门配置FMMU的相关寄存器,寄存器的具体地址和FMMU的个数可以查看具体使用的ESC芯片手册,但是寄存器的内容都是一样的,如图是一个映射的例子:如图中的例子,映射一旦分配好了之后,主站就可以在子报文中使用逻辑寻址的相关指令,访问“数据逻辑地址”0x00014711时,就可以操作配置了这个FMMU的从站的0x0F01的物理地址的数据了。这里可以看出逻辑寻址有以下几个特点: 1、逻辑寻址完全不关心从站的地址,只关心有配置了FMMU的从站是否映射了当前要访问的逻辑地址。2、多个从站都可以配置FMMU映射到主站的同一片逻辑地址,这种情况下主站对一个逻辑地址的操作就可以同时对多个映射的从站进行操作。1.2.2、存储同步管理SM在前文中我们已经了解到了EtherCAT的链路层通信机制,也就是主站是怎么与从站ESC芯片的物理空间进行数据交互的,那么很容易联想到一个问题:ESC的物理空间既可以被主站操作,也可以被从站的MCU操作,怎么保证这两者的操作的正确性,以及通知对方另一方有最新的操作需要处理?这就是ESC芯片中的一个功能模块:存储同步管理(SM)的功能需要解决的了,SM用于阻止主站和从站MCU同时访问 ESC存储区,确保数据的一致性,以及通知MCU数据到达等功能。也就是说从站MCU与主站之间通信需要指定ESC的物理空间作为缓存,那么这片缓存必然要被SM进行管理才可以合理的使用,SM管理的区域就是从站MCU应用层与主站之间的通信交互通道。SM既然是ESC芯片内的一个功能块,也和FMMU一样,有专门的寄存器进行配置,具体可以查看ESC芯片手册,寄存器会有以下功能: 这里不对SM寄存器多做介绍,具体内容还是查看芯片手册,但是需要说明的是SM中可以配置它所管理的物理地址,可以配合FMMU共同指向某片物理空间,使这片空间既可以被逻辑寻址所访问,也同时受到SM的管理:当SM配合FMMU共同指向一片物理空间的情况,就是用来传输“周期性过程数据”的,也就是“PDO数据”,此时SM中的运行模式配置为3个缓存区以保证数据的一致性。从站MCU通过分别使用SM2和SM3两个通道来接收和发送主站的数据所指向的物理空间由于有FMMU映射,可以使用逻辑寻址进行访问。当SM不配合FMMU共同来管理一片物理空间时,就是用来传输“非周期性数据”的,也就是“邮箱数据”,此时SM中的运行模式配置为1个缓存区,而从站MCU通过分别使用SM0和SM1两个通道来接收和发送主站的数据以避免读写冲突。这一片物理空间由于没有FMMU管理,所以不能使用逻辑寻址访问,而是通过设置寻址进行访问的。这里的“PDO数据”、“邮箱数据”就是ESC要与从站MCU交互的数据了,这一部分放到EtherCAT应用层进行描述。2、EtherCAT应用层首先,先看一张EtherCAT描述总图:在结合了前文的链路层讲解之后,配合这张图进行进行理解,会有更直观的感受,图中的DL层就是前文1章节的内容了,前文最后提到了邮箱数据和过程数据,就是要提交给应用层的内容了,所以我们可以看到图中的AL层就是MCU内部要处理的应用层了。EtherCAT应用层协议支持VOE\FOE\EOE\COE等,本文的应用层主要介绍的是COE,也就是CanOpen Over EtherCAT,顾名思义也就是把CanOpen协议通过EtherCAT来实现,CanOpen协议在本文中不做过多的介绍,可以查看CanOpen相关的资料进行了解,在了解COE这部分内容时,要建立在对CanOpen协议了解的基础上进行,本文认为读者已经了解了CanOpen的对象字典、SDO、PDO的前提下进行说明。2.1、CanOpen与COE在看到COE这个词的时候,最容易想到的一个问题就是:原本CanOpen是基于CAN通信方式来设计并实现的,与EtherCAT的通信链路不一样啊,CAN报文含有的ID和8字节数据段,也不是像EtherCAT的列车式的数据运输方式,那么是怎么移植到EtherCAT上来进行通信的呢?其实就是EtherCAT把CAN通信中的ID部分做了一些变化,这里就以CanOpen中的两个重要通信数据:SDO和PDO进行描述。2.1.1、COE中实现SDO对于SDO数据而言:COE中把CAN ID的概念变成一个“类型”参数与CAN的数据段8字节内容全部放到EtherCAT的子报文格式中的“数据区”里,作为一个“邮箱数据”进行发送。邮箱具有专门的格式,如图所示:邮箱数据头说明:邮箱协议中的“命令”格式如下图: 邮箱协议的“命令”说明:由以上内容,我们看到邮箱的数据格式里,在“邮箱数据头”和“命令”中各有一个“类型”,一个是用来指示使用的应用层协议类型的,一个是用来指示这段数据是应用层协议中的什么服务类型的。图中展示的就是COE协议类型的服务类型。这里我们看到了熟悉的名字:SDO请求和响应(这就替代了原本CAN通信中的SDO数据的ID),而紧随其后的“命令相关数据”就是原本CAN通信中的8字节数据部分。格式如下图所示:关于标准CanOpen的SDO协议内容这里不做介绍,在上图可以看到SDO数据后面还有一段“可选扩展数据”,COE相当于对SDO数据做了改良:在标准CanOpen协议的寄存上,可以使一个SDO数据发送更多的数据量,而不是仅限于原本使用CAN通信只能发送4个字节的数据了。MCU对邮箱数据的收发接口可以看第第1.2.2章,SM的介绍。2.1.1、COE中实现PDO 从上文的SDO介绍中,我们看到COE协议类型的服务类型里除了有SDO类型,还有PDO类型,那么PDO是否就如同SDO的实现那样,仅仅只是更改这个类型参数,并解析不同的数据格式就可以实现了呢?这是初学者容易混淆的一个地方,也是COE对于PDO数据定义上我认为比较乱的一个问题,这个问题的答案是否定的;其实,邮箱协议格式里的COE服务类型的PDO类型只是一个预留,并不使用。可以说邮箱只是用来实现SDO数据传输的,PDO数据传输与邮箱数据并没有关联。现在回过头看上文的第1.2.2章,SM的介绍。有提到SM配合FMMU的逻辑寻址通信方式,这才是实现COE的PDO数据传输的方式。也可以看第2章开头的EtherCAT描述总图,里面也有显示PDO数据的传输方法。其实PDO数据采用这个方式也是符合了CanOpen原本的设计理念,PDO的数据报文是为了快速传输对象字典的内容,数据段里全是实际数据,不用解析报文协议格式,如果COE中使用邮箱来进行传输其实是违背这一原则的。PDO数据格式如下图所示:那么很显然,COE中的PDO报文也同样要由映射参数进行映射,如上图所示的例子中,某一个子报文发送的内容是PDO数据,这个子报文通过逻辑寻址找到与逻辑地址映射匹配的从站ESC,并把数据传入FMMU映射的DPRAM物理空间中,这段空间同时也被SM2所管理,于是SM2通知从站MCU从ESC中取走PDO数据。MCU拿到这段数据之后会根据对象字典进行查找,这里要重点介绍与CanOpen映射逻辑的区别:1、CanOpen中PDO具有两个参数:“通信参数”和“映射参数”,在COE中不会使用CanOpen中定义的“通信参数”,COE在对象字典中占用了其他的索引定义了专用的参数进行替代,如图所示: 其中的0x1C00的子索引1~32定义SM0~31这32个通道的通信数据类型,如果定义的是过程数据类型,0x1C10~0x1C2F就会生效,用来定义SM0~31所使用的CanOpen的映射参数(RPDO映射参数:索引=1600~17ffh,TPDO映射参数:索引=1A00~1Bffh)。2、由于COE在一条报文中可以包含多个PDO,相当于是CanOpen的多个PDO数据合并到一起发送了,所以需要做两次映射,第一次是根据获取数据使用的SM(n)通道通过0x1C10+(n)对象字典中的参数确认这条COE报文中有几个PDO,以及每个PDO映射的CanOpen的映射参数,第二次就是根据CanOpen的映射参数进行PDO映射,确认具体的对象内容。 以上两点区别,配前面的PDO格式说明的例子,需要反复阅读理解。编辑于 2023-04-07 19:08・IP 属地广东Ethernet历史记录记录系统​赞同 53​​6 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录技

EtherCAT数据帧抓包解析(RxPDO配置过程详解) - Panda990 - 博客园

EtherCAT数据帧抓包解析(RxPDO配置过程详解) - Panda990 - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

panda990

博客园

首页

新随笔

联系

订阅

管理

EtherCAT数据帧抓包解析(RxPDO配置过程详解)

EtherCAT数据帧抓包解析(RxPDO配置过程详解)

目录

EthereCAT报文数据帧结构 2

使用顺序寻址命令设置从站地址(从站地址也叫Ado,Slave Address) 6

配置SM存储同步管理器(SyncManager) 8

设置FMMU映射及用处和原理 12

配置FMMU有什么好处: 15

配置PDO 18

OP运行模式PDO数据交互的报文 23

阅读前需要掌握EtherCAT基础知识,这里记录的是一个RxPDO配置的完整历程。

 

 

 博客园上传文件的时候docx文件颜色不见了,我传个pdf,点这里下载

 

EthereCAT报文数据帧结构

这是主站运行后发的第一帧。

为了方便看,我标个色:

 

填充段:数据段后到FSC段(da 26 ad df)白色的是填充字段,要填充到最短44字节,为什么限制了最短字节,可以看这篇文章:在传统以太网中为什么要有最小帧长度和最大帧长度的限制 - 道客巴巴 (doc88.com);

目的地址:ff ff ff ff ff ff6个f说明主从站采用直连模式,如果是开放模式,即EtherCAT网段连接到一个标志的以太网交换机上,那这个地址为第一个从站的ISO/IEC 8802.3的MAC地址。

源地址:00 00 00 00 00 主站的MAC地址。

帧类型:88a4 固定为0x88A4,如果使用UDP/IP协议有传输EtherCAT数据,需开放UDP端口0x88A4,如下图所示:

EtherCAT数据长度:0d所有子报文长度总和,该数据长度为11位,发过来是完整的两字节小端模式,正确排序是0x100d,把0x100d写成二进制:

0001 0000 0000 1011;

把无关的位用*代替:

0001 **** **** ****高四位,是类型;

**** 1*** **** ****高第五位是保留位;

**** *000 0000 1011剩余的低11位是数据长度。

类型:1表示与从站通讯,其余保留。

命令:08 寻址方式及读写方式,EtherCAT所有命令如下表所示:

寻址方式

读写模式

命令名称和编号

解释

WKC

空指令

----

NOP(0) No Operation

没有操作

0

顺序寻址

读数据

APRD(1) Auto Increment Read

主站使用顺序寻址从从站读取一定长度数据,从站对地址加1

1

写数据

APWR(2) Auto Increment Write

主站使用顺序寻址向从站写入一定长度的数据,从站对地址加1

1

读写

APRW(3) Auto Increment Read Write

主站使用顺序寻址与从站交换数据,从站对地址加1

3

设置寻址

读数据

FPRD(4) Configured Address Read

主站使用设置寻址从从站读取一定长度的数据

1

写数据

FPWR(5) Configured Address Write

主站使用设置寻址向从站写入一定长度的数据

1

读写

FPRW(6) Configured Address Read Write

主站使用设置寻址与从站交换数据

3

广播寻址

读数据

BRD(7) Broadcast Read

主站从所有从站的物理地址读取数据并做逻辑或操作,每个从站对地址加1

与寻址到从站个数相关

写数据

BWR(8) Broadcast Write

主站广播写入所有从站,每个从站对地址加1

读写

BRW(9) Broadcast Read Write

主站与所有从站交换数据,对读取的数据做逻辑或操作,每个从站对地址加1,一般不使用该命令

逻辑寻址

读数据

LRD(10) Logical Memory Read

读取的逻辑地址和从站设置FMMU一致时,读取一定长度的数据

写数据

LWR(11) Logical Memory Write

写入的逻辑地址和从站设置FMMU一致时,写入一定长度的数据

读写

LRW(12) Logical Memory Read Write

逻辑地址和从站设置FMMU一致时从站交换数据

顺序寻址

读,多重写

ARMW(13) Auto Increment Read Multiple Write

由从站读取数据,并写入以后所有从站相同的地址

设置寻址

FRMW(14) Configured Read Multiple Write

这条数据的08表示使用广播寻址对所有从站写入数据。

索引:80 BWR命令下每发出1条子报文,索引会加1,范围在0x80~0xff,注意这个准确的应该叫帧编码,不要跟字典的索引混淆。不同命令对于帧编码的使用是不同。

地址区: 00 00 01 01 除逻辑寻址命令外,地址区会拆分成Slave Addr 和 Offset Addr,也就是Slave Addr:0x0000,Offset Addr:0x0101,注意一下,这是小端模式,要怎么读你懂的;如果是逻辑寻址,地址区就只有一个32位的 Log Addr:0x 01010000。

长度:0100 报文数据区长度,小端模式,正确排序是0x0001,将它扩写成二进制:

0000 0000 0000 0001;

把无关的位用*代替:

0*** **** **** ****最高位,就是帧结构里的M,为0表示只有一帧,为1表示后续还有后续报文;

*000 0*** **** ****高2、3、4位是保留位,但实际情况下,使用wireshark解析,高第二位的定义是.0.. .... .... .... = Round trip: Frame is not circulating;

**** *000 0000 0001剩余的低11位是数据长度。

状态位:0000中断到来标志。

数据:00 报文结构,用户定义。

WKC:00 WKC了子报文被从站操作的次数,主站为每个通信服务子报文设置预期的WKC。发送子报文中的工作计数器初值为0,子报文被从站正确处理后,工作计数器的值将增加一个增量,主站比较返回子报文中的WKC和预期WKC来判断子报文是否被正确处理。WKC由ESC在处理数据帧的同时进行处理,不同的通信服务对WKC的增加方式不同。

FCS:da26addf帧校验序列。

使用顺序寻址命令设置从站地址(从站地址也叫Ado,Slave Address)

此报文有两帧,第一帧给地址为0进行复位:

第二帧的0x3e9为使用设置寻址命令时所写入的地址:

偏移地址offset Addr0x0010是ESC芯片里的一个物理地址,对应的寄存器描述如下:

地址

名称

描述

复位值

0x0010~0x0011

0~15

设置站点地址

设置寻址所用地址(FPRD\FPWR和FPRW命令)

0

设置完成,使用设置寻址,从站地址(Slave Addr)为0x03e9就可以与目标从站通讯:

配置SM存储同步管理器(SyncManager)

SM相关寄存器信息:

偏移地址

名称

描述

复位值

+0x0 : 0x1

0~16

数据物理地址起始位

SM处理的第一个字节在ESC地址空间的起始位置

0

+0x2 : 0x3

0~16

SM数据长度

分配给SM通道的数据长度,必须大于1,否则SM将不被激活;设置为1时只使能看门狗

0

+0x4

0~7

SM控制寄存器

 

0~1

运行模式

00:3个缓存区模式

01:保留

10:单个缓存区模式

11:保留

00

2~3

方向

00:读,ECAT读访问,PDI写访问

01:写,ECAT写访问,PDI读访问

10:保留

11:保留

00

4

ECAT帧中断请求触发

0:不使能

1:使能

0

5

PDI中断请求触发

0:不使能

1:使能

0

6

看门狗触发

0:不使能

1:使能

 

7

保留

 

 

+0x5

0~7

SM状态寄存器

 

0

写中断

1:写操作完成后触发中断

0:读第一个字节后清除

0

1

读中断

1:写操作完成后触发中断

0:读第一个字节后清除

0

2

保留

 

 

3

单缓存状态

单缓存区模式:缓存区状态

0:缓存区空闲

1:缓存区满

0

4~5

多缓存状态

多缓存区模式:最后写入的缓存区

00:缓存区1

01:缓存区2

10:缓存区3

11:没有写入缓存区

11

6~7

保留

 

 

+0x6

0~7

ECAT帧控制SM激活

 

0

SM使能

0:不使能,不使用SM控制对内存的访问

1:使能,SM激活,控制设置其中的内存访问

0

1

重复请求

请求重复邮箱数据传输,主要与ECAT帧读邮箱一起使用

0

2~5

保留

 

 

6

ECAT帧访问事件锁存

0:无操作

1:EtherCAT主站读写一个缓存区后产生锁存事件

0

7

PDI访问事件锁存

0:无操作

1:PDI读写一个缓存区或PDI访问缓存区起始地址时产生锁存事件

0

+0x7

0~7

PDI控制SM

 

0

使SM无效

读和写的含义不同

读 0:正常操作,SM激活

1:SM无效,并锁定对内存区的访问

写 0:激活SM

1:请求SM无效,直到当前正在处理的数据帧结束

0

1

重复请求应答

与重复请求位相同时,表示PDI对前面设置的重复请求的应答

0

2~7

保留

 

0

这是配置SM2的数据帧,让SM2管理的从站物理地址为0x1800:

从站上会生成三个缓冲区,当0x1800有数据变动时,缓冲区同步数据,这样主站发起读的命令时可以快速将0x1800数据从缓冲区读走。当主站有数据需要写入0x1800的时候,先写入在缓冲区,从站有空再把数据搬过去0x1800,通过这样的机制来完成快速交互的目的,也保证了数据的安全与一致。

下面是配置SM3的数据帧,管理的地址为1C00:

配置SM0的数据帧,管理的地址为1000,用来SDO写邮箱:

配置SM0的数据帧,管理的地址为1400,用来SDO读邮箱:

设置FMMU映射及用处和原理

EtherCAT子报文可以使用逻辑寻址方式访问ESC内部存储空间,ESC使用FMMU通道实现逻辑地址映射。每个FMMU通道使用16个字节配置寄存器,从0x0600开始。下表是FMMU通道配置寄存器的含义:

偏移地址

名称

描述

复位值

+0x0~0x3

0~31

数据逻辑其实地址

在EtherCAT地址空间内的逻辑起始地址

0

+0x4~0x5

x0~15

数据长度(字节数)

从第一个逻辑FMMU字节到最后一个FMMU字节的偏移量增加1字节,例如,如果使用2个字节,取值为2

0

+0x6

0~2

数据逻辑起始位

应该映射的逻辑起始位,从最低有效位(=0)到最高有效位(=7)计数

0

3~7

保留

 

 

+0x7

0~2

数据逻辑终止位

应该映射的最后一位,从最低有效位(=0)到最高有效位(=7)计数

0

3~7

保留

 

 

+0x8~0x9

0~15

从站物理内存起始位置

物理起始地址,影射到逻辑起始地址

0

+0xA

0~2

物理内存起始位置

物理起始位,影射到逻辑起始位

0

3~7

保留

 

 

+0xB

0

读操作控制

0:无读访问映射

1:使用读访问映射

0

1

写操作控制

0:无写访问映射

1:使用写访问映射

0

2~7

保留

 

 

+0xC

0

激活

0:不激活FMMU

1:激活FMMU,用以检查根据映射配置所有映射逻辑地址块

0

1~7

保留

 

 

+0xD~+0xF

0~23

保留

 

0

查看捕获到的配置FMMU相关报文,第一帧是将十六个通道的FMMU全部置为0:

设置物理地址0x1800的FMMU映射为0x12000:

设置物理地址0x1C00的FMMU映射为0x11000:

设置缓冲区状态0x80D的FMMU映射0x40000:

对应ZLGEtherCATStudio(周立功EtherCAT主站)上位机设置:

上图中画红色方框的是生成信息的总览。

配置FMMU有什么好处:

通过上方的操作,主站就可以通过逻辑寻址快速访问某一ESC上0x1800、0x1c00、0x080D的数据,这样做的好处,比如我使用设置寻址范文1号从站的0x1800的数据时,需要先找到1号从站,然后告诉1号从站说把0x1800的数据拷给我,从站确认没东西在写或者读那块地址,再把那段地址的数据读出来填充到主站发过来的数据帧上(这里挺浪费时间跟容易数据混乱的,FMMU解决不了问题,所以又创造出了SM这个东西)。

你可能会想,那就发条报文设置寻址读呗,配置FMMU不也得寻个址,脱了裤子放屁,如果只是读一个从站的数据,你这么想也是没问题的,但我要你拿100个从站的数据怎么办,你是不是得发100条子报文,这么做增加了网络负载,也增加了主站程序发送报文时填充数据的时间开销。重点来了,有了FMMU后,主站上的一段内存地址就跟从站的每个FMMU匹配上了,光打字可能不清楚,我画个图:

主站内存申请的地址

地址:0x10000

数据:1A

地址0x10010

数据:2B

地址0x10020

数据:3C

地址0x10030

数据:4D

地址0x10040

数据:5E

地址0x10050

数据:2F

从站1 FMMU

地址:0x10000

数据:1A

地址:0x10010

数据:FF

地址:0x10020

数据:FF

地址:0x10030

数据:FF

地址:0x10040

数据:FF

地址:0x10050

数据:FF

从站2 FMMU

地址:0x10000

数据:FF

地址:0x10010

数据:2B

地址:0x10020

数据:FF

地址:0x10030

数据:FF

地址:0x10040

数据:FF

地址:0x10050

数据:2F

从站3 FMMU

地址:0x10000

数据:FF

地址:0x10010

数据:FF

地址:0x10020

数据:3C

地址:0x10030

数据:FF

地址:0x10040

数据:FF

地址:0x10050

数据:FF

从站4 FMMU

地址:0x10000

数据:FF

地址:0x10010

数据:FF

地址:0x10020

数据:FF

地址:0x10030

数据:4D

地址:0x10040

数据:FF

地址:0x10050

数据:FF

从站5 FMMU

地址:0x10000

数据:FF

地址:0x10010

数据:FF

地址:0x10020

数据:FF

地址:0x10030

数据:FF

地址:0x10040

数据:5E

地址:0x10050

数据:FF

无背景为未配置FMMU通道,主站不会同步数据

有背景为配置了FMMU通道为读,主站同步数据

主站发送命令为LRD(逻辑寻址读)数据帧:逻辑地址0x10000,长度0x30,数据帧到达从站1,此时从站1匹配到主站要访问的0x10000,从站1的FMMU0x10000已经配置了映射到某某物理地址,就把数据搬到主站数据帧的对应位置上去,匹配到0x10010的地址时,从站发现FMMU没有配置,不做任何操作。主站数据帧发出到从站2的时候,从站2匹配0x10000地址时,发现FMMU没有配置该逻辑地址,跳过不处理,匹配到0x10010时,FMMU配置了,把数据搬上车,后续从站处理方法同理。

主站发送命令为LWR(逻辑寻址写)数据帧:假设添加背景色的地址,已经配置了FMMU该地址为写,此时数据处理的方式跟LRD大致相同,不同的是,从站会将主站发出的数据帧上的数据同步到本地。

主站发送命令为LRW(逻辑寻址读写)数据帧:假设添加背景色的地址,已经配置了FMMU该地址为读写访问,此时数据处理的方式跟LRD大致相同,不同的是,从站会将主站发出的数据帧上的数据同步到本地,将本地的数据填充到主站数据帧上。

配置PDO

经过FMMU映射,主站已经可以通过逻辑寻址0x12000、0x11000、0x40000快速访问从站物理地址0x1800、0x1C00、0x80D。

0x1800跟0x1C00是从站厂商决定的存放过程数据的地址,厂商通过程序将各个数据放到对应的地址上。

0x80D是SM1的数据更新标志位,主站到从站邮箱通讯用SM0,从站到主站邮箱通讯用SM1,所有数据交换都由主站发起的,如果从站有数据发送给主站,必须先将数据写入发送邮箱缓冲区,然后由主站来读取,于是主站可以通过将0x80D.3映射到逻辑地址0x40000,使用逻辑寻址周期性的读这一标志位。

现在,主站从站已经有协商好的过程数据(PDO)的逻辑存放地址了,下一步是主站跟从站统一PDO的数据结构,详细的说,主站想要从站在FMMU的0x12000逻辑地址上,放以下这几种数据:

对应从站物理地址0x1800,要在这个地址空间上放的是以上的数据结构(0x1800是从站厂商决定的,从站上跑的程序要将这些数据按规定的RxPDO结构排好放到0x1800上)。

主站和从站如何协商数据结构:

PDO是有分组的,每个从站PDO组数跟硬件相关,不同PDO组里的PDO子项不同,有的PDO分组可以修改,有的不能修改,这里先介绍PXPDO,主站决定使用哪组PDO后,将索引这组PDO的索引号(比如0x1601)写入邮箱的0x1c12,然后将PDO的各个子项索引(比如0x6060)写入邮箱的0x1601。

数据都需要经过SM0(物理地址0x1000邮箱数据地址,0x1000以上的地址,各个厂商有所不同),主站发送邮箱数据到SM0,从站根据数据结构解析数据(结构如下所示),按邮箱索引配置各个通讯参数。

为帮助理解,可以看下图描述:

主站将邮箱数据指令发送到从站的0x1000,从站程序解析指令,将‘0x1601索引号’写入索引0x1c12,将‘各PDO子项索引号’写入索引0x1601。

从站进入OP状态后,将根据设定,按照索引0x1601的子索引号访问对应的空间数据,并将数据复制到SM2管理的物理地址上,如0x1800。

邮箱

Phy:

0x1000

索引Index:0x1601(RxPDO2映射参数)

填入数据:0x60400010

0x60600008

索引Index:0x1c12(RXPDO索引管理)

填入数据:0x1601

从站

RxPDO分组有以下几种:

下面是主站给SM0发送邮箱数据,设定将‘0x1601索引号’填入邮箱的0x1C12索引中:

索引

子索引

名称

数据类型

出厂设置

1C12

0

RxPDO分配索引数

 

1

1

子索引1

 

0x1600

设定0x1C12 RXPDO分配索引数为1:

将PDO子项索引参数写入0x1601:

索引

子索引

 

1601h

00h

RPDO映射应用对象数目

01h

第1个映射应用对象

02h

第2个映射应用对象

40h

第40个映射应用对象

Data项0x6040是索引号,后面跟着的00、10分别是子索引、长度。

OP运行模式PDO数据交互的报文

EtherCAT每个通讯周期都会发送以下几个子报文:

一共四条,第一条子报文逻辑寻址读0x11000,是TxPDO读取,数据位全部为零,经过从站后,从站的FMMU单元会将0x11000上的数据填入到Data中;

第二条子报文逻辑寻址写0x12000,是RxPDO写入,数据位全部为零是因为我的程序给了零,后面的抓的数据帧被我删掉了,虽然都是0但都是参数,从站的FMMU会将这段数据读取后放到自己的0x12000上,不信你自己去试试;

第三条子报文是逻辑寻址读0x40000,读取邮箱状态位,它对应的是0x80D地址(SM1状态寄存器),从站的FMMU单元会把自己0x40000的数据填充到Data中,如果主站检测到回来的这条子报文第3位为1,它会一个设置寻址读0x1000的邮箱数据帧就甩到这个从站脸上,总结一下,就是这个0x40000的作用是从站用来告诉主站说,从站有数据要出来了,它憋不住了;

第四条子报文是DC同步,都是零是因为时钟没发生漂移。

posted @

2022-10-13 09:54 

Panda990 

阅读(4698) 

评论(1) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 Panda990

Powered by .NET 8.0 on Kubernetes

EtherCAT学习之路——对象字典 - 知乎

EtherCAT学习之路——对象字典 - 知乎首发于EtherCAT学习之路切换模式写文章登录/注册EtherCAT学习之路——对象字典白细胞1.对象字典CANopen 对象字典(OD: Object Dictionary)是 CANopen 协议最为核心的概念。所谓的对象字典就是一个有序的对象组,描述了对应 CANopen 节点的所有参数,包括通讯数据的存放位置也列入其索引,这个表变成可以传递形式就叫做 EDS 文件(电子数据文档Electronic Data Sheet)。对象字典,就像体检表,具备这个人每个功能的参数,便于用人单位(主站)进行合理分配工作。这部分引用自周立功的《CANopen轻松入门》,对于CANopen协议不清楚的地方,可以看看这本书,加强理解。图1-1 对象字典与体检表对象字典中的每个对象都描述了它的功能、名字、索引、子索引、数据类型,以及这个对象是否必需、读写属性等等。下表为通用通讯对象的举例:图1-2 通用通讯对象每个对象采用一个 16 位的索引值来寻址,这个索引值通常被称为索引,其范围在 0x0000到 0xFFFF 之间。为了避免数据大量时无索引可分配,所以在某些索引下也定义了一个 8 位的索引值,这个索引值通常被称为子索引,其范围是 0x00 到 0xFF 之间。子索引可以进一步描述对象的参数和功能等信息。图1-3 PDO对象总结来说,对象字典即是一张表,表中记录了各种各样的对象,这些对象可以是int32,bool这种通用数据类型,也可以是自定义的结构体数据类型。对象字典内使用Index来对对象进行索引,对象中还可以存在Sub-Index进一步描述对象的参数和功能。1.1 CoE(CANopen over EtherCAT)EtherCAT协议在应用层支持CANopen协议,并作了相应的扩充。CoE协议完全遵从CANopen协议,其对对象字典的定义也相同,如表1-3所示。表1-4列出了CoE通讯数据对象。其中针对EtherCAT通讯扩展了相关通讯对象0x1C00~0x1C4F,用于设置存储同步管理器的类型,通讯参数和PDO数据分配。图1-4 CoE对象字典定义图1-5 CoE通讯对象定义对于CoE对象字典,这里我们先不做具体的介绍,在后面的章节中会具体根据代码来具体说明。2.EtherCAT Slave Information中的对象字典描述2.1 EtherCAT Slave Information在EtherCAT Slave Information(ESI)用于描述从站参数及特性,使用xml的形式进行描述。EtherCAT配置工具通过ESI文件生成EtherCAT Network Information(ENI)。For each EtherCAT Slave a device description, the so called EtherCAT Slave Information (ESI) has tobe delivered. This is done in form of an XML file (eXtensible Markup Language). It describes EtherCAT specific as well as application specific features of the slave.The ESI file is used by an EtherCAT configuration tool to generate the EtherCAT Network Information(ENI).事实上,目前我也还没弄明白ESI具体细节,特别是从站具体是如何使用ESI的还不是很清楚。不过,只要知道ESI中包含哪些内容,与EtherCAT协议是怎样的一种对应关系,做从站开发也足够了。ESI的具体内容,我会在其他的文章中介绍,这里就详细讲一下ESI中的对象字典。ESI是用xml进行描述的,在例程中可以找到如AX58100-UC16-R1.xml的文件,用xmlspy打开如下图。图2-1 对象字典xmlspy将xml文件按照列表的形式进行排列,这里是ESI中Dictionary部分,也即是ESI中的对象字典描述。ESI中将对象字典分成了DataTypes和Objects两个部分,其中,Objects中描述了对象,DataTypes描述了对象的数据类型。2.2 ESI中的对象我所使用的例程中,共有23个对象,每一行即是一个对象的描述。包括对象的索引,名称,数据类型,位宽,还有一个Info域和Flags域。图2-2 对象字典Info域中包含了对象的子项,如对象0x7010就由9个子项构成,Sub-Index000和LED1~8。其中,Sub-Index000是对象中子索引的数目,0x7010中有LED1~8,所有其Sub-Index000就等于8。每一个有子项的对象的第一个子项都是Sub-Index000,且都表示该对象子索引的数目。Flags域描述对象的读写限制。2.3 对象的数据类型对象的数据类型是多种多样的,可以是通用类型UDINT(即uint32),也可以是结构体类型。BIT2,BOOL,DINT这些数据类型都是在ETG.1020中定义的;DT1601,DT1C12等则是根据CoE协议进行定义的;DT6000,DT7010则是一些用户自定义类型。图2-3 对象字典数据类型可以看到0x7010这个对象的子项和其数据类型的子项是一一对应起来的,都是包含了一个Sub-Index000和LED1~8。同时数据类型的子项中进一步描述了对象子项的子索引,名称,类型,位宽,比特偏移等信息。3.Slave Stack Code中的对象字典Slave Stack Code(SSC)是倍福提供的从站协议栈代码,SSC的具体内容会在另一篇文章中介绍,这里具体关注SSC中的对象字典。3.1 对象列表/**

*\brief EL9800 Application specific object dictionary

*

*/

TOBJECT OBJMEM ApplicationObjDic[] = {

/* Enum 0x0800 */

{NULL,NULL, 0x0800, {DEFTYPE_ENUM, 0x02 | (OBJCODE_REC << 8)}, asEntryDesc0x0800, 0, apEnum0800 },

/* Object 0x1601 */

{NULL,NULL, 0x1601, {DEFTYPE_PDOMAPPING, 10 | (OBJCODE_REC << 8)}, asEntryDesc0x1601, aName0x1601, &sDORxPDOMap, NULL, NULL, 0x0000 },

/* Object 0x1C12 */

{NULL,NULL, 0x1C12, {DEFTYPE_UNSIGNED16, 1 | (OBJCODE_ARR << 8)}, asPDOAssignEntryDesc, aName0x1C12, &sRxPDOassign, NULL, NULL, 0x0000 },

/* Object 0x7010 */

{NULL,NULL, 0x7010, {DEFTYPE_RECORD, 16 | (OBJCODE_REC << 8)}, asEntryDesc0x7010, aName0x7010, &sDOOutputs, NULL, NULL, 0x0000 },

{NULL,NULL, 0xFFFF, {0, 0}, NULL, NULL, NULL, NULL}};

#endif //#ifdef _OBJD_上面是我使用的例程中部分的对象定义,可以看到包含了对象的Index(如0x7010),对象的描述(如asEntryDesc0x7010),对象的名称(如aName0x7010),对象的实例(如sDOOutputs)。需要注意的一点是,这里的ApplicationObjDic并不是对象字典,ApplicationObjDic只是简单的把对象罗列出来。因为各种对象的数据类型是不相同的,所以,无法简单地以数组的形式来实现对象字典,在SSC中使用链表的形式来实现对象字典。准确来讲ApplicationObjDic中的每一行并不是一个对象,而是一个对象字典入口(Object Dictionary Entry),除了对象本身的描述之外,还包含了一些链表指针。不过,为了简单理解,可以先暂时把ApplicationObjDic理解成对象字典。3.2对象字典Entry下面是对象字典Entry的结构体定义:/**

* \brief Object dictionary entry structure

*/

typedef struct OBJ_ENTRY

{

struct OBJ_ENTRY *pPrev; /**< \brief Previous entry(object) in the object dictionary list*/

struct OBJ_ENTRY *pNext; /**< \brief Next entry(object) in the object dictionary list*/

UINT16 Index; /**< \brief Object index*/

TSDOINFOOBJDESC ObjDesc; /**< \brief Object access, type and code*/

OBJCONST TSDOINFOENTRYDESC OBJMEM *pEntryDesc; /**< \brief pointer to object entry descriptions*/

OBJCONST UCHAR OBJMEM *pName; /**< \brief Pointer to object and entry names*/

void MBXMEM *pVarPtr; /**< \brief Pointer to object buffer*/

UINT8 (* Read)( UINT16 Index, UINT8 Subindex, UINT32 Size, UINT16 MBXMEM * pData, UINT8 bCompleteAccess ); /**< \brief Function pointer to read function (if NULL default read function will be used)*/

UINT8 (* Write)( UINT16 Index, UINT8 Subindex, UINT32 Size, UINT16 MBXMEM * pData, UINT8 bCompleteAccess ); /**< \brief Function pointer to write function (if NULL default write function will be used)*/

UINT16 NonVolatileOffset; /**< \brief Offset within the non volatile memory (need to be defined for backup objects)*/

}

TOBJECT;*pPrev和*pNext是指向前链和后链的指针,通过*Prev和*pNext即可将各个对象链接起来,组成链表。Index即是对象索引;objDesc包含了“对象的数据类型”;*pEntryDesc是对象entry的描述,包含了“entry的数据类型和读写限制”;*pName是对象名称;*pVarPtr是对象的实例。objDesc中英文释义是object access,type and code。这里的object type与ESI中对象数据类型不是相同的东西。ESI中的对象数据类型是在*pEntryDesc中描述的。3.3 对象数据类型(pEntryDesc)下面以对象0x7010来介绍对象Entry描述:/**

* \brief Object 0x7010 (Digital output object) entry descriptions

*

* SubIndex 0 : read only

* SubIndex x : (One description for each led) read only and RxPdo mappable

* (x > 0)

*/

OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x7010[] = {

{DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ }, /* Subindex 000 */

{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 001: LED 1 */

{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 002: LED 2 */

{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 003: LED 3 */

{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 004: LED 4 */

{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 005: LED 5 */

{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 006: LED 6 */

{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 007: LED 7 */

{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 008: LED 8 */

{0x0000, 0x08, 0}

}; /* Subindex 008 for align */其中,第一列是数据类型,第二列是位宽,第三列是读写限制。图3-1 对象7010数据类型对象Entry描述即是ESI中的对象数据类型。3.4对象实例(pVarPtr)对象数据类型中描述了各个子项的数据类型,位宽,读写限制,还需要一个对象的实例来存储各子项的值。/** \brief 0x7010 (Digital output object) data structure*/

typedef struct OBJ_STRUCT_PACKED_START {

UINT16 u16SubIndex0; /**< \brief SubIndex 0*/

BOOLEAN(bLED1); /**< \brief LED 1*/

BOOLEAN(bLED2); /**< \brief LED 2*/

BOOLEAN(bLED3); /**< \brief LED 3*/

BOOLEAN(bLED4); /**< \brief LED 4*/

BOOLEAN(bLED5); /**< \brief LED 5*/

BOOLEAN(bLED6); /**< \brief LED 6*/

BOOLEAN(bLED7); /**< \brief LED 7*/

BOOLEAN(bLED8); /**< \brief LED 8*/

ALIGN8(SubIndex008) /**< \brief 8Bit alignment*/

} OBJ_STRUCT_PACKED_END

TOBJ7010;

PROTO TOBJ7010 sDOOutputs

#ifdef _EVALBOARD_

= {8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0}

#endif

;TOBJ7010定义了对象0x7010的数据结构,而sDOOutputs则是其实例。可以把这里的TOBJ7010视为ESI中的对象子项描述。原本以为写博客是一件很简单的事情,亲自动手以后才发现这么耗时间。计划每天1小时,每周写2篇博客的,谁知道1周也写不完一篇。动手写的时候,才发现其实还有不少的内容自己没有理清楚,需要重新整理;还有不少的细节记不清,需要重新查证。因为个人的精力实在有限,所以,有些地方(比如ESI文件的调用)自己也还没完全搞清楚就先写出来了,不足之处望请谅解。编辑于 2020-03-12 21:45工业物联网通信以太网(Ethernet)​赞同 53​​4 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录EtherCAT学习之路EtherCAT从站开

EtherCAT使用与解析-关于PDO映射 - 呵哈呵 - 博客园

EtherCAT使用与解析-关于PDO映射 - 呵哈呵 - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

welsey

博客园

首页

新随笔

联系

订阅

管理

EtherCAT使用与解析-关于PDO映射

关于PDO映射这部分,最好先参考https://blog.csdn.net/lswdcyy/article/details/105441470先了解一下配置相关的东西;

首先这里已经假设你已经了解完毕配置相关内容且已经初步了解PDO的是以什么样的形式存在于domain和子报文中,那么下面继续:

对于PDO映射,首先他是已经有了一个sync中关联PDO的这样一个链表的前提下才进行的PDO映射,那么这份配置你会发现在应用层例子中他有的时候没有,但有的时候又是存在的,然后使用ecrt_slave_config_pdos()函数进行PDO的在sync中的配置,之所以是可有可无的这样一个步骤,究其原因需要追溯到主站状态机部分,主站状态机在扫描SII信息(https://blog.csdn.net/lswdcyy/article/details/105332841)时会提取TxPDO和RxPDO到从站的同步管理器(SII信息中有PDO和sync相关的信息);然后在使用ecrt_master_slave_config()进行函数配置的时候会将对应从站的sync相关的PDO(master->slaves->sync)复制到从站配置部分。这样,即使不去人为的配置同步管理器和PDO的映射关系,也没什么影响。

当然另外一种就是使用ecrt_slave_config_pdos()函数对从站配置进行设置,该函数会将原本SII复制到的从站配置中的sync进行清除,而后依据新的配置进行设置:需要使用的配置结构如下:

typedef struct

{

uint16_t index; /**< PDO entry index. */

uint8_t subindex; /**< PDO entry subindex. */

uint8_t bit_length; /**< Size of the PDO entry in bit. */

} ec_pdo_entry_info_t;

typedef struct {

uint16_t index; /**< PDO index. */

unsigned int n_entries; /**< Number of PDO entries in \a entries to map.

Zero means, that the default mapping shall be

used (this can only be done if the slave is

present at bus configuration time). */

ec_pdo_entry_info_t *entries; /**< Array of PDO entries to map. Can either

be \a NULL, or must contain at

least \a n_entries values. */

} ec_pdo_info_t;

typedef struct {

uint8_t index; /**< Sync manager index. Must be less

than #EC_MAX_SYNC_MANAGERS(此处16) for a valid sync manager,

but can also be \a 0xff to mark the end of the list. */

ec_direction_t dir; /**< Sync manager direction. */

unsigned int n_pdos; /**< Number of PDOs in \a pdos. */

ec_pdo_info_t *pdos; /**< Array with PDOs to assign. This must contain

at least \a n_pdos PDOs. */

ec_watchdog_mode_t watchdog_mode; /**< Watchdog mode. */

} ec_sync_info_t;

分别是sync、pdo和pdo_entry结构体,三者关系是sync索引PDO,PDO索引PDO_entry,至于从站如何获取PDO配置的话,可以使用

sudo ethercat cstruct

进行该信息提取。

另外需要明确的是,上面两种PDO配置并不冲突,可以理解前者是从站的默认配置,后者是用户为了个性化自定义配置(有无均可,只不过不自定义的话可能会有冗余信息)。

那么继续ecrt_slave_config_pdos()配置函数解析;该函数的目的已经明确,就是为了对从站同步管理器的自定义设置,具体过程如下:

针对每个ec_sync_info_t输入结构数组进行PDO映射处理,分为三个层次:

1.sync层次:sync层次主要配置同步管理器的方向和看门狗设置;

2.PDO层次:处理PDO的时候需要两个过程,一个就是对之前的PDO配置进行清除,第二个过程就是将自定义配置的PDO设置到从站配置的同步管理器链表中,这个过程还会查询之前的默认配置,将之前PDO中的PDO_entry复制到PDO中;

3.PDO entry层次:这个层次将默认配置完全丢弃,从站同步管理器配置方面完全使用用户自定义的同步管理器配置。

通过以上解析,对于从站PDO映射配置大致如上。关于PDO配置如何在从站中生效,就涉及到了主站状态机运行部分,这个放在另外一个单元单独叙述。

posted @

2020-04-11 17:11 

呵哈呵 

阅读(328) 

评论(0) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 呵哈呵

Powered by .NET 8.0 on Kubernetes

EtherCAT使用与解析-关于PDO映射生效以及主站状态机在此过程的作用 - 呵哈呵 - 博客园

EtherCAT使用与解析-关于PDO映射生效以及主站状态机在此过程的作用 - 呵哈呵 - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

welsey

博客园

首页

新随笔

联系

订阅

管理

EtherCAT使用与解析-关于PDO映射生效以及主站状态机在此过程的作用

在PDO映射配置一文https://blog.csdn.net/lswdcyy/article/details/105453144,已经针对从站的同步管理器配置已经基本描述了,本章描述关于PDO映射如何在从站中生效的相关内容。

PDO映射交换目前我已知的内容涉及到3个部分:sync同步管理器配置,FMMU配置以及PDO映射关系配置:

先说sync同步管理器配置和FMMU配置,两者差别不大,sync主要是从站同步管理物理起始地址,FMMU需要设置从站映射物理起始地址和报文逻辑起始地址。

对于PDO映射关系,了解这个的话需要知道一个状态机,就是从站扫描状态机中的子状态机,ec_fsm_pdo状态机原理就是配置对象字典0x1C10~0x1C2F这32个PDO,这32个PDO名为Sync Manager PDO Assignment,分别对应0~31同步管理器的PDO映射,也就是从站同步管理器最多可以支持32个。

具体对每个同步管理器PDO配置通过邮箱通讯(邮箱可以完成对对象字典的读写)可以实现:

1.基于用户设置的PDO映射对映射表PDO进行配置:整体格式就是子索引为0的位置存放PDO对应的entry个数,然后存放entry的格式为(index + subindex + bit_length),直到将配置的PDO entry设置完毕;然后再将entry个数设置在PDO子索引为0的位置上。

2.对同步管理器映射PDO进行配置:整体格式为子索引为0的位置存储管理PDO的个数,之后的位置存储PDO,存储映射的PDO就是直接存储了映射表PDO的索引(2Byte),配置完毕之后,同样将该同步管理器管理的PDO个数设置在同步管理器分配PDO子索引为0的位置。

3.对从站的同步管理器PDO和映射表PDO进行重新配置后,将最开始空闲阶段扫描从站SII信息获取的PDO映射关系进行更新,更新为设置完毕的PDO映射关系,也就是用户设置的PDO关系。

这样PDO的映射关系和报文中信息的逻辑地址以及从站映射物理地址三者就产生了联系。

posted @

2020-04-11 21:39 

呵哈呵 

阅读(149) 

评论(0) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 呵哈呵

Powered by .NET 8.0 on Kubernetes

D09_EtherCAT中PDO(进程数据对象)与SDO(服务数据对象)讲解_哔哩哔哩_bilibili

D09_EtherCAT中PDO(进程数据对象)与SDO(服务数据对象)讲解_哔哩哔哩_bilibili 首页番剧直播游戏中心会员购漫画赛事投稿欧姆龙NJ系列PLC和1S伺服控制系统实战

9.6万

200

2022-04-26 13:54:59

8274543166793欧姆龙NJ系列PLC欧姆龙1S伺服控制系统实战知识野生技能协会EtherCAT欧姆龙PLC欧姆龙伺服电子凸轮IEC61131欧姆龙NJ欧姆龙NXSysmacStudio圆弧插补定位欧姆龙ST编程

工控圈

发消息

扣扣群937256780

关注 34.0万

AI女友太香了,边玩游戏边恋爱~视频选集(96/182)自动连播欧姆龙NJ系列PLC入门到精通全套视频工控圈

5314

5

电气工程师必懂——伺服篇Kinco步科

21.1万

587

欧姆龙PLC控制伺服正反转程序工控技能

1.6万

1

C#/.NET上位机快速入门【专为PLC工程师定制】付工上位机

24.3万

937

欧姆龙NJ系列PLC入门+运动控制+触摸屏+通信+案例讲解工控吧

15.8万

1709

三菱PLC编程最全指令合集(32课全)工控间

25.4万

2005

欧姆龙PLC速成·没有耳朵的兔子丶

8655

4

欧姆龙PLC完整项目程序框架工控技能

1.8万

107

一小时光速入门欧姆龙NJ系列PLC让鱼多飞一会

4284

8

西门子V90伺服从入门到精通工控圈

3.4万

36

精通欧姆龙NX1P系列PLC运动控制 EtherCAT高速现场总线高功能运动控制原理工控吧

1.5万

16

欧姆龙CJ系列PLC基础入门+案例讲解工控吧

2.8万

111

雷赛EtherCAT伺服与欧姆龙PLC配置详解CC1819ko

2378

2

完整版西门子1200PLC入门到精通风趣幽默侯老师带你走进自动化工控吧

112.1万

2.0万

PLC初学者只要明白这个框架写程序就很简单了工控技能教学

20.5万

583

欧姆龙NJ系列PLC- (共50集)摸凹喵阿

2129

0

FactoryIO通过欧姆龙NX102-1200 OPC UA服务器实现PID液位自动调谐控制!Sysmac Studioplc设计代做程序

2270

1

常用的伺服控制方式:Ethercat总线篇Kinco步科

2.7万

5

欧姆龙NJ控制器_项目篇大山里的狼哥

1.1万

24

电气自动化入门+西门子PLC入门基础(新手必学)常州智控教育

119.1万

8867

展开

小窗

客服

顶部

赛事库 课堂 2021