当前位置: 首页 > news >正文

CAN总线应用协议CANopen

作为一种真正开放的CAN总线高层协议,CANopen协议允许不同的CAN设备以标准化的方式进行通讯,这使得CAN 设备具有互操作性随着CANopen协议的日益完善,它已经广泛应用于多个行业本文将对CANopen协议的对象字通讯对象、网络管理等几个方面进行简要分析。

一、CANopen对象字典

CANopen对象字典OD(Object Dictionary)是CANopen协议最为核心的概念。

所谓的对象字典就是一个有序的对象组,每个对象采用一个16位的索引值来寻址,这个索引值通常被称为索引,其范围在0x1000~0x9FFF之间。为了允许访问数据结构中的单个元素,同时也定义了一个8位的索引值,这个索引值通常被称为子索引。

每个CANopen设备都有一个对象字典,对象字典包含了描述这个设备和它的网络行为的所有参数,对象字典通常用电子数据文档EDS( Electronic Data Sheet )来记录这些参数,而不需要把这些参数记录在纸上。对于CANopen网络中的主节点来说,不需要对CANopen从节点的每个对象字典项都访问。

CANopen对象字典中的项由一系列子协议来描述。子协议为对象字典中的每个对象都描述了它的功能、名字、索引、子索 引、数据类型 ,以及这个对象是否必需、读写属性等等,这样可保证不同厂商的同类型设备兼容。

CANopen协议的核心描述子协议是DS301 ,其包括了CANopen协议应用层及通信结构描述 ,其他的协议子协议都是对DS301 协议描述文本的补充与扩展。在不同的应用行业都会起草一份CANopen设备子协议 ,子协议编号一般是DS4xx。

CANopen协议包含了许多的子协议 ,其主要划分为以下三类 :

1、通信子协议( Communication Profile )

通信子协议,描述对象字典的主要形式和对象字典中的通信对象以及参数。这个子协议适用所有的CANopen设备 ,其索引值 范围从0x1000~0x1FFF

2、制造商自定义子协议( Manufacturer-specific Profile )

制造商自定义子协议,对于在设备子协议中未定义的特殊功能 ,制造商可以在此区域根据需求定义对象字典对象。因此这个区 域对于不同的厂商来说 ,相同的对象字典项其定义不一定相同 ,其索引值范围为0x2000~0x5FFF

3、设备子协议(Device Profile)

设备子协议,为各种不同类型的设备定义对象字典中的对象。 目前已有十几种为不同类型的设备定义的子协议 ,例如 DS401、DS402、DS406等 ,其索引值范围为0x6000~0x9FFF

二、通讯对象

CANopen网络的通讯是以报文的方式传送 ,CANopen通讯模型定义了四种报文,也即四种通讯对象 ,分别是管理报文、服务数据对象SDO(Service Data Object)、过程数据对象PDO( Process Data Object )、预定义报文或者特殊功能对象 ,下面分别介绍。

1、管理报文

层管理,网络管理和ID分配服务 :如初始化 ,配置和网络管理(包括 :节点保护)。服务和协议符合CAL中的LMT ,NMT和DBT服务部分。这些服务都是基于主从通讯模式 :在CAN网络中 ,只能有一个 LMT ,NMT或DBT主节点以及一个或多个从节点。

2、服务数据对象SDO(Service Data Object)

通过使用索引和子索引(在CAN报文的前几个字节),SDO使客户机能够访问设备(服务器)对象字典中的项(对象)。SDO通过CAL中多元域的CMS对象来实现 ,允许传送任何长度的数据(当数据超过4个字节时分拆成几个报文)。

协议是确认服务类型:为每个消息生成一个应答( 一个SDO需要两个ID )。SDO请求和应答报文总是包含8个字节(没有意 义的数据长度在第一个字节中表示 ,第一个字节携带协议信息)。SDO通讯有较多的协议规定。

3、过程数据对象PDO( Process Data Object )

用来传输实时数据 ,数据从一个生产者传到一个或多个消费者。数据传送限制在1到8个字节(例如,一个PDO可以传输最多 64个数字I/O值 ,或者4个16位的AD值)。

PDO通讯没有协议规定。 PDO数据内容只由它的CAN ID定义 ,假定生产者和消费者知道这个PDO的数据内容。

每个PDO在对象字典中用2个对象描述 :

PDO通讯参数 :包含哪个COB-ID将被PDO使用 ,传输类型 ,禁止时间和定时器周期。

PDO映射参数 :包含一个对象字典中对象的列表 ,这些对象映射到PDO里 ,包括它们的数据长度( in bits )。生产者和消费者必须知道这个映射 ,以解释PDO内容。

PDO消息的内容是预定义的(或者在网络启动时配置的):

映射应用对象到PDO中是在设备对象字典中描述的。如果设备(生产者和消费者)支持可变PDO映射 ,那么使用SDO报文可 以配置PDO映射参数。

PDO可以有多种传送方式 :

同步(通过接收SYNC对象实现同步)

        非周期 :由远程帧预触发传送 ,或者由设备子协议中规定的对象特定事件预触发传送。

        周期 :传送在每1到240个SYNC消息后触发。

异步

        由远程帧触发传送。

        由设备子协议中规定的对象特定事件触发传送。

4、预定义报文或者特殊功能对象

同步( SYNC )

        在网络范围内同步(尤其在驱动应用中) 在整个网络范围内当前输入值准同时保存 ,随后传送(如果需要) 据前一个 SYNC后接收到的报文更新输出值。

        主从模式 :SYNC主节点定时发送SYNC对象 ,SYNC从节点收到后同步执行任务。

        在SYNC报文传送后 ,在给定的时间窗口内传送一个同步PDO

        用CAL中基本变量类型的CMS对象实现。

        CANopen建议用一个最高优先级的COB-ID以保证同步信号正常传送。SYNC报文可以不传送数据以使报文尽可能短。

时间标记对象( Time Stamp )

        为应用设备提供公共的时间帧参考。

        用CAL中存储事件类型的CMS对象实现。

紧急事件( Emergency )

        设备内部错误触发。

        用CAL中存储事件类型的CMS对象实现。

节点/寿命保护( Node/Life guarding )。

        主从通讯模式

        NMT主节点监控节点状态 :称作节点保护( Node guarding )。

        节点也可以(可选择)监控NMT主节点的状态 :称作寿命保护( Life guarding )。当NMT从节点接收到NMT主节点发送的第 一个Node Guard报文后启动寿命保护。

        检测设备的网络接口错误(不是设备自身的错误) 通过应急指示报告。

        根据NMT节点保护协议实现 :NMT主节点发送远程请求到一个特定节点 ,节点给出应答 ,应答报文中包含了这个节点的状 态。

上面提到的通讯对象类型中有二个对象用于数据传输。它们采用二种不同的数据传输机制实现 :

        SDO用来在设备之间传输大的低优先级数据 ,典型的是用来配置CANopen网络上的设备。

        PDO用来传输8字节或更少数据 ,没有其它协议预设定(意味着数据内容已预先定义)。

一个CANopen设备必须支持一定数量的网络管理服务(管理报文 ,administrative messages ),需要至少一个SDO。每个生 产或消费过程数据的设备需要至少一个PDO。所有其它的通讯对象是可选的。

三、网络管理(NMT)

        网络管理(NMT)用来管理网络设备的状态 ,它是主从关系的结构。CANopen设备通过一个启动报文发送一个信号给NMT master这个启动报文是在网络上被初始化、激活的。用NMT命令可以改变单个设备或整个网络设备的状态 ,每一个设备的   状态是由特定属性决定的。

        只有在OPERATIONAL状态 ,PDO才能被传输;在PRE_OPERATIONAL的条件下配置设备。监控CANopen设备的通信状态可选“Node-Guarding”或“Heartbeat”,为报告设备错误定义了报警报文 ,这些高优先级的紧急报文 通过事件导向传输;错误发生时 ,标准的错误代码详细描述了错误信息。

相关文章:

CAN总线应用协议CANopen

作为一种真正开放的CAN总线高层协议,CANopen协议允许不同的CAN设备以标准化的方式进行通讯,这使得CAN 设备具有互操作性。随着CANopen协议的日益完善,它已经广泛应用于多个行业。本文将对CANopen协议的对象字典、通讯对象、网络管理等几个方面…...

htop安装不了怎么解决

🌟🌌 欢迎来到知识与创意的殿堂 — 远见阁小民的世界!🚀 🌟🧭 在这里,我们一起探索技术的奥秘,一起在知识的海洋中遨游。 🌟🧭 在这里,每个错误都…...

vue 笔记02

目录 01 事件修饰符 02 按键修饰符 03 v-bind属性 04 vue-axios的基本使用 05 vue的生命周期 06 vue生命周期涉及到的其他的知识点 01 事件修饰符 vue的事件修饰符 事件名称.修饰符1.修饰符2...事件驱动函数 stop 阻止冒泡修饰符 prevent 阻止默认行为 once 当前事件只触…...

MySQL8.0免安装及phpmyadmin配置

安装包解压,运行mysqld文件后,启动net start,提示成功,但进入phpmyadmin登录页面后,输入用户名,提示不支持空密码,config.default.php设置密码后,提示 mysqli::real_connect(): (HY…...

【目标解算】相机内外参数详细解读+坐标系转换

一、相机参数介绍 1.1 相机内参矩阵 概念:内参矩阵用于描述相机的内部参数,它包含了相机的焦距、主点坐标和图像的畸变等信息。内参矩阵的形式通常为一个3x3的矩阵,常用表示为K。内参矩阵可以将相机坐标系中的三维点映射到图像平面上的二维…...

【Unity】颜色混合计算

在图形渲染中,颜色混合(Color Blending)是指将多个颜色值组合在一起以生成最终显示的颜色。颜色混合技术广泛用于处理半透明效果、光照效果和后期处理效果。以下是一些常见的颜色混合模式: 1. 正常混合(Normal Blendi…...

Vue源码解析

入门级 <body><div id"app"></div><script>class Vue {constructor(options) {// thisVue 把options.created的this 指向Vue实例options.created.bind(this)();// this.$el 指向#appthis.$el document.querySelector(options.el);// 把opt…...

Linux---网络相关配置

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 一台主机需要配置必要的网络信息&#xff0c;才可以连接到互联网&#xff0c;需要的配置网络信息包括IP&#xff0c;子网掩码&#xff0c;网关和DNS。 一.查看网络信息 查看IP信息可以通…...

MATLAB分类与判别模型算法:基于Fisher算法的分类程序【含Matlab源码 MX_002期】

算法思路介绍&#xff1a; 费舍尔线性判别分析&#xff08;Fishers Linear Discriminant Analysis&#xff0c;简称 LDA&#xff09;&#xff0c;用于将两个类别的数据点进行二分类。以下是代码的整体思路&#xff1a; 生成数据&#xff1a; 使用 randn 函数生成随机数&#x…...

长文总结 | Python基础知识点,建议收藏

测试基础-Python篇 基础① 变量名命名规则 - 遵循PEP8原则 普通变量&#xff1a;max_value 全局变量&#xff1a;MAX_VALUE 内部变量&#xff1a;_local_var 和关键字重名&#xff1a;class_ 函数名&#xff1a;bar_function 类名&#xff1a;FooClass 布尔类型的变量名…...

centos中使用Docker安装rabbitmq记录

一、安装rabbitmq docker run -d --name rabbitmq -p 5672:5672 -p15672:15672 -v rabbitmq-plugin:/plugins -e RABBITMQ_DEFAULT_USERxiaoqi -eRABBITMQ_DEFAULT_PASS123456 rabbitmq:latest二、配置web管理界面 # 查看运行的容器 docker ps -a # 根据容器id进入容器内部 …...

STM32系列-STM32介绍

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” STM32介绍 STM32介绍 ST&#xff1a;指的是意法半导体 M&#xff1a;指定微处理器 32&#xff1a;表示计算机处理器位数 ARM分成三个系列&#xff1a; Cortex-A&#xff1…...

网络原理 一

一、协议 网络通信中,协议是非常重要的概念. 协议进行了分层,此处就是按照这几层顺序来介绍每一层中的核心协议. 应用层,就对应着应用程序,是程序员打交道最多的一层,调用系统提供的 网络api 写出的代码都是基于应用层的. 应用层这里当然也有很多现成的协议,但更多的还是,程…...

xcode配置快速打开终端命令行工具教程

以往我们使用idea编辑器或者vscode编辑器的时候&#xff0c;我们可以快速的在编辑器下面打开终端进行相关的操作&#xff0c;但是在xcode里面却没有这么方便的功能按钮&#xff0c;真的不是很习惯&#xff0c;所以这次就来给xcode配置这么一个方便的功能。 idea的Terminal 这…...

AIGC降重:如何2分钟降低论文AI率和查重率?推荐使用SpeedAI科研小助手

确保学术论文的独立性与诚信性&#xff0c;对于学业的成就及学位的获取至关重要&#xff0c;其中&#xff0c;论文的人工智能查重与降低AIGC相似度扮演着核心角色。 常规的查重手段主要围绕查重软件的运用和个体的自行审查&#xff1b;而降重则通常通过语句重组、同义替换、内…...

Blazor入门-连接MySQL的简单例子:列出数据+简单查询

参考&#xff1a; ASP.NET Core 6.0 Blazor Server APP并使用MySQL数据库_blazor mysql-CSDN博客 https://blog.csdn.net/mzl87/article/details/129199352 本地环境&#xff1a;win10, visual studio 2022 community, mysql 8.0.33 (MySQL Community Server), net core 6.0 目…...

CEEMDAN +组合预测模型(CNN-Transfromer + XGBoost)

注意&#xff1a;本模型继续加入 组合预测模型全家桶 中&#xff0c;之前购买的同学请及时更新下载! 往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 VMD CEEMDAN 二次分解&#xff0c;Transformer-BiGRU预测模…...

箭头函数的意义和函数的二义性

前言 说到箭头函数&#xff0c;可能很多人的第一反应就是和普通函数的区别&#xff1a; 箭头函数没有 this&#xff0c;普通函数的 this 指向依赖它是如何被调用的箭头函数没有 arguments 对象&#xff0c;而是通过剩余参数&#xff08;rest parameters&#xff09;来获取所有…...

618必买的数码好物有哪些?盘点兼具设计与实用的数码好物分享

随着618购物节的到来&#xff0c;数码爱好者们又开始跃跃欲试&#xff0c;期待在这个年度大促中寻找到自己心仪的数码好物&#xff0c;在这个数字化时代&#xff0c;数码产品不仅是我们日常生活的必需品&#xff0c;更是提升生活品质的重要工具&#xff0c;那么在众多的数码产品…...

【好书分享第十三期】AI数据处理实战108招:ChatGPT+Excel+VBA

文章目录 一、内容介绍二、内页插图三、作者简介四、前言/序言五、目录 一、内容介绍 《AI数据处理实战108招&#xff1a;ChatGPTExcelVBA》通过7个专题内容、108个实用技巧&#xff0c;讲解了如何运用ChatGPT结合办公软件Excel和VBA代码实现AI办公智能化、高效化。随书附赠了…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...