• CANopen之SDO,PDO


    一、简述

      CAN 总线是一种串行通信协议,具有较高的通信速率的和较强的抗干扰能力,可以作为现场总线应用于电磁噪声较大的场合。由于

    CAN 总线本身只定义ISO/OSI 型中的一层(物理层)和第二层(数据链路层),通常情况下 CAN 总线网络都是独立的网络,所以

    没有网络层。在实际使用中,用户还需要自己定义应用层的协议,因此在 CAN总线的发展过程中出现了各种版本的CAN应用层协议,

    现阶段最流行的CAN应用层协议CANopen协议。

    二、服务数据对象(SDO)

      SDO提供了直接访问CANopen设备对象字典的入口,入口条件包括数据类型及大小;任何类型的SDO传输都由客户端发起,数据

    字典持有者是服务器,客户端和服务器都可以主动中止传输。

      请求读或写的节点是客户端节点;读取或写入数据的节点是服务器节点;

      读或写一个4字节或少于的数据,最简单的方法是使用SDO upload/download expedited protocol 。

    1、SDO Upload expedited protocol 

      在服务器节点对象字典去读数据0xd0d1d2d3 。

      客户端请求:

     

     

     例1:数据 0xFE ,对象字典节点5 ,  索引 index 0x1400, 子索引 subindex 2 

    客户端请求   : 605 40 00 14 02 00 00 00 00 

    若成功,应答: 585 4F 00 14 02 FE 00 00 00

    例2:数据 0x60120208 ,对象字典节点5 ,  索引 index 0x1802, 子索引 subindex 1

    客户端请求   :605 40 02 18 01 00 00 00 00 

    若成功,应答:585 60 02 18 01 08 02 12 60

    2、SDO Download expedited protocol

      在服务器节点对象字典去写数据0xd0d1d2d3,(注意数据是最低有效位先写)。

      客户端发送:

     

     例1:数据 0xFE ,对象字典节点5 ,  索引 index 0x1400, 子索引 subindex 2 

    客户端请求   : 605 2F 00 14 02 FE 00 00 00

    若成功,应答: 585 60 00 14 02 00 00 00 00

     例2:数据 0x60120208 ,对象字典节点5 ,  索引 index 0x1802, 子索引 subindex 1

    客户端请求   :605 23 02 18 01 08 02 12 60

    若成功,应答:585 60 02 18 01 00 00 00 00

    3、SDO 中止信息(SDO abort protocol )

      SDO 中止信息是主机在从机进行 SDO 通讯时,从机收到 SDO 后, 如果判断为 SDO 需要中止,就会返回中止信息给主机。

    三、过程数据对象(PDO) 

      由对象字典提供PDO数据和配置的接口,数据字典中对应的映射结构决定了一个PDO的数据类型和映射关系。如果CANopen设备

    支持可变映射PDO,可通过SDO实现对PDO在数据字典中对应的配置进行修改。  

    1、Transmit - PDO (TPDO)

     i :Index 1800 + n,subindex 01 ,COB_ID(通讯对象的标识符):包含CAN-ID和附加控制位的标识符

    对于TPDO来说,其通信参数中的COB-ID是自身的COB-ID,当发送TPDO时用来表明这个TPDO是谁发出的。

    ii :Index 1800 + n,subindex 02, 写传输类型 t,

                   t = 1 -- 0xF0:同步,时间触发模式 ,每 t 一周期

                   t = FD    :收到PDO请求后

                   t = FE    :事件驱动(制造商指定)

                   t = FF    :事件传输,节点自发传输PDO

    iii:Index 1800 + n, subindex 03,抑制时间。

      如果传输类型设置为FE和FF,它是最小的PDO传输间隔,单位100us,值为0禁用抑制时间。PDO 报文需要延时 t × 100us

    时间才发出,以此避免在多PDO 报文同时发出时,引起的时间冲突 。

    iiii:Index 1800 + n, subindex 05,时间定时器。

      如果传输类型设置为FE和FF,它是PDO传输间隔,单位ms,值为0禁用。t =0xCB,200ms。

    iiiii:Index 1A00 + n,定义映射

      subindex 0 :定义映射数量(1 byte)。值 0,映射禁用;值 01,子索引01有效;值 02,子索引01--02有效......

      subindex 1 :映射第一个参数。格式,index (2 bytes) – subindex (1 byte) – size (1 byte)

      subindex 2 :映射第二个参数。格式,index (2 bytes) – subindex (1 byte) – size (1 byte) 

    一个例子:

    605 2F 00 18 02 FF 00 00 00   --设置索引Index 1800,事件传输

    605 2F 00 18 05 CB 00 00 00  --设置索引Index 1800,时间间隔200ms

    605 2F 00 1A 00 00 00 00 00  --设置子索引禁用

    605 23 00 1A 01 10 00 30 40  --0x40300010,设置映射索引0x4030,子索引00,大小0x10(16位)

    605 23 00 1A 02 20 00 10 20  --0x20100020,设置映射索引0x2010,子索引00,大小0x20(32位)

    605 2F 00 1A 00 02 00 00 00  --设置映射数量,用多少设多少,这里用了01--02

    注意:定义映射时,先设置子索引禁用;再设置相应映射;然后设置映射数量

    2、Receive - PDO (RPDO)

     i :Index 1400 + n, subindex 01 ,COB_ID(通讯对象的标识符)

    对于RPDO来说,其通信参数的COB-ID是发送方的COB-ID,用来表示自己只接受某个CAN节点发过来的TPDO。

     ii :Index 1400 + n, subindex 02,写传输类型 t,              

                   t = 1 -- 0xF0:同步,时间触发模式 ,每 t 一周期

                   t = FD    :收到PDO请求后

                   t = FE    :事件驱动(制造商指定)

                   t = FF    :事件传输,节点自发传输PDO

    iii:Index 1600 + n,定义映射

      subindex 0 :定义映射数量(1 byte)。值 0,映射禁用;值 01,子索引01有效;值 02,子索引01--02有效......

      subindex 1 :映射第一个参数。格式,index (2 bytes) – subindex (1 byte) – size (1 byte)

      subindex 2 :映射第二个参数。格式,index (2 bytes) – subindex (1 byte) – size (1 byte) 

    一个例子:

    605 2F 00 14 02 FF 00 00 00    --设置索引Index 1400,事件传输

    605 2F 00 16 00 00 00 00 00  --设置子索引禁用

    605 23 00 16 01 10 00 30 40  --设置映射索引0x4030,子索引00,大小0x10(16位)

    605 2F 00 16 00 01 00 00 00  --设置映射数量,用多少设多少,这里用了01

    注意:定义映射时,先设置子索引禁用;再设置相应映射;然后设置映射数量

    本文链接:https://www.cnblogs.com/listxue/p/12826714.html

  • 相关阅读:
    C++下载数据至.map/.txt/.list文件
    Byte数组转浮点数
    linux下进程的最大线程数、进程最大数、进程打开的文件数
    linux后台程序开发常用工具
    linux下csv导出文件中文乱码问题
    50个高端大气上档次的管理后台界面模板(转)
    如何注册.net 的类库dll 为com组件(转)
    vue页面信息
    CSS特效
    Css样式
  • 原文地址:https://www.cnblogs.com/listxue/p/12826714.html
Copyright © 2020-2023  润新知