CANopen NWT,SDO,HeartBeat报文协议

2024-05-13 20:20

本文主要是介绍CANopen NWT,SDO,HeartBeat报文协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 什么是CANopen?

CANopen是一个基于CAN总线的“高层协议”,这意味着CAN总线(ISO 11898)就像集装箱的卡车一般作为CANopen信息的“运输工具”。 CAN只是实现了带有11位CAN ID、远程传输(RTR)位和64个数据位(与更高层的协议相关)的字段的帧的传输。CAN总线在CANopen中的作用与在J1939协议相同。而CANopen则实现了OSI模型的第七层,并能够适应除CAN以外的其他数据链路层协议。

  1. CANopen 设备结构

下图为 CANopen 设备结构。 CANopen 协议通常分为用户应用层、对象字典以及通信三个部分。其中最为核心的是对象字典,描述了应用对象和 CANopen 报文之间的关系。CANopen 通信其定义了 CANopen 协议通信规则以及与 CAN 控制器驱动之间对应关系。用户应用层是用户根据实际的需求编写的应用对象,

3.对象字典 OD

所谓的对象字典就是一个有序的对象组, 描述了对应 CANopen 节点和它的网络行为的所有参数。每个对象采用一个 16 位的索引值来寻址,为了避免数据大量时无索引可分配,所以在某些索引下也定义了一个 8 位子索引值。对象字典索引区域定义如下:

4.CANopen报文

CANOpen协议报文分类:

NMT 网络管理报文,作用是管理网络,切换节点的状态。一般由主站发送NMT网络管理报文。

SDO 服务数据对象报文,作用是设置设备参数,或者是一些关键数据的传输。一般由主站发起SDO报文,从站应答SDO报文。从站也可以发起SDO,主站响应,比如关键数据的传输。

PDO 过程数据对象报文,作用是传输一些设备的过程数据,比如传输温度,速度等等。主站和从站都会发送。

EMCY 紧急报文,作用是传输设备的故障信息。主站和从站都会发送。

SYNC 同步报文,作用是同步数据,用来同步从站的TPDO数据。一般由主站发送。比如从站的TPDO传输类型是在同步模式下,当从站收到设定次数的SYNC报文后,从站会发送TPDO。这个在后续的文章中详细阐述。

NODE GUARDING 节点保护报文,作用是主站请求从站的状态,主站询问,从站应答。这种模式逐渐已被淘汰,因为太占CAN总线网络带宽。

HeartBeat 心跳报文,作用是设备主动发送心跳,表示自己在线。主站和从站都可以发送。

我们今天主要讨论网络管理报文、SDO报文、心跳包文.

 CANopen 预定义了强制性的缺省标识符(CAN-ID)分配表。 11 ID其划分为 4 位的功能码(Function-ID 7 位的节点号(Node-ID)。如下图所

4.1 NWT网络管理

canopen从机由主机进行网络管理,NMT 管理涉及到一个 CANopen 节点从上电开始的 6 钟状态,状态转换如下图所.,包括初始化,硬复位,软复位,预操作状态,操作状态,停止状态.

网络管理系统(NMT)负责初始化、启动及停止网络和网络中的设备,属于主从系统

CANopen网络中有且只有一个NMT主机,可配置包括本身在内的CANopen网络。CANopen按照协议规定的状态机执行相应工作。其中,部分为内部自动转换,部分必须由NMT主机发送NMT报文实现转换,状态机转换具体如下图

NMT报文格式

COB ID= 0,function codenodeid都为o

DLC2,两个字节数据

Data0,状态命令数据;Data1,要操作NodeID

心跳报文,实时发送设备的状态.

SDO报文:

  1. 加速SDO报文(Expedited SDO

加急SDO传输,一次最多传输4个字节的数据

CIT中写的是实际数据,比如4132h,即0x00004132,对应版本信息为A2.CIT数据要写成低字节开始(小端)32 41 00 00

电脑:客户端/主站

CAN设备:服务器端,/从站

Can读写TX/RX是基于CAN设备来说的,比如向设备写指令或请求读指令是RX,而设备反馈的指令,是TX

RXFunction Code是:1100

TXFunction code是:1011

hardware_verion CAN= 0x5800:00, Node ID = 0x2C, VclIndex=1177

Data32hox00000032

SDO写硬件版本,DLC=8

SDO Function Code

SDO TX

1011b

SDO RX

1100b

  1. Segment SDO报文

segment SDO传输,可以传输大于4个字节的数据,需要多条指令传输进行读写,可以将指令分为启动指令和segment传输指令.

segment SDO启动指令读写Controlbye说明:

segment sdo初始化读写指令的Data0,CmdByte每一位定义如下:

分段传输数据段8个字节中,data0为控制字节,data1~data7为数据字节,每次最多传输7个字节,控制字节定义如下:

以下示例,向地址0x3051:00写入18个字节数据

向地址0x3051:00读取18个字节数据,“Segmented-transfer”

这篇关于CANopen NWT,SDO,HeartBeat报文协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/986729

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines