参考文献
《Kinco FD&CD3系列伺服驱动器使用手册20210125》
《CANopen协议讲解课件》
《信捷 CANopen 通讯用户手册》
《基于CANopen协议的网络主控制器的设计》

前置文章
CAN总线技术基本概念简述

0 CANopen简述

CAN协议基本概念简述

CAN现场总线本身仅仅实现了物理层和数据链路层,CANopen是CAN现场总线的应用层协议。

CANopen是应用层协议,未规定物理层和数据链路层的实现,故并非必须基于CAN总线实现,例如也可基于Ethercat总线实现,即CANopen Over EtherCAT(CoE)。

CANopen 通信网络一般由一个主节点(master)和数量不定的从节点(slave)组成。
●主节点:负责整个网络的管理。
●从节点:主要负责底层的网络通讯和控制任务。
CANopen 主节点在功能上相当于具备网络管理功能的CANopen 从节点。

CANopen由非营利组织CiA(CAN in Automation)进行标准的起草及审核工作。

标准CANopen节点示意图见下:

CANopen协议是一个通用协议标准,从CiA 301 基础协议开始,对于不同类型的CANopen 设备有不同的子协议(称之为行规),如CiA 402“伺服与运动控制”子协议面向运动设备(包括伺服驱动器、逆变器、步进电机驱动器等)。

1通讯对象标识符

CANOPEN协议的基本通信单元为通信对象(Communication Object)。常用的通信对象有NMT、SYNC、EMERGENCY、TIME STAMP、SDO、PDO六类。COB-ID ( Communication Object Identifier,通讯对象标识符) 即CAN 标识符,指定了在通讯过程中对象的优先级以及通讯对象的识别,CANopen 的各个通讯对象都有默认的 COB-ID。

COB-ID格式是基于 CANopen 2.0A 定义的 11 位 CAN-ID(CANopen 2.0B 协议 COB-ID 是 27位),包含一个 4 位的功能码(Function Code)部分和一个 7 位的节点 ID(Node-ID)部分:

  1. 节点ID ——即站号,由系统集成商定义,例如通过设备上的拨码开关设置,Node-ID 范围是 1~127(0 为主站号);
  2. 功能码 ——数据传输的功能码,定义所有报文的传输级别,功能码越小,优先级越高;

为了减少网络的组态工作量,CANopen预定义了强制性的缺省标识符分配表,见下:

2对象字典

2.1概述

每个CANopen 节点都具备一个对象字典(Object Dictionary,OD),用来设定设备组态及进行非即时的通讯。所谓的对象字典就是一个有序的对象组,描述了对应CANopen节点的所有参数,如通信参数、应用程序数据,以及 PDO 的映射数据等;具体以总线电机驱动器为例,对象字典中的对象(Object )可以是电流环、速度环、位置环的 PID 参数等。

CANopen字典的对象结构见下图:

  1. 索引(Index):每个对象采用一个16位的索引值来寻址,这个索引值通常被称为索引,其范围在0x0000到0xFFFF之间。为了避免数据量大时无索引可分配,所以在某些索引下也定义了一个8 位的索引值,这个索引值通常被称为子索引(Sub),其范围是0x00到0xFF之间。每个索引内具体的参数,最大用32位的变量来表示,即Unsigned32,四个字节。
  2. 对象属性(Attrib):对象属性有RW(读写)、RO(只读)、WO(只写)、M(可映射)、S(可存储)

轻松掌握CANOpen最难理解的对象字典

2.2 EDS文件

对象字典的可传递形式被称作EDS(electronic data sheet,电子数据表格)文件。EDS文件是 PLC 所连接从站的标识文件或者类似码,通过该文件来辨认从站所属的类型。该文件包含包含了从站的所有信息,比如生产厂家、序列号、软件版本、支持波特率种类、可以映射的 OD 及各个 OD 的属性等等参数,类似于 Profibus 的 GSD 文件。在进行硬件配置前,需要把从站的 EDS 文件导入到上位组态软件。

3 SDO

SDO(Service data object,服务数据对象)用于传输非周性数据,使用对象字典的索引和子索引访问CAN节点对象字典中的对象。

SDO 的基本结构如下:

SDO 命令字指明了该段 SDO 的传输类型和传输数据长度。

SDO 传输方式遵循客户端/服务器模式,由 CAN 总线网络中的 SDO 客户端发起,SDO 服务器做出应答。因此只适合对参数的设置,不适合于对实时性要求较高的数据传输。

SDO 的通讯方式分为下载(Download)和上传(Upload):

  • 下载:对对象字典进行写操作;
  • 上传:对对象字典进行读操作;

4 PDO

4.1概述

PDO(Process data object,过程数据对象) 主要用来传输需要高频率交换的数据。与现有的数据问答式传输方式不同,进行PDO传输方式时,设备双方在传输前先在各个设备定义好对象字典中数据接收和发送区域,在数据交换时直接发送相关的数据到对方的数据接收区,减少了问答式的询问时间。

由于需要区分每个 CANopen 节点的输入和输出,所以将PDO 分为发送方 Transmit-PDO(TxPDO)和接收方 Receive-PDO(RxPDO)。

  1. TXPDO:从站通过 TXPDO 反锁自身的状态,相对于从站来说就是指从站发送出去的数据,这些数据由主站来接收;
  2. RXPDO:从站通过 RXPDO 接收主站的指令,相对于从站来说就是指从站接收的数据,这些数据由主站来发送;

PDO属于生产者-消费者模型(producer/consumer),即将生产者(主站)生产行为同消费者(从站)消费行为剥离,网络中的每个节点都能收到发送节点的报文,接收到报文后根据配置决定是否接受报文。

PDO 的属性可以在对象字典中配置,每个PDO在对象字典中由PDO通讯参数PDO映射参数组成:

  1. PDO 通讯参数:描述了 PDO 的通信功能,定义了该设备所使用的 COB-ID、传输类型、禁止时间和事件时间等。
    ●传输类型:决定PDO遵循何种传输方式;
    ●禁止时间:禁止时间指两个连续 PDO 传输的最小间隔时间,避免由于高优先级信息的数据量太大,始终占据总线,而使其它优先级较低的数据无力竞争总线的问题。
    ●事件时间:异步传输模式中驱动器向控制器发送 PDO 报文的周期时间。注意使用事件时间时,禁止时间应设置为 0。
  2. PDO 映射参数:PDO 映射用于建立对象字典与 PDO 的映射关系。PDO 映射参数包含了 PDO 传输内容信息(包括索引、子索引及位长),说明PDO中的对象在对象字典中的位置和长度。生产者和消费者必须知道这个映射,以解释 PDO 内容。

4.2 PDO传输类型

PDO 有两种传输方式:

同步(SYNC)

  1. 触发(传输类型:0-240)。控制器必须具有发送同步报文的能力(频率最高为 1KHZ 的周期发送的报文),伺服在接收到该同步报文后再发送。
  2. 周期(传输类型:1-240)。传送在每 1 到 240 个 SYNC 消息后触发。该方式下伺服驱动器每接收到 n 个同步报文后,PDO 里的数据发送一次。

异步(ASYNC)
(传输类型:254/255)
从站报文数据改变后即发送,不管主站是否询问,而且可以定义同一个报文两次发送之间的时间间隔,避免高优先级报文一直占据总线

4.3 PDO通讯示意

主站向从站发送数据:

从站向主站发送数据:

4 NMT控制

CANopen 节点按照协议规定的状态机执行相应工作,状态机的状态决定了该节点当前支持的通讯方式及节点行为。

状态机有初始化(initialization)、预操作(pre-operational)、操作(operational)和停止(stopped) 四个状态,可以通过 NMT (Net Management,网络管理) 报文来实现在各种模式之间切换。只有主节点能够传送 NMT报文,所有从设备都必须支持 NMT 模块控制(Module Control)服务,同时 NMT模块控制服务消息不需要应答。

CANopen设备状态机制见下图。

  • 初始化时,节点自动设置自身参数和对象字典;
  • 当系统上电初始化完毕后,自动进入预操作状态中并发送 Boot-Up,该状态是主要的配置节点状态,可以接收和发送除PDO以外的所有报文;
  • 主节点发送启动节点报文启动远程节点,由预操作状态进入操作状态,操作状态是 CANopen 正常工作时的状态,各个模块都应正常工作;反之主节点发送另外的NMT 报文使节点进入预操作状态。
  • 当 NNT 主机发送停止节点报文时,设备进入停止状态,该状态是一种临时状态,只能接受主站的网络命令以恢复运行或重新启动。

5同步对象

SYNC同步是控制多个节点发送与接收之间协调和同步的一种特殊机制,用于 PDO 的同步传输。
同步对象有 CANopen 主站周期性地广播 CAN 总线的报文,用来实现基本的网络时钟信号,每个设备可以根据自己的配置,决定是否使用该事件来跟其它网络设备进行同步通讯。

6应急报文

当设备内部出现致命错误将触发应急(Emergency)报文,由应用设备以最高优先级发送到其他设备。任何具备紧急事件监控与处理能力的从站会接收并处理紧急报文。

7监督类型

监督类型是指在运行过程中主站选择何种检查方式检查从站,判断从站是否出现故障,并根据这些故障做出相应的处理。
检查方式有心跳报文(Heartbeat)和节点保护(Node Guarding)。一个节点不能够同时支持节点保护和心跳报文,只能选其中一种作为保护。

7.1心跳报文

心跳模式采用生产者/消费者模型,心跳报文分为主站心跳报文和从站心跳报文。
主站心跳报文
从站以“监督时间”周期性的上传报文到主站,如果超过“心跳消费者时间”后主站还没有收到从站的下一个心跳报文,那么主站判断通讯出错,主站产生报警。
从站心跳报文
主站以“监督时间”周期性的发送报文到从站,如果超过“心跳生产者时间”从站还没有收到主站的下一个心跳报文,那么从站判断通讯出错。

7.2节点保护

节点保护遵循主从模型,主站以“监督时间”周期性的发送远程请求报文到从站,从站接收到后即回应,如果超过“监督时间×寿命因子”时间后,主站还没有收到从站回应的报文,主站判断从站出错。
同时,从站也可以监控主站的远程请求状态,从收到的第一条远程帧开始启动通讯保护,如果超过“节点保护时间×节点保护系数”时间没有收到主站远程帧,从站也会判断通讯出错。

CANopen基本概念学习笔记相关推荐

  1. 操作系统概念学习笔记 11 进程同步(一)

    操作系统概念学习笔记 11 进程同步(一) 互相协作的进程之间有共享的数据,于是这里就有一个并发情况下,如何确保有序操作这些数据.维护一致性的问题,即进程同步. 从底层到高级应用,同步机制依次有临界区 ...

  2. 操作系统概念学习笔记 15 内存管理(一)

    操作系统概念学习笔记 15 内存管理(一) 背景 内存是现代计算机运行的中心.内存有非常大一组字或字节组成,每一个字或字节都有它们自己的地址.CPU依据程序计数器(PC)的值从内存中提取指令.这些指令 ...

  3. 操作系统概念学习笔记 16 内存管理(二) 段页

    操作系统概念学习笔记 16 内存管理 (二) 分页(paging) 分页(paging)内存管理方案允许进程的物理地址空间可以使非连续的.分页避免了将不同大小的内存块匹配到交换空间上(前面叙述的内存管 ...

  4. 操作系统概念学习笔记 4 操作系统结构和操作简述

    操作系统概念学习笔记 4 操作系统结构和操作简述 操作系统结构 多道程序设计 多道程序设计指的是允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法.也就是说,计算机内存中可以同时存放多道 ...

  5. 《CANOpen》 学习笔记5

    <CANOpen> 学习笔记5 CANOpen 学习笔记5 驱动器 CANopen 调试笔记 驱动器 CANopen 调试笔记 驱动器 Copley 公司提供的 <CANopenPr ...

  6. CanOpen协议栈学习笔记1-帧格式,SYNC和NMT报文介绍

    前面已经记录过can协议,后面开始CanOpen协议栈学习.其实协议栈代码已经看过了,而且已经在开发板上跑过了.这里回过头来,重新看下之前遇到的坑,记录下学习笔记.下面均以标准帧为例 文章目录 1.C ...

  7. CANopen协议 学习笔记

    大纲 前沿:以问题为导向学习是最高效的,本文主要讲述在学习Canopen协议中的一些疑惑点, 分享一些学习心得,不讲协议本身的内容. 1.主机和从机的概念? 2.PDO和SDO的区别是什么? 3.OD ...

  8. 网络编程相关概念学习笔记

    C/S架构和B/S架构 C/S 架构 C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种 ...

  9. 数据库系统概念学习笔记2

    视图 view 直接操作数据库时,是在逻辑模型层操作的,即给定的集合中的关系都是实实在在存储在数据库中的 出于安全考虑,我们要隐藏特定的数据 在SQL中,允许定义虚关系,他在概念上包含查询的结果,虚关 ...

最新文章

  1. HTML form 标签的 enctype 属性
  2. CentOS安装EMACS文件夹树型图插件与颜色插件
  3. 小学五年级就已经开始编程啦吗???
  4. RabbitMQ之Exchange分类
  5. 雨棚板弹性法计算简图_钢结构工程量计算4点注意事项,还不来看?
  6. vSphere ESXi 5.5网络问题两例及解决方法
  7. 西电华为交换设备配置(6506)
  8. OpenCV关于隐马尔科夫模型的结构和函数
  9. 华为NP课程笔记5-中间系统到中间系统实验
  10. 【MATLAB】基本绘图 ( 绘图基本步骤 | plot 函数 | 多曲线绘制 | hold on / off )
  11. Jsp jsp实现原理
  12. Brunei Shell Marketing (BSM)选择P97的PetroZone(R)为文莱36个加油站提供壳牌驾驶者应用
  13. win10安装Mingw,看这里!
  14. Fedora安装字体方法和Ubuntu非常不同!
  15. cvpr2020 matlab_新zwpython 完胜 老matlab 篇二
  16. 闲鱼x-sign参数
  17. 腾讯企业邮箱无法登录
  18. Nginx 负载均衡 - fair
  19. 【ReadMe】博客导航 -- 针对本人原创博客内容进行分类(优先读)
  20. 利用阿里云大数据产品建设数据中台?

热门文章

  1. eos java_eos java · eosforce/eosforce Wiki · GitHub
  2. 斯诺登事件显然是一个分水岭
  3. 分库分表 or NewSQL数据库?终于看懂应该怎么选!【转】
  4. C语言中字符串库函数
  5. 永磁同步电机的矢量控制策略系列讲解
  6. 公司能不能监控你的微信聊天?
  7. 用代码拆掉你思维的墙
  8. 怎么剪切酷狗下载的音乐音频
  9. 业绩下滑、股价大跌,芯片厂商如何越过寒冬?
  10. 中国FTTx用户达1.2亿户 远超xDSL成主流