CANopen协议 学习笔记

2023-11-07

大纲

前沿:以问题为导向学习是最高效的,本文主要讲述在学习Canopen协议中的一些疑惑点,

分享一些学习心得,不讲协议本身的内容。

1.主机和从机的概念?

2.PDO和SDO的区别是什么?

3.OD存在的意义是什么?

4.心跳检测的意义?0x00、0x05、0x7f?

5.COB-ID和PDO的ID有关系吗?SDO的ID是主机的ID还是从机的ID?

COB-ID = Function code+node_id

6. PDO,SDO  数据存在几个字节,心跳节点 数据存在几个字节?

7.PDO主要关系的几点?   触发方式+通讯参数和映射参数

8.SDO传输的三种方式?

9.通讯模型 : 服务器到客户端、消费者和生产者等。

10.CANOPEN 与CAN的不同点

1. 通讯模型 

  (1)服务器到客户端 :客户端发送数据,服务器需要回传数据      (SDO)

  (2)消费者和生产者 :生产者发送数据,消费者不需要返回数据(PDO)

  (3)主机和从机   Canopen协议中NMT模式控制节点的状态,启动状态、预准备状态、

工作状态、停止状态

2. 主机和从机的概念

        对于从站而言发送消息给主站就是TPDO模式,其中TPDO总共有4个。

        对于从站接收主站的消息就是RPDO模式,其中RPDO总共有4个。


3. PDO 和SDO、NMT区别

  • PDO:根据模式从机选择定时发送数据或者等数据变化在发送数据给主机,以请求主机

做出一些列相应。

        模型:生产者(producter)和消费者(comsumer)模式,接收方不会返回数据值

  • SDO:通过主机发送命令(cs+主索引+子索引+4个字节数据),对对象字典进行操作改变数据

,如改变波特率,心跳的时间以及对于模式选择的切换,通过SDO_Handle进行处理即可。

       模型:客户端(client) 和服务器(service)模型

  •  NMT: 主机控制节点状态 

        状态(4个):节点上线(boot up)、预准备节点(pre-operational)、节点运行(operational)、节点停止(stoped)

        模型:主机(host)和从机(slave)


4.OD存在的意义是什么?

        作为用户预先定义的数据库,实现参数的赋值给函数中的一些变量。通过功能码SDO命令修改。

通过SDO模式可以修改对象字典中的一些值。主索引,子索引相当于书的目录,上位机通过发送CS命令读写

其中的数据,实现对于全局变量的修改,如对波特率的修改、心跳时间间隔的修改等


5.心跳检测的意义?0x00、0x05、0x7f?

      1.是主机检测从机的方式,从机发送心跳包,主机接收到心跳包后,才会向从机发送消息

否则主机就认为从机存在故障。

       0x00    boot up   节点上线

       0x7f     节点在准备状态

       0x05    节点在工作状态

       0x04    节点停止状态

                  

        

             通过这个的设置,上位机可以通过NMT命令控制节点的状态,其命令中运行的参数主要就是心跳报文的状态

=========================在编写接收函数的时候需要考虑以下设计内容============================

1.NMT mode   主机通过命令管理从机的状态,如节点的上线,预先准备状态,工作状态,停止状态,复位状态等等

                        1.首先通过功能模式进入NMT管理模式   COB-ID=000

                        2.buf[1]是节点地址,buf[0]是命令码,为什么要存在buf[1],存放的是节点的ID,判断是不是我想控制的ID即可。

                         通过switch方式,可以控制节点的工作状态。

                                   

2.SDO mode     主机通过命令修改相关参数实现相应的功能(节点不工作在停止状态 0x7f)(这个描述的很抽象)

                           特别的,SDO和PDO将节点地址放在COB-ID中,主机发送命令给从机,判断是否是相同的ID,就可以操作

                         相应的功能。SDO传输数据是8个字节(CS(1byte)+主索引(2byte)+子索引(1byte)+数据4byte)

3.RPDO mode          前提: (heartbeat.buf[ 0 ] = 0x05),

                                 1. 如果主机发送消息,下位机接收到消息

                                 2. 复制接收到的消息给一个全局变量(为了进行数据比较,不同变量之间才可以比较)

                                 2. 从站自己做出相应的命令,如通过数据对一个引脚控制另一个引脚等等作用


6.COB-ID和PDO的ID有关系吗?SDO的ID是主机的ID还是从机的ID?

         COB-ID = 功能码(7bit)+节点ID(4bit)

         NMT :功能码000

         SDO   功能码 581和601

         PDO   功能码  181和其他总共有8个

          Heartbeat  701


7. PDO,SDO  数据存在几个字节,心跳节点 数据存在几个字节?

                PDO :1~8个字节长度

                SDO存在8个字节 (CS+主索引+子索引+date)

                HEARTBEAT心跳节点存在1个字节  (存放节点状态)

                NMT模式存在2个字节 (存放控制状态与控制从机的ID)

             


8.PDO配置主要考虑那几点?   触发方式+通讯参数和映射参数

      1)触发方式:

      1.时间触发+事件触发

      2.同步(sync)和异步方式

      2)通讯参数  +   映射参数 : 

              

     3)同步传输和异步传输的区别:


9.SDO传输的三种方式?

          SDO传输方式主要有两种,快速传输方式和普通传输方式

  • 快速SDO:来回一次就能搞定,读取和写入的值不能大于32位

10.CANOPEN 与CAN的不同点

不同点的角度:从OSI 7层网络模型

  • CAN(controller Area Network)只规定了物理层和数据链层,这些都是通过硬件实现。

普通的CAN只需要关系收发以及收发的标志位即可,收发的速度(波特率)等。

  • CANopen 规定了应用层,能够兼容不同厂商之间进行通信的方式。

     CANopen协议规范文本经过多次修改,CiA在CiA301基础上,对各个行业退出设备子协议

    关于设备子协议,就是对不同行业的应用对象,对CANopen内部的数据含义进行重新定义,

或添加新的控制逻辑。

下图是描述不同协议的编号:

    下图是CANopen协议的框架

      

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CANopen协议 学习笔记 的相关文章

随机推荐

  • SpringCloud:SpringCloud生态的组成,组件的介绍(一)

    springCloud官方文档 https www springcloud cc 中文网 https spring io projects spring cloud 官方网 SpringCloud是什么 Spring Cloud是一个基于S
  • 一文读懂:区块链中的Merkle树

    我们知道 区块链中每个区块包括区块头和区块体两部分 个人技术公众号 解决方案工程师 欢迎同领域的朋友关注 相互交流 像在CSDN一样 分享技术 分享代码 分享方案文档 分享白皮书 区块体中包含了由区块链系统产生的一系列交易数据 并以Merk
  • SLAM入门

    SLAM定义 SLAM Simultaneous localization and mapping 同时定位 我在哪里 与建图 我周围有什么 当某种移动设备 汽车 扫地机 手机 无人机 机器人 从一个未知环境的未知地点出发 在运动过程中 通
  • P27 多表查询的分类:非等值连接、自连接、内、外连接

    3 多表查询的分类 7 多表查询的分类 角度1 等值连接 vs 非等值连接 角度2 自连接 vs 非自连接 角度3 内连接 vs 外连接 等值连接 vs 非等值连接 SELECT FROM job grades 非等值连接 薪资是在一个范围
  • airpods固件更新方法_AirPods2/AirPods Pro新固件怎么升级 固件更新方法

    17日上午 苹果公司发布了针对 AirPods 2 和 AirPods Pro 两款无线耳机的的固件更新 不过目前官方并未说明此次更新的具体改进 AirPods Pro 是苹果 10 月底推出的新品 支持主动降噪功能 在今天之前 它的固件版
  • MySQL数据库基本概念介绍

    MySQL数据库 一 数据库的简介 1 数据 Data 2 表 3 数据库 二 数据库的概念 1 数据库管理系统 DBMS 2 数据库系统 三 数据库的发展史 1 第一代数据库 2 第二代数据库 3 第三代数据库 四 当前主流数据库介绍 1
  • 搜索引擎solr系列---与java的springboot项目连接配置

    java与solr连接 调用查询的方式 我知道的有两种 solrj方式 这种方式写法较麻烦 倒不是因为难 就是简单的逻辑 有时候为了一个业务写一堆代码 所以solrj的这种方式还是比较灵活的 能实现你需要的变态业务需求 我发现它的一个小缺点
  • SpringBoot 3.x整合Fluent Mybatis极简流程

    此为基础配置 不包括其他高级配置 需要其他高级配置请查阅官方文档 fluent mybatis特性总览 Wiki Gitee com https gitee com fluent mybatis fluent mybatis wikis f
  • 软件测试学习路线

    下图是某培训机构的课程概要 同样的 我们学习的路线基本如此 下面主要总结一下 注意 因为自身原因 所以我的方案是自己的自学方案 仅作参考 1 测试基础知识 一些测试必备文档以及概念要掌握 这是最基本的 1 gt 测试分类 按测试技术划分为
  • 实验吧——加了料的报错注入

    coding utf8 import requests import re def denglu username password 设置代理 用于调试过程中抓包分析 proxies http http localhost 9008 htt
  • 了解文件的随机读写,文件类别、文件缓冲区,文件操作知识点补充(接上文)

    文件的操作 老规矩笔记自取 文件操作进阶笔记 欢迎喜欢学习C C 的朋友互关一起努力 文章目录 文件的操作 一 文件的随机读写 1 fseek 定位文件指针函数 2 ftell 当前偏移量函数 3 rewind 返回起始位置函数 二 文本文
  • java操作seaweedfs

    前置条件是seaweedfs服务已成功启动 具体部署可参考我上篇文章SeaweedFS部署及使用指南 首先导入pom依赖
  • Python Scrapy网络爬虫框架从入门到实战

    Python Scrapy是一个强大的网络爬虫框架 它提供了丰富的功能和灵活的扩展性 使得爬取网页数据变得简单高效 本文将介绍Scrapy框架的基本概念 用法和实际案例 帮助你快速上手和应用Scrapy进行数据抓取 Scrapy是一个基于P
  • SpringMVC源码总结 ViewResolver介绍

    首先我们先看看ModelAndView中重要的View接口 View接口 Java代码 String getContentType Render the view given the specified model p The first
  • QT翻金币小游戏实现(三)

    4 创建翻金币场景 4 1创建翻金币界面 设计好主场景以及选择关卡界面以后 就来到了最重要的一环 翻金币 首先还是创建一个cpp文件命名为PlayScene 第一步在选择关卡中声明PlayScene pScene NULL 方便后面使用 点
  • 模拟点击事件

    一 通过代码模拟用户对按钮的点击 模拟按钮的点击 方法一 使用btn click模拟用户的点击 btn click 方法二 两秒之后自动松开按钮 btn animateClick 2000 区别是方法一没有什么动画 界面展示 方法二有时间效
  • C#笔记9——基于TableLayoutPanel的多分屏、全屏程序

    C 笔记9 基于TableLayoutPanel的多分屏 全屏程序 最近由于工作需要 需要设置一个多分屏窗口以便于多分屏播放视频 思考了一下 大致思路如下 用TableLayoutPanel来划分多个区域 在每个区域中都放入一个Pictur
  • windows下composer切换php不同版本使用

    D object cms gt D sf phpStudy 64 phpstudy pro Extensions php php7 3 4nts php exe D sf phpStudy 64 phpstudy pro Extension
  • A²B汽车音频总线介绍

    A B使远程I S TDM成为可能 I S是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准 该总线专责于设备之间的数据传输 广泛应用于各种多媒体系统 I C是两线式串行总线 用于连接微控制器及其外围设备 简单来说就是I C传
  • CANopen协议 学习笔记

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