精华内容
下载资源
问答
  • 作为EtherCAT协议栈的补充,实现PDO动态映射,是一个完整的EtherCAT从站必要的组成部分。
  • [CANopen]理清PDO映射

    千次阅读 2020-04-01 22:35:53
    CANopen中发送/接收的数据称之为过程数据(PDO)。这里以发送为例,理清其中的映射关系。 配置 发送使用TPDOx,可以使用TPDOx如下: 项目 通讯参数-字典Index 映射参数-字典Index TPDO1 1800 1A00 TPDO2 ...

    CANopen中发送/接收的数据称之为过程数据(PDO)。这里以发送为例,理清其中的映射关系。

    配置

    发送使用TPDOx,可以使用TPDOx如下:

    项目通讯参数-字典Index映射参数-字典Index
    TPDO10x18000x1A00
    TPDO20x18010x1A01
    TPDO30x18020x1A02
    TPDO40x18030x1A03

    使用首先就得配置TPDOx,其中通讯参数决定“怎么发送数据”,其定义及其作用如下:

    typedef struct{
                   UNSIGNED8      maxSubIndex;/*子索引数量=6*/                                
                   UNSIGNED32     COB_IDUsedByTPDO;/*其实是Function Code(COB-ID = Funcode+NodeID)*/  
                   UNSIGNED8      transmissionType;/*发送类型:SYNC触发(同步)、周期发送(异步)、远程请求、特定*/  
                   UNSIGNED16     inhibitTime;/*X*100us 间隔时间;0-禁止功能*/  
                   UNSIGNED8      compatibilityEntry;/*not used*/  
                   UNSIGNED16     eventTimer;/*X*1ms 周期发送间隔;0-禁止功能*/  
                   UNSIGNED8      SYNCStartValue;/*SYNC报文起始值*/  
                   }OD_TPDOCommunicationParameter_t;
    
    

    映射参数决定了“发送什么数据”,其定义及其作用如下:

    typedef struct{
                   UNSIGNED8      numberOfMappedObjects;/*实际使用几个映射*/  
                   UNSIGNED32     mappedObject1;
                   UNSIGNED32     mappedObject2;
                   UNSIGNED32     mappedObject3;
                   UNSIGNED32     mappedObject4;
                   UNSIGNED32     mappedObject5;
                   UNSIGNED32     mappedObject6;
                   UNSIGNED32     mappedObject7;
                   UNSIGNED32     mappedObject8;
                   } OD_TPDOMappingParameter_t;
    

    举例

    TPDO1,对通讯参数Index=0x1800,映射参数Index=0x1A00进行配置:
    在这里插入图片描述
    “怎么发送数据”:发送的COD-ID =0x180+NodeID;采用周期发送(异步)的方式,周期为32ms。
    在这里插入图片描述
    “发送什么数据”:字典Index为0x6000,subIndex为0,数据长度为0x20(32)bits/4字节的位置上的数据。再加上字典Index为0x6100,subIndex为0,数据长度为0x20(32)bits/4字节的位置上的数据。刚好8字节填满了整个数据帧。

    展开全文
  • EtherCAT使用与解析-关于PDO映射

    千次阅读 2020-04-11 17:10:49
    关于PDO映射这部分,最好先参考https://blog.csdn.net/lswdcyy/article/details/105441470先了解一下配置相关的东西;...对于PDO映射,首先他是已经有了一个sync中关联PDO的这样一个链表的前提下才进行的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配置如何在从站中生效,就涉及到了主站状态机运行部分,这个放在另外一个单元单独叙述。

    展开全文
  • Ethercat PDO映射关系

    2021-08-19 12:10:54
  • PDO映射配置一文...PDO映射交换目前我已知的内容涉及到3个部分:sync同步管理器配置,FMMU配置以及PDO映射关系配置: 先说sync同步管理器配置和FMMU配置,两者差别不大,sy...

    在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的映射关系和报文中信息的逻辑地址以及从站映射物理地址三者就产生了联系。

    展开全文
  • EtherCAT通信DS402协议----PDO映射

    千次阅读 2020-06-08 10:12:04
    EtherCAT通信DS402协议----PDO映射PDO 映射PDO 分配PDO 映射的步骤 EtherCAT 从站的过程数据由同步管理器通道对象组成,每个同步管理器通道对象描述了 EtherCAT 过程数据的一致性区域,并且包含多个过程数据对象。...
  • Elmo驱动器:CANopen协议电机PVT模式的PDO映射 0.前言 最近在做Rhex机器人,该机器人的六条腿部每条腿均只有一个电机,对步态的控制完全依赖于一个电机的控制,使用以前用的比较简单的电机位置PTP(Point to Point)...
  • 动态PDO数据映射解析

    千次阅读 2019-11-17 19:40:00
    动态PDO数据映射解析 CoE应用层是基于CANOpen的EtherCAT总线通信模式,而在 CAN open通讯协议中 , 设备之间的通讯是通过交换通讯对象即 COB 来实现的 ,同时通讯子协议DS301中定义了四类通讯对象: PDO (Process ...
  • EtherCAT通信主站----PDO过程数据映射

    千次阅读 2020-09-07 22:38:33
    EtherCAT通信主站----PDO过程数据映射FMMU与Sync Manager配置PDO过程数据映射PDO映射PDO分配PDO 映射的步骤 EtherCAT其中COE在数据链路层采用EtherCAT协议,在运用层采用CanOpen协议,其和兴是对象字典,对PDO和SDO...
  • PDO SDO应用实例分析,让人茅塞顿开!
  • 1. PDO映射操作 2. PDO数据查看 3. 模拟量添加 4. EtherCAT错误信息查看
  • CANopen通信之PDO通信

    2018-04-04 15:09:56
    过程数据对象(Process Data Object,PDO)是用来传输实时数据的,提供对设备应用对象的直接访问通道,它用来传输实时短帧数据,具有较高的优先权。
  • CANopen PDO-SDO应用实例讲解,看完之后对于CANopen协议中的对象数据,PDO,SDO能有比较全面的认识,协助进行编程。
  • 松下的Ethercat驱动器使用手册,以及关于如何使用Ethercat配置PDO等内容
  • 介绍了canopen协议中PDO和SDO的实现方式
  • 欧姆龙NX7不再支持FINS通讯,目前还没详细的协议,这个动态库是本人历经一年时间开发出来的,提供给大家调试使用(可在VS平台使用,并有例子),若要在执行文件使用还得联系我.其他常用的PLC也有,稳定性好,都支持断线自动重...
  • Canopen通信--PDO

    千次阅读 2018-05-21 10:36:06
    过程数据对象(Process Data Object,PDO)是用来传输实时数据的,提供对设备应用对象的直接访问通道,它用来传输实时短帧数据,具有较高的优先权。PDO 传输的数据必须少于或等于 8 个字节,PDO 的 CAN 报文...
  • PDO是生产/消费类型的通讯方式,数据只有一个生产者(发送),但是消费者(接收)可以有多个,生产者和消费者事先都已知道数据的类型和内容(通过设置PDO映射来管理). 对PDO通讯参数的设置可以实现四种通讯方式: 1. 同步...
  • CANopen原理--PDO

    千次阅读 2018-08-02 13:42:42
    本文介绍CanFestival中的PDO发送过程。 一、PDO通信参数 数据字典0x1400~0x15FF定义了RPDO的通信参数,0x1800~0x19FF定义了TXPDO的通信参数,例如1801定义了TPDO1的通信参数: //TestSlave.c /* index 0x1800...
  • CanOpen的SDO、PDO简单通信使用

    千次阅读 2020-11-13 09:21:54
    PDO通信: 1.Transmit - PDO (TPDO) 如果想要事件发生后接收到PDO上报相应的信息,则需要将索引映射到0x1a00等对象字典,并设置相应的通信参数0x1800等。 此举例将索引0x60c1、子索引0x01、字节32位映射到0x1a00...
  • 欧姆龙教材NJ501

    2013-07-24 08:15:02
    欧姆龙教材NJ501,欧姆龙最新教程,最新版本学习,值得下载
  • 简单的 PHP PDO 数据映射器 将数据库行映射到简单的 PHP 对象,仅此而已。 用法 将数据库值加载到 Order 对象。 该类的所有公共成员必须与数据库中的字段名称相同。 实体由字段“id”标识 简单模型类: class ...
  • CANOPEN的PDO

    千次阅读 2018-04-13 19:46:09
    节点1 0x1A00中的数据为映射地址,格式为XXXX_XX_XX分别为地址,子索引,数据长度。去找相应地址中的数据,就是要发送的数据。节点2 0x1800的01位为COB-ID,若某个节点想接受,在0x1400的01位写相同ID。节点2 0x1A00...
  • 大意就是使用ecrt_slave_config_reg_pdo_entry()来代替ecrt_slave_config_pdos()来进行注册。 Hi Christian! Instead of passing the structs to ecrt_slave_config_pdos(), you can use ecrt_slave_config_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,150
精华内容 1,660
关键字:

pdo映射