【CANopen】CANopen总线讲解

这篇具有很好参考价值的文章主要介绍了【CANopen】CANopen总线讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


STM32全部教程:【STM32】标准库与HAL库对照学习系列教程大全

一、前言

前面讲解了CAN总线的一些基础内容,这里来讲解一些在CAN总线的基础上提供的CANopen协议

CAN总线协议讲解与应用:【STM32】标准库与HAL库对照学习教程十四–CAN总线


二、CANopen概述

CANopen 是在 CAL 基础上开发的,使用了 CAL 通讯和服务协议子集,提供了分布式控制系统的一种实现方案。CANopen是CAN的一种应用层协议
CANopen 的核心概念是设备对象字典(OD:Object Dictionary),在其它现场总线(Profibus,Interbus-S)系统中也使用这种设备描述形式。

注:对象字典不是 CAL 的一部分,而是在 CANopen 中实现的。

CANopen协议是免许可证的,任何组织和个人都可以开发支持CANopen协议的设备而不用支付版税

2.1 CANopen网络模型

【CANopen】CANopen总线讲解

2.2 CANopen常见规范

  • CANopen协议是CAN-in-Automation(CiA)定义的标准之一,在欧洲,CANopen协议被认为
    是在基于CAN的工业系统中占领导地位的标准。大多数重要的设备类型,例如数字和模拟的输入输出模块、驱动设备、操作设备、控制器、可编程控制器或编码器,都在称为“设备描述”的协议中进行描述;“设备描述”定义了不同类型的标准设备及其相应的功能。
  • 依靠CANopen协议的支持,可以对不同厂商的设备通过总线进行配置。
    【CANopen】CANopen总线讲解

三、CANopen对象字典

对象字典(OD)英文名Object Dictionary,你可以理解为C语言中的数据地址,或者设备的地址,CANopen网络中每个节点都有一个对象字典。对象字典包含了描述这个设备和它的网络行为的所有参数。
所有的参数、参数值和功能都是通过16位索引值(index)和8位子索引(sub-index)组成的地址来访问和存取。如下表所示。

名称 Index Sub_Index Bits 属性 含义
Controlword 6040 00 10 RW 设备状态控制字
Modes of Operation 6060 00 08 RW 工作模式
Target_position 607A 00 20 W 目标位置

每个CANopen设备都有一个对象字典,使用电子数据文档(EDS:Electronic Data Sheet文件)来记录这些参数,而不需要把这些参数记录在纸上。

对象字典中描述通讯参数部分对所有CANopen设备都是一样的。其通用结构如下图所示。
【CANopen】CANopen总线讲解


四、CANopen通讯标识符

在我们学CAN通信的时候,知道我们靠设备ID识别不同种类的设备,CANopen里对ID进行了细化与规定,CANopen中的通信标识符(ID)叫做CAN-ID,通常把 CAN-ID 称为 COB-ID(通信对象编号)。

  • 每个CANopen帧都以COB-ID开头,COB-ID是数据帧的唯一标识符。

  • COB_ID越小报文优先级别越高。CANopen的COB_ID范围从0-77F。

  • COB_ID包括功能段(FUNCTION)地址段(NODE-ID)

如下图所示:
【CANopen】CANopen总线讲解

Node-ID由系统集成商定义。Node-ID范围是1~127(0不允许被使用)


五、CANopen协议概述

5.1 CANOpen协议报文分类

  • NMT 网络管理报文,作用是管理网络,切换节点的状态。一般由主站发送NMT网络管理报文。
  • SDO 服务数据对象报文,作用是设置设备参数,或者是一些关键数据的传输。一般由主站发起SDO报文,从站应答SDO报文。从站也可以发起SDO,主站响应,比如关键数据的传输。
  • PDO 过程数据对象报文,作用是传输一些设备的过程数据,比如传输温度,速度等等。主站和从站都会发送。
  • EMCY 紧急报文,作用是传输设备的故障信息。主站和从站都会发送。
  • SYNC 同步报文,作用是同步数据,用来同步从站的TPDO数据。一般由主站发送。比如从站的TPDO传输类型是在同步模式下,当从站收到设定次数的SYNC报文后,从站会发送TPDO。这个在后续的文章中详细阐述。
  • NODE GUARDING 节点保护报文,作用是主站请求从站的状态,主站询问,从站应答。这种模式逐渐已被淘汰,因为太占CAN总线网络带宽。
  • HeartBeat 心跳报文,作用是设备主动发送心跳,表示自己在线。主站和从站都可以发送。

5.2 CANopen状态机

CANOpen节点共包括:初始化、预操作、操作、停止这四个状态。状态机可以通过NMT服务相互切换,如下图所示。
【CANopen】CANopen总线讲解
【CANopen】CANopen总线讲解

5.3 CANopen数据帧格式

CANopen的数据帧格式如下图所示。
【CANopen】CANopen总线讲解
每个CANopen帧都以COB-ID开头,COB-ID是数据帧的唯一标识符,DLC表示传输多少个字节数据,Data表示传输的数据,最多8个字节。


六、NMT管理报文

  • 只有 NMT-Master 节点能够传送 NMT Module Control 报文。所有从节点必须支持 NMT 模块控制服务。
  • NMT Module Control 报文不需要应答。NMT 报文格式如下:
    【CANopen】CANopen总线讲解
    当Node-ID=0x0000时,则所有的NMT从站设备被寻址。CS是命令字,取值及含义如下:
    【CANopen】CANopen总线讲解

七、NODE GUARDING 节点保护报文

通过节点保护报文,NMT主节点可以监视每个从节点的当前状态

  • 主节点周期性的发送报文去询问从节点的状态,从节点收到主节点的问询后将自己的状态回复给主节点,在设定的时间内如果主节点没有收到从节点的信息或信息错误都会判断从节点通讯故障。
  • 主节点发送远程帧(只有COB-ID,无数据)
    【CANopen】CANopen总线讲解
    Bit7为触发位,在每次节点保护应答中交替“0”和“1”,在第一次节点保护时置0。
    【CANopen】CANopen总线讲解

注意:带*号的需要支持扩展BOOT-UP的节点才提供,状态0从不在节点保护中出现,因
为从节点在初始化状态中是不会应答报文的


八、HeartBeat 心跳报文

一个节点还可被配置为产生周期性的被称作心跳报文(Heartbeat)的报文,从节点周期将该报文发送给消费者,消费者可以通过报文中的状态值得知从节点的状态。结构如下图所示。
【CANopen】CANopen总线讲解
注:
1、心跳报文(HeartBeat)的消费者通常是主节点,它为每一个心跳节点设置一个超时时间,当超时是采取相应的动作。
2、一个节点不能同时使用节点保护报文和心跳报文。


九、BOOT-UP 节点启动报文

从节点(NMT-slave)发布Boot-UP报文通知主节点(NMT-Master)它已经从初始化状态(initialising)进入预准备(pre-operational)状态。如下图所示。
【CANopen】CANopen总线讲解


十、EMCY 紧急报文

紧急报文当设备内部出现的致命错误触发,以最高优先级发送到其它设备。适用于中断类型
的错误报警信号。一个紧急报文包含8个字节,报文格式如下:
【CANopen】CANopen总线讲解
Byte0-1,16 进制的应急错误代码如下表所示。应急错误代码中‘xx’部分由相应的设备子协议定义。
【CANopen】CANopen总线讲解
Byte2 错误寄存器:错误寄存器(Error Register)在设备的对象字典(索引 0x1001)中,下表说明了错误寄存器的位定义。设备可以将内部错误映射到这个状态字节中,并可以快速查看当前错误。

Bit Index
0 通用的(generic)
1 电流(current )
2 电压(voltage)
3 温度(temperature)
4 通信(communication)
5 设备配置文件特性(device profile specific)
6 Reserved(=0)
7 制造商特性(manufacturer specific )

十一、SDO 服务数据对象报文

  • 主要用来在设备之间传输低优先级的对象,典型是用来对从设备进行配置、管理,比如用来修改速度环、位置环的PID参数,PDO配置参数等。
  • 通过使用索引和子索引SDO使客户机能够访问设备对象字典中的对象。
  • 通常情况下传输的数据长度不超过4个字节,当数据长度超过4个字节是分拆成几个报文。
  • 议是确认服务类型:每个消息生成一个应答。SDO请求和应答报文总是包含8个字节。

SDO中的COB-ID定义规则如下:
【CANopen】CANopen总线讲解

SDO读报文如下:
【CANopen】CANopen总线讲解
命令字:0x40
【CANopen】CANopen总线讲解
【CANopen】CANopen总线讲解
SDO写报文如下:
【CANopen】CANopen总线讲解
【CANopen】CANopen总线讲解
【CANopen】CANopen总线讲解
【CANopen】CANopen总线讲解

SDO通讯失败,从站回复报文如下:
【CANopen】CANopen总线讲解
后4个字节是被称为是中止代码,通过中止代码能得知出错的原因。中止代码如下:
【CANopen】CANopen总线讲解


十二、PDO 过程数据对象报文

  • 用来传输实时数据,数据从一个生产者传到一个或多个消费者。1个PDO1次最多传输8个字节的数据
  • 每个PDO在对象字典中用2个对象描述:
    • PDO通讯参数:包含COB_ID,传输类型,禁止时间,定时器周期。
    • PDO映射参数:包含对象字典中对象列表,这些对象映射到PDO里,包含数据长度。生产者和消费者根据映射的地址解释PDO内容。
  • 报文内容是预定义的(或者在网络启动时由主配置)

12.1 PDO参数

  • 发送PDO通讯参数(1800h-19FFh)和接收PDO通讯参数(1400h-15FFh)
  • PDO通讯参数说明了PDO的基本特性,如COB-ID、传输类型、禁止时间和事件定时器等,它决定了PDO是以何种方式发送和接收数据
  • PDO禁止时间:两个连续PDO传输的最小间隔时间,避免由于高优先级信息的数据量太大,始终占据总线,而使其它优先级较低的数据无力竞争总线的问题。禁止时间由16位无符号整数定义,单位为1ms
  • PDO定时周期:当超过定时时间后一个PDO可以被触发,周期有16位无符号数定义,单位1ms

12.2 PDO的COB-ID

【CANopen】CANopen总线讲解

12.3 PDO的传输类型

  • 同步(通过接收SYNC对象实现同步)
    • 非周期:由远程帧预触发传送,或者由设备子协议规定中的对象特定事件预触发传送
    • 周期:传送在每1到240个SYNC消息后触发。
  • 异步
    由设备协议中规定的对象特定事件触发传送。

图表如下:
【CANopen】CANopen总线讲解

12.4 PDO映射

  • 说明了PDO中所包含的通讯对象,决定了发送或接收的数据内容
  • 传输映射(1A00h-1BFFh)
  • 接收映射(1600h-17FFh)

12.5 PDO报文

【CANopen】CANopen总线讲解


十三、SYNC 同步报文

同步报文的CAN-ID固定是0x80,数据长度是0或1。同步报文是生产者消费者模型,由主站发出,同步从站的TPDO。
【CANopen】CANopen总线讲解

  • 通讯循环周期:索引1006h,规定了同步帧的循环周期
  • 同步窗口时间:索引1007h,约束了同步帧发送后从节点发送PDO的时效,即在这个时间内发送的PDO才有效超过时间的PDO将被丢弃

同步报文的数据帧如下:
【CANopen】CANopen总线讲解
同步报文的作用:

  • 同步报文用于控制TPDO(如实际位置,状态字)的发送;
  • 同步报文用于控制RPDO(如目标位置)的激活;
  • 同步报文用于同步各个节点的时钟。

传输类型:

  • 0非循环
  • 1-240的传输类型就是指经过多少个同步报文后,发送TPDO
    【CANopen】CANopen总线讲解
    伺服周期性同步位置模式(CSP)原理:
  • 伺服工作在7号插补模式,上位控制器完成位置指令规划,然后将规划好的目标位置607A以周期性同步的方式发送给伺服驱动器。控制器发送目标位置的周期必须是伺服驱动器位置环周期的整数倍。
  • 控制器周期性的发送同步报文,比如1mS,2mS或者4mS等,驱动器主动通过微调自身控制环频率将控制环(电流环、速度环、位置环)和同步信号同步,从而实现多个驱动器同步工作。
  • 控制器发送RPDO给各个驱动器,比如目标位置,在下一个同步报文到来后,驱动器将指令激活,所有的驱动器同时更新指令,从而实现同步。
  • 在运行同步工作模式的时候,SDO和TPDO也是允许的,但是发送的时机是需要检测的。因为RPDO是最重要的数据,必须优先保证RPDO的接收,然后在空闲时间才可以发送SDO和TPDO。一个比较合理的排列是:同步周期里面,前半时间用于SDO以及TPDO的发送,后半时间用于RPDO的接收。
  • 驱动器接收到设定位置后与当前位置比较,并依据控制器的周期与伺服位置环周期的倍数进行线性或非线性插值,将插值作为每个位置环周期的“设定位置”。

【CANopen】CANopen总线讲解文章来源地址https://www.toymoban.com/news/detail-403613.html

到了这里,关于【CANopen】CANopen总线讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32——关于GPIO讲解及标准库应用(基础篇)

     STM32是一系列基于ARM Cortex-M内核的32位微控制器。该系列微控制器广泛应用于计算机、通讯、工业自动化、消费电子、汽车电子、医疗仪器及家庭电器等领域。该系列控制器具有高性能、低功耗、智能化等特点。其中,GPIO就是STM32控制器中的一种重要的通用输入输出口。   

    2024年04月23日
    浏览(17)
  • STM32——关于NVIC讲解及标准库应用(基础篇)

            NVIC是指STM32中的中断控制器(Nested Vectored Interrupt Controller)。中断是STM32中的重要机制,通过中断可以实现异步事件处理。NVIC提供了灵活、高效、可扩展的中断处理机制,支持多级优先级、多向中断、嵌套向量中断等特性,是STM32中的重要组件。         当S

    2024年02月16日
    浏览(21)
  • 【CANopen】关于STM32的CanFestival移植

    使用STM32F407单片机 CanFestival下载 默认都会,略 在CubeMX生成代码路径下创建一个文件夹,将 源码目录下的include和src 两个文件夹复制进去 首先是 include 文件夹,如图所示, 其中,timers.h大概率会和CubeMX中生成的文件名重名,所以需要重命名 这个文件夹改名后需要修改 srctim

    2024年01月17日
    浏览(36)
  • 基于STM32的CANopen通信项目(具备FreeRTOS)

    本文档主要介绍如何使用STM32移植CANopen协议,实现正常的数据收发。 硬件:STM32 canopen库:Mongo-canfestival-3-asc源码 MCU程序库:HAL库

    2024年02月05日
    浏览(46)
  • 【正点原子STM32】RS485串行通信标准(串口基础协议 和 MODBUS协议、总线连接、通信电路、通信波形图、RS485相关HAL库驱动、RS485配置步骤、)

    一、RS485介绍 二、RS485相关HAL库驱动介绍 三、RS485配置步骤 四、编程实战 五、总结 串口、UART、TTL、RS232、RS422和RS485之间的关系可以如此理解: 串口 :是一个广义术语,通常指的是采用串行通信协议的接口,它可以包括多种具体的物理接口标准和逻辑电平标准。 UART (通用

    2024年04月13日
    浏览(47)
  • 基于Canfesitival的Canopen从站程序stm32 canopen从站通信代码,已经过主控测试,异步心跳模式

    基于Canfesitival的Canopen从站程序 stm32 canopen从站通信代码,已经过主控测试,异步心跳模式,目前经测试数据更新速率可达200hz 支持多pdo传输。 配备对应eds文件。 以及实测can传输报文 此版本为裸机定时器代码 已经使用plc测试过.支持T R_PDO传输。 基于Canfesitival的Canopen从站程序

    2024年03月11日
    浏览(64)
  • 手把手教你STM32入门教程(标准库)

    目录 前言 步骤一:准备工作 步骤二:安装Keil MDK-ARM开发工具 步骤三:创建工程 步骤四:配置工程 步骤六:编写代码 步骤七:下载程序   总结 在物联网时代,嵌入式系统的应用越来越广泛,而STM32作为业内领先的嵌入式芯片之一,受到了越来越多开发者的关注和喜爱。然

    2024年02月12日
    浏览(34)
  • 【STM32】标准库 菜鸟入门教程(1)初识最小系统

    本教程突出两个字,“细”和“简”,也就是详细跟简洁。所用知识涉及到的原理会详细讲明,再而,在排版以及描述上会采取简约风格,进行实例讲解的时候,包含图片过程以及文字过程两部分,因此适合小菜鸟入门。本次使用的是stm32f103c8t6也就是最小系统板作为实验对象

    2024年02月07日
    浏览(35)
  • [入门教程]详细讲解STM32控制LED点阵屏(HUB75接口)

    本文适合初级入门的同学,大佬请绕道。讲解怎么用stm32驱动成品LED点阵屏显示一副七色无灰度的图片,有灰度的图片可以入门后继续研究。   使用软硬件: 软件:Keil5,程序在后面会给出 硬件:STM32F103最小系统、全彩色P4LED点阵屏(HUB75接口,16扫) 说下stm32驱动LED点阵屏用

    2024年01月19日
    浏览(54)
  • 【明解STM32】一文读懂STM32芯片总线

    目录 一、前言 二、总线基础知识概述 (1)、总线在芯片中的角色 (2)、总线的类型 (3)、总线的指标 (4)、AHB和APB 三、总线框架结构 (1)、结构类型 (2)、总线模块 (3)、总线交互 四、总结         本篇介绍STM32芯片内部的总线系统结构,嵌入式芯片内部的总线和计算机总线类似

    2024年02月07日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包