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

CANopen 学习笔记(1)

预定义CAN ID

对象规范CAN ID
NMT 网络管理命令CiA301000h
Sync 同步报文CiA301080h
Emergency 紧急报文CiA301081h to 0FFh(080h +node-ID)
Time stamp 时间戳报文CiA301100h

对象字典索引和描述

Index range 索引范围Description 描述
1000h ~ 1FFFhCommunication profile area 通讯对象子协议区
2000h ~ 5FFFhManufacturer-specific profile area 制造商特定子协议区
6000h ~ 9FFFhStandardized profile area 标准化设备子协议区
A000h ~ AFFFhNetwork variables 网络变量(符合 IEC61131-3)

通用通讯对象

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

NMT节点状态

预操作状态(Pre-operational):节点的CANopen通讯处于操作就绪状态,此时此节点不能进行PDO通信,而可以进行SDO进行参数配置和NMT网络管理的操作
操作状态(operational):节点收到NMT主机发来的启动命令后,CANopen通讯被激活,PDO通信启动后,按照对象字典里面规定的规则进行传输,同样SDO也可以对节点进行数据传输和参数修改
停止状态(Stopped):节点收到NMT主机发来的停止命令后,节点的PDO通信被停止,但SDO和NMT网络管理依然可以对节点进行操作
心跳报文和节点状态 :CANID 与节点上线报文相同为700h+Node-ID,数据为 1 个字节,代表节点目前的状态,04h为停止状态,05h为操作状态,7Fh为预操作状态。

NMT节点状态切换命令

CANID 均为 000h,具备最高的 CAN 优先级。数据为 2 个字节

第 1 个字节代表命令类型

01h 为启动命令(让节点进入操作状态);
02h 为停止命令(让节点进入停止状态);
80h 为进入预操作状态(让节点进入预操作状态);
81h 为复位节点应用层(让节点的应用恢复初始状态,比如列车门都恢复打开状态);
82h 为复位节点通讯(让节点的 CAN 和 CANopen 通讯重新初始化,一般用于总线收到干扰,导致节点总线错误被动,或者总线关闭时)。

第2个字节代表被控制的节点 Node-ID:
如果要对整个网络所有节点同时进行控制,则这个数值为 0 即可。

PDO 通讯

在这里插入图片描述

PDO 通信参数,定义了该设备所使用的 COB-ID、传输类型、定时周期等。
RPDO 通讯参数位于对象字典索引的 1400h to 15FFh,映射参数 1600h to 17FFh
TPDO 通讯参数位于对象字典索引的 1800h to 19FFh,映射参数 1A00h to 1BFF
数据存放在 2000h 之后的自定义区域

SDO 通讯

发送方(客户端)发送 CAN-ID 为 600h+Node-ID 的报文,其中 Node-ID 为接收方(服务器)的节点地址,数据长度均为 8 字节;

接收方(服务器)成功接收后,回应 CAN-ID 为 580h+Node-ID 的报文。这里的 Node-ID依然是接收方(服务器)的节点地址,数据长度均为 8 字节。

快速SDO CS命令符

在这里插入图片描述

普通SDO CS命令符

在这里插入图片描述


http://www.kler.cn/a/481823.html

相关文章:

  • selenium学习笔记
  • MapReduce完整工作流程
  • Flutter Xcode 16+ iOS 18.1 使用image_pickers无法弹出选择图片的视图问题
  • C语言凯撒密码程序分享
  • 上海亚商投顾:沪指探底回升微涨 机器人概念股午后爆发
  • 二、模型训练与优化(4):模型优化-实操
  • ip属地出省会变吗?怎么出省让ip属地不变
  • spring mvc源码学习笔记之十
  • 【蓝桥杯选拔赛真题60】C++寻宝石 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解
  • Java 锁:多线程环境下的同步机制
  • 深度学习概述
  • 【Three.js基础学习】34.Earch Shaders
  • Redis 管道技术(Pipeline)
  • 2025新春烟花代码(二)HTML5实现孔明灯和烟花效果
  • 源代码防泄漏一机两用合体方案
  • 芯片详细讲解,从而区分CPU、MPU、DSP、GPU、FPGA、MCU、SOC、ECU
  • 数据结构:LinkedList与链表—无头单向链表(一)
  • 解决OPenMP不能使用头文件#include <omp.h> 的问题
  • SQLite PRAGMA
  • LQ quarter 5th