zoukankan      html  css  js  c++  java
  • CANopen学习

    1.CANopen协议总述

    CANopen 是一个基于 CAN 串行总线的网络传输系统的应用层协议,遵循 ISO/OSI 标准模型。

    网络中不同的设备通过对象字典或者对象来相互交换数据,其中,主节点可以通过过程数据对象 (PDO) 或者服务数据对象 (SDO) 来获取或者修改其它节点对象字典列表中的数据。

    CANopen协议主要内容分为三大块,如下图CANopen 的设备模型。

    推荐书籍:周立功的《CANopen轻松入门》,建议详细拜读,可以带大家入门。

    2.通讯接口

    入门之后若要深入理解,我建议参看官网的《CANOpen CiA 301》标准这本文档

    CiA(CAN in Automation) 301也是大家所说的DS301,为CANopen 基础协议。

    我们还常看到类似CiA 401 402这些协议,其实它们是在CiA 301 之上,对各个行业不断推出设备子协议。

    所谓的子协议,就是针对不同行业的应用对象,对 CANopen 内部的数据含义进行重新定义,或者添加新的控制逻辑。

    按照CANOpen CiA 301协议文档,提取了通信接口的主要内容,如下图:

    2.1 网络管理(NMT),包括 Boot-up(上线) 消息, Heartbeat(心跳) 协议及 NMT 消息,基于主从通信模式,

    NMT 用于管理和监控网络中的各个节点,主要实现三种功能:节点状态控制、错误控制和节点启动。

      CANOpen网络一般是一个主站,多个从站的局域网络;

      NMT节点具有6种状态:初始化、应用层复位、通讯复位、预操作状态、操作状态、停止状态。可以自己切换状态,也可主站切换状态;

      任何一个 CANopen 从站上线后发出节点上线报文(boot-up)。

    2.2 过程数据对象 PDO

    每个 CANopen 设备包含 8 个缺省的 PDO 通道, 4 个发送 PDO 通道和 4 个接收 PDO 通道。

      PDO用来传输实时数据,包括接收 PDO(RPDO) 和发送 PDO(TPDO),数据从一个创建者传到一个或多个接收者,属于“生产消费”模型,数据传送限制在 1 到 8 个字节。

      COB-ID( CAN Object Identifier,CANID是其一部分,NodeID是CANID的低7位) 定义只是预定义。

      PDO 的两种传输方式:同步传输和异步传输,由该 PDO 对应的通信参数决定。

      PDO 的通信参数可通过对象字典工具配置。

      PDO 消息的内容是预定义的,由该 PDO 对应的映射参数决定。PDO 的映射参数是一个相对难理解的参数,请结合《CANopen 轻松入门》图文理解。

    2.3 服务数据对象 SDO

    包括接收 SDO(R-SDO) 和发送 SDO(T-SDO)。

    通过使用索引和子索引, SDO 使客户机能够访问设备对象字典中的项。

    SDO 通过 CAL 中多元域的 CMS 对象来实现,允许传送任何长度的数据,当数据超过 4 个字节时分拆成几个报文。

    协议是确认服务类型,为每个消息生成一个应答。 SDO 请求和应答报文总是包含 8 个字节。

      SDO为请求应答方式;

      发送方(客户端)、接收方(服务器) ;

      通常从节点为 SDO 服务器,主节点为客户端;

      两种协议:快速、普通 SDO 协议;

           CS命令符含义需熟记(查表);

    2.4 特殊协议

    2.4.1.常见的就是罗列出来的3种:

        同步协议,包含同步对象,同步对象是由 CANopen 主站周期性地广播到 CAN 总线的报文,用来实现基本的网络时钟信号,

     每个设备可以根据自己的配置,决定是否使用该事件来跟其它网络设备进行同步通信。

        时间戳协议。

        紧急报文协议,设备内部通信故障或者应用故障错误时发送的报文。

    2.4.2.特殊协议CAN-ID定义(查表);

    2.4.3.紧急报文错误代码分类及含义;

    3.对象字典

    CANopen设备最重要的一个部分就是对象字典。对象字典本质上是一种被预先安排的对象序列,可通过网络访问。字典里面的每一对象均可使用一个16-bit主索引和8-bit子索引寻址到。

    对象字典下面主要包含:数据类型、通信对象、应用对象。

    3.1 通信子协议区,如上图1000h 到 1FFFh这个区域。也就是通信接口(或通信对象)协议区。

    关于创建对象字典,可以使用Canfestival工具,详见:http://www.elecfans.com/d/1153555.html

  • 相关阅读:
    HDU1496(巧妙hash)
    SPOJ(后缀数组求不同子串个数)
    django-admin自定义登录
    Bootstrap实现的页面
    ImageMagick来处理图片,缩放,调整高度等操作
    xlrd,xlwt操作Excel实例
    匹配图片修改图片名称
    python 的两个模块xlwt,xlrd,写入和读取Excel数据
    Excel常见操作,重复数据,去除数据关联
    Excel数据常用操作,vlookup,text,trim,数据格式导致出错
  • 原文地址:https://www.cnblogs.com/merlinzjl/p/12907790.html
Copyright © 2011-2022 走看看