EtherCAT PDO映射概述

news/2025/1/21 21:49:21/
文章目录
  • 前言
  • 一、PDO映射相关概念介绍
  • 二、PDO映射配置过程详解

前言

当主站使用EtherCAT协议传输过程数据来控制从站设备时,会疑问主站是在什么时候告诉从站要传输什么过程数据的?
答案是,在PDO映射阶段完成的。
PDO映射简单来说就是通过CoE(CANopen over EtherCAT)协议来访问从站内部的一段结构化的数据,向其中写入数据来告诉从站之后会传输哪写PDO。

这段数据就是对象字典(Object Dictionary,OD)。
对象字典涉及的内容很对,包含很多分区。有些区是静态的,让用户从中读取信息,例如标准化设备子协议区,供用户了解该设备支持哪些PDO;有些区是可动态写入的,让用户按需进行配置,例如通信对象子协议区中的PDO参数对象部分,供用户配置PDO映射。

本文将针对过程数据对象的配置过程开展介绍。

一、PDO映射相关概念介绍

下图是EtherCAT从站设备的功能架构。
可以看到,EtherCAT从站设备功能组件可分为三层:物理层、数据链路层和应用层。应用层上方的从站应用功能会与对象字典交互,EtherCAT主站也能通过从站设备的ESC访问到对象字典,即对象字典是EtherCAT主站与从站应用之间过程数据的传输中转站。
在这里插入图片描述
对象字典(Object Dictionary)是用于描述设备信息的一种数据结构,通过索引、子索引可以定位到对象字典中某个数据信息。对象字典中的内容分布如下。

索引

内容

0x0000-0x0FFF

数据类型描述

0x1000-0x1FFF

通信对象子协议区

0x2000-0x5FFF

制造商特定子协议区

0x6000-0x9FFF

标准化设备子协议区

0xA000-0xAFFF

网络变量

0xB000-0xBFFF

用于路由网关的系统变量

0xC000-0xFFFF

保留

PDO(过程数据对象)映射就是通过CoE协议来修改通信对象子协议区中的部分数据
通信对象子协议区中的内容如下。

索引

内容

0x1000-0x1029

通用通讯对象

0x1200-0x12FF

SDO参数对象

0x1300-0x13FF

安全对象

0x1400-0x1BFF

PDO参数对象

0x1F00-0x1F11

SDO管理对象

0x1F20-0x1F27

配置管理对象

0x1F50-0x1F54

程序控制对象

0x1F80-0x1F89

网络管理主机对象

还需要厘清PDO、SDO两个对象。
PDO,过程数据对象,即在周期性控制过程中主从站之间需要传输的数据对象。是对象字典中索引0x6000到0x9FFF的内容。
每个数据对象都有特定功能,有些是主站向从站发送的,称为RxPDO,用于控制从站设备执行功能;有些是从站向主站发送的,称为TxPDO,用于向主站上报从站设备的状态信息。如下图是信捷伺服电机设备的对象字典中的部分PDO。

在这里插入图片描述

SDO,服务数据对象,是主从站之间进行非周期性通信时的数据对象。对象字典中除PDO以外的部分都可以称为SDO。

PDO映射对象PDO分配对象是与PDO的配置相关的两个SDO,虽然名称里带有PDO但并不属于PDO。PDOPDO映射对象PDO分配对象实际上是层层嵌套的关系,三者配合起来用于描述具体使用哪些PDO来控制从站设备。

PDO映射对象分为RxPDO映射对象和TxPDO映射对象两类,每类都有若干个对象,每个PDO映射对象用于映射一组PDO。RxPDO映射对象位于对象字典索引0x1600到0x17FF位置,TxPDO映射对象位于0x1A00到0x1BFF位置。
PDO映射对象包含n个子索引,子索引0表示该PDO映射对象中映射了多少个PDO,其余子索引表示映射了哪些PDO。
如下图是一个EtherCAT电机设备的索引为0x1600的RxPDO映射对象。00子索引的值是0x0B,即该RxPDO映射对象映射了11个RxPDO(虽然实际上只有六个是有意义的RxPDO)。0x01子索引到0x06子索引的值,描述了该RXPDO映射对象映射了哪些PDO。如0x01子索引的值是0x60400010,就表示0x01子索引映射的是对象字典中索引为0x6040,子索引为0x00的PDO,并且其数据长度为0x10。

在这里插入图片描述
我们也可以到对象字典对应的索引位置看一下,索引为0x6040,子索引为0x00的PDO是控制字。在这里插入图片描述
PDO分配对象只有两个:
一个RxPDO分配对象,在对象字典中的索引为0x1C12;
一个TxPDO分配对象,在对象字典中的索引为0x1C13。
上文提到每个PDO映射对象中映射了一组PDO,而PDO分配对象用于最终选定使用哪几个PDO映射对象,即选定使用哪几组PDO。
PDO分配对象包含5个子索引,子索引0x01到0x04分别指定一个PDO映射对象,子索引0x00表示从子索引0x01开始一共使用几个PDO映射对象。
如下图是一个EtherCAT电机设备的RxPDO分配对象和TxPDO分配对象。RxPDO分配对象子索引0x01的值为0x1600,且子索引0x00的值为1,则表示最终选定了索引为0x1600的RxPDO映射对象,也就是说选定了索引为0x1600的RxPDO映射对象中映射的一组RxPDO作为主站向从站传输使用的PDO。TxPDO分配对象同理,选定了索引为0x1A00的TxPDO映射对象中映射的一组TxPDO作为从站向主站传输使用的PDO。

在这里插入图片描述
在这里插入图片描述
下图更直观的展示了PDOPDO映射对象PDO分配对象之间的关系。
在这里插入图片描述
值得注意的是,有些从站设备对象字典的PDO映射对象和PDO分配对象存在默认的初始配置,设备上电后可直接基于默认配置来传输过程数据。而有些从站设备的PDO映射对象和PDO分配对象中的值默认是空的,需要先向各个对象的子索引写入值完成配置之后,才能传输过程数据。

一旦对象字典中的PDO映射对象、PDO分配对象设置完成,从站控制应用就可以读取对象字典中的PDO相关对象的值来确定需要从对象字典中哪些RxPDO读取数据,以及向对象字典中哪些TxPDO写入数据了。

此外,还需要关注SM(Sync Manager,同步管理器)。可以看到从站在物理层接收到配置PDO的EtherCAT数据帧后,需要通过SM写入对象字典中。

下一节通过EtherCAT数据帧收发记录来介绍具体配置过程。

二、PDO映射配置过程详解

1、清空SM配置

从站最多支持16个SM,配置SM的寄存器地址从0x0800开始,开头8个字节用于配置第一个SM,后面依次类推,如下图所示。

在这里插入图片描述

配置PDO首先需要清空之前的SM配置。
主站发送FPWR类型帧,向从站寄存器0x0800地址开始的64个字的空间写入0,清空所有SM配置。

在这里插入图片描述

2、重新配置SM

然后重新配置前两个SM,SM0用于写入SDO,SM1用于读取SDO。
还是向寄存器0x0800地址写入,共写入32个字的数据,前八个字用于配置SM0,后八个字配置SM1。最后16个字对应的SM2和SM3用于传输PDO,但在该阶段用不到,所以没有配置。

在这里插入图片描述

首先来看对SM0的配置数据:0010 8000 2600 0100 (注意该数据采用小端字节序)。
0-1字节用于配置物理起始地址,即SDO数据写入的位置。SM0配置的物理起始地址一般都是0x1000。

在这里插入图片描述

2-3字节用于配置寄存器长度,单位是字,0x0080表示长度为128个字。

在这里插入图片描述

4字节用于SM0工作参数配置,配置数据为0x26,二进制为0010 0110,第7位到第0位的顺序是从左到右。
工作模式配置数据为10,Mailbox模式;
读写方向配置数据为01,主站可写入,从站应用层可读取;
主站中断请求配置为0,关闭使能;
应用层中断请求配置为1,开启使能;
看门狗配置为0,关闭使能;

在这里插入图片描述

5字节是SM状态寄存器,用于读取SM状态,在配置操作中用不到,因此数据全为0。

在这里插入图片描述

6字节用于激活SM,配置数据为0x01,二进制为0000 0001。0位置1,激活SM。

在这里插入图片描述

7字节用于PDI控制,配置数据为0x00。

在这里插入图片描述

SM1的配置数据:0012 0001 2200 0100
SM1物理起始地址为0x1200,即读取SDO数据的位置。长度为0x0100,256个字。工作参数配置和SM0的区别是读写方向,SM1是从站写入,主站读取。其他配置都相同。

3、配置PDO映射对象

完成SM0和SM1的配置后,就能够通过SM0、1读写SDO数据来完成PDO映射的配置过程了。
本文以配置索引为0x1600的RxPDO映射对象为例,介绍配置过程。

(1)对PDO映射对象的0x00子索引置零

主站发送FPWR类型帧,可以看到帧包含了一个CoE包。
向索引为0x1600,子索引为0x00的位置写入数据0x00。
子索引0x00用于表示该映射对象中映射的PDO数量。
所以操作逻辑是先将数量清零,映射完PDO后,再重新写入映射数量。

在这里插入图片描述

(2) 依次配置PDO映射对象的其他子索引

向0x01子索引写入0x60400010。也就是将对象字典中索引为0x6040,子索引为0x00的PDO,映射到该RxPDO映射对象中。0x60400010最后的10,表示该PDO长度为16比特。

在这里插入图片描述

然后再依次向该RxPDO映射对象的0x02子索引以及后面的子索引写入数据。

(3) 向PDO映射对象的0x00子索引写入映射的PDO个数

PDO映射完成后,再向PDO映射对象的0x00子索引写入PDO映射数量。

在这里插入图片描述

到此完成了一个RxPDO映射对象的配置,然后还可以继续配置其他PDO映射对象,配置过程相同。

4、配置PDO分配对象

完成PDO映射对象后,开始配置PDO分配对象。
以索引为0x1C12的RxPDO分配对象为例,介绍配置过程。

(1)对PDO分配对象的0x00子索引置零

和配置PDO映射对象类似,先将PDO分配对象的0x00子索引置零。

在这里插入图片描述

(2)依次配置PDO分配对象的其他子索引

向0x01子索引写入需要分配的PDO映射对象的索引值,例如下图中写入的是0x1600这个RxPDO映射对象。

在这里插入图片描述

然后还可以继续在该PDO分配对象下分配PDO映射对象。但最多只能分配4个PDO映射对象。

(3)向PDO分配对象的0x00子索引写入分配的PDO映射对象个数

最后,向0x00子索引写入分配的PDO映射对象个数。
需要注意的是,即便在该PDO分配对象中分配了4个PDO映射对象,但在0x00子索引写入0x01后,那就只有分配的第一个PDO映射对象会起作用。

在这里插入图片描述

到此,完成了PDO映射的配置过程。相当于主站、从站双方已经知道要传输哪写PDO了,接下来再配置完SM2、3以及FMMU,就可以开始正式传输过程数据了。


http://www.ppmy.cn/news/1565055.html

相关文章

Spark期末复习题库

一、填空 1. Spark Web监控页面的端口地址是_______localhost:4040__________ 2. 在Spark安装目录下的conf目录中,修改名为_log4j.properties__配置文件,可以避免Spark程序在运行时输出过多的信息 3. 启动基于Python的Spark交互式命令行的命令是_____…

【AI工具学习14】利用文生类AI工具实现角色扮演对话1

目录 1.AI解困师 2.AI男友 3.星座大师 4.法律顾问 市面上有不少文生类 AI 工具可供选择,像 ChatGPT、文心一言、讯飞星火等。要根据自己的需求以及工具的特点来挑选,比如有的在创意写作方面表现出色,有的在逻辑回复上更胜一筹&#xff0c…

《AI语言模型的关键技术探析:系统提示、评估方法与提示工程》

文章主要内容摘要 1. 系统提示(System Prompt) 定义: 用于设置模型行为、角色和工作方式的特殊指令重要性: 定义模型行为边界影响输出质量和一致性可将通用模型定制为特定领域助手 挑战: 技术集成复杂兼容性问题效果难以精确预测 2. 模型评估方法 创新方向: 自一致性(Self…

Linux 管道操作

Linux 管道操作 在 Linux 中,管道(Pipe)是一个非常强大且常用的功能,它允许将一个命令的输出直接传递给另一个命令作为输入,从而能够高效地处理和分析数据。管道在多个命令之间建立数据流,减少了文件的读写…

C# 并发和并行的区别--16

目录 并发和并行 一.并发 定义 特点 代码示例 代码解释 二.并行 定义 特点 在C#中的体现 代码示例 代码解释 三.并发和并行的区别 四 .如何在C#中选择并发还是并行 1.考虑任务类型 2.代码示例 3.注意事项 五.总结 并发和并行 在编程领域,并发和并行是两个密切…

在Ubuntu 22.04 LTS 上安装 MySQL两种方式:在线方式和离线方式

Ubuntu安装MySQL 介绍: Ubuntu 是一款基于Linux操作系统的免费开源发行版,广受欢迎。它以稳定性、安全性和用户友好性而闻名,适用于桌面和服务器环境。Ubuntu提供了大量的软件包和应用程序,拥有庞大的社区支持和活跃的开发者社区…

【FlutterDart】MVVM(Model-View-ViewModel)架构模式例子-dio版本(31 /100)

动图更精彩 dio & http 在Flutter中,dio和http是两个常用的HTTP请求库,它们各有优缺点。以下是对这两个库的详细对比: 功能特性 http: 功能:提供了基本的HTTP请求和响应功能,如GET、POST、PUT、DELE…

初学者如何用 Python 写第一个爬虫?

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…