Canopen协议 (1):网络状态管理(NMT)

article/2025/8/26 16:41:50

工控应用中,常常会遇到一些设备:电机或者其他传感器需要通过Can 这个硬件接口来通信,而且往往通信协议都是走的都是Canopen协议。自己当初搞的时候对协议也是云里雾里,为了大家不走歪路,早日走上人生巅峰,这里通过一个比较的例子(直接抓取Can总线上的报文)来理解canopen协议.

 

canopen协议 的话,文档方便大家可以去看CIA 301的文档,电机控制类的同学还需要看一下cia402 和厂家的canopen协议文档。

设备上电/复位后 ,完成自身硬件初始化后,会发出bootup报文

从而进入 图片中的Pre-operational状态,主机接收到这个报文,他就知道,喔,总线上有一个设备上线了,于是它就会通过SDO(Service data object)去配置一些东西,例如配置一下设备的PDO,然后才会通过NMT报文去切换设备的状态

我们这边先了解一下canopen的NMT 网络管理,下面这张图就是从cia301文档上面截下来的。

canopen的设备会有这几种状态,主机有权利根据实际情况去控制设备的状态。那怎么控制了?

答案就是通过NMT 协议。

 可能有小伙伴要问了,这个网络管理(NMT)在canoepn里面有啥用呢?

用一句通俗易懂的话来解释:

就是NMT网络管理控制着设备的状态,从而决定了该设备能使用网络的功能。可以看下CIA301文档的这图

这张图很清晰的解释了这种情况。像有时候面试的时候,面试官可能会问,PDO在那个状态能通信啊 ,SDO在是不是所有状态下都能通信啊?

看了这张图就能明白,PDO只能在设备处于Operational的状态下才能通信,SDO只有stoped状态下不能通信。

这也解释了上文提到的,设备发出bootup报文后进入Pre_operation状态后,我们主机需要用SDO去配置一些东西。

这边给一张can总线上的报文抓取图。设备为某个品牌的伺服电机

0 00000 01->06        8   2B  40  60  00  06  00  00  00      15.746900 R
0 00000 80->00        0                                       15.746900 R
0 00000 81->05        8   60  40  60  00  00  00  00  00      15.749880 R
0 00000 01->06        8   2B  40  60  00  07  00  00  00      15.751080 R
0 00000 81->05        8   60  40  60  00  00  00  00  00      15.752700 R
0 00000 01->06        8   2B  40  60  00  0F  01  00  00      15.753980 R
0 00000 81->05        8   60  40  60  00  00  00  00  00      15.755770 R
0 00000 80->00        0                                       15.756620 R
0 00000 01->06        8   2F  60  60  00  03  00  00  00      15.756970 R
0 00000 81->05        8   60  60  60  00  00  00  00  00      15.759780 R
0 00000 01->06        8   23  FF  60  00  00  00  00  00      15.760980 R
0 00000 81->05        8   60  FF  60  00  00  00  00  00      15.763540 R
0 00000 01->06        8   23  83  60  00  50  02  00  00      15.764730 R
0 00000 80->00        0                                       15.766610 R
0 00000 81->05        8   60  83  60  00  00  00  00  00      15.767550 R
0 00000 01->06        8   23  84  60  00  50  02  00  00      15.768740 R
0 00000 81->05        8   60  84  60  00  00  00  00  00      15.771560 R
0 00000 01->06        8   2B  40  60  00  0F  01  00  00      15.772750 R
0 00000 81->05        8   60  40  60  00  00  00  00  00      15.774890 R
0 00000 01->06        8   23  00  18  01  80  01  00  80      15.776080 R
0 00000 80->00        0                                       15.776680 R
0 00000 81->05        8   60  00  18  01  00  00  00  00      15.779920 R
0 00000 01->06        8   2F  00  18  02  0A  00  00  00      15.781120 R
0 00000 81->05        8   60  00  18  02  00  00  00  00      15.783250 R
0 00000 01->06        8   2F  00  1A  00  00  00  00  00      15.784530 R
0 00000 81->05        8   60  00  1A  00  00  00  00  00      15.786580 R
0 00000 80->00        0                                       15.786660 R
0 00000 01->06        8   23  00  1A  01  10  00  3F  60      15.787940 R
0 00000 81->05        8   60  00  1A  01  00  00  00  00      15.789900 R
0 00000 01->06        8   23  00  1A  02  10  00  41  60      15.791270 R
0 00000 81->05        8   60  00  1A  02  00  00  00  00      15.793230 R
0 00000 01->06        8   23  00  1A  03  10  00  0B  70      15.794600 R
0 00000 81->05        8   60  00  1A  03  00  00  00  00      15.796560 R
0 00000 80->00        0                                       15.796650 R
0 00000 01->06        8   23  00  1A  04  08  00  61  60      15.797930 R
0 00000 81->05        8   60  00  1A  04  00  00  00  00      15.799890 R
0 00000 01->06        8   2F  00  1A  00  04  00  00  00      15.801250 R
0 00000 81->05        8   60  00  1A  00  00  00  00  00      15.803300 R
0 00000 01->06        8   23  00  18  01  80  01  00  00      15.804580 R
0 00000 81->05        8   60  00  18  01  00  00  00  00      15.806630 R
0 00000 80->00        0                                       15.806720 R
0 00000 01->06        8   23  01  18  01  80  02  00  80      15.808000 R
0 00000 81->05        8   60  01  18  01  00  00  00  00      15.809960 R
0 00000 01->06        8   2F  01  18  02  01  00  00  00      15.811320 R
0 00000 81->05        8   60  01  18  02  00  00  00  00      15.813290 R
0 00000 01->06        8   2F  01  1A  00  00  00  00  00      15.814650 R
0 00000 81->05        8   60  01  1A  00  00  00  00  00      15.816610 R
0 00000 80->00        0                                       15.816700 R
0 00000 01->06        8   23  01  1A  01  10  00  09  70      15.817980 R
0 00000 81->05        8   60  01  1A  01  00  00  00  00      15.820030 R
0 00000 01->06        8   23  01  1A  02  20  00  0A  70      15.821310 R
0 00000 81->05        8   60  01  1A  02  00  00  00  00      15.823360 R
0 00000 01->06        8   2F  01  1A  00  02  00  00  00      15.824640 R
0 00000 81->05        8   60  01  1A  00  00  00  00  00      15.826680 R
0 00000 80->00        0                                       15.826770 R
0 00000 01->06        8   23  01  18  01  80  02  00  00      15.827960 R
0 00000 81->05        8   60  01  18  01  00  00  00  00      15.830010 R
0 00000 01->06        8   23  02  18  01  80  03  00  80      15.831290 R
0 00000 81->05        8   60  02  18  01  00  00  00  00      15.833340 R
0 00000 01->06        8   2F  02  18  02  02  00  00  00      15.834620 R
0 00000 81->05        8   60  02  18  02  00  00  00  00      15.836670 R
0 00000 80->00        0                                       15.836670 R
0 00000 01->06        8   2F  02  1A  00  00  00  00  00      15.837950 R
0 00000 81->05        8   60  02  1A  00  00  00  00  00      15.840000 R
0 00000 01->06        8   23  02  1A  01  10  00  78  60      15.841280 R
0 00000 81->05        8   60  02  1A  01  00  00  00  00      15.843320 R
0 00000 01->06        8   23  02  1A  02  10  00  03  70      15.844600 R
0 00000 81->05        8   60  02  1A  02  00  00  00  00      15.846650 R
0 00000 80->00        0                                       15.846740 R
0 00000 01->06        8   23  02  1A  03  10  00  0F  70      15.848020 R
0 00000 81->05        8   60  02  1A  03  00  00  00  00      15.849980 R
0 00000 01->06        8   2F  02  1A  00  03  00  00  00      15.851340 R
0 00000 81->05        8   60  02  1A  00  00  00  00  00      15.853390 R
0 00000 01->06        8   23  02  18  01  80  03  00  00      15.854670 R
0 00000 80->00        0                                       15.856640 R
0 00000 81->05        8   60  02  18  01  00  00  00  00      15.856720 R
0 00000 01->06        8   23  03  18  01  80  04  00  80      15.858090 R
0 00000 81->05        8   60  03  18  01  00  00  00  00      15.860050 R
0 00000 01->06        8   2F  03  18  02  FE  00  00  00      15.861410 R
0 00000 81->05        8   60  03  18  02  00  00  00  00      15.863380 R
0 00000 01->06        8   23  03  18  01  80  04  00  00      15.864740 R
0 00000 80->00        0                                       15.866620 R
0 00000 81->05        8   60  03  18  01  00  00  00  00      15.866790 R
0 00000 01->06        8   23  00  14  01  00  02  00  80      15.868070 R
0 00000 81->05        8   60  00  14  01  00  00  00  00      15.870120 R
0 00000 01->06        8   2F  00  14  02  64  00  00  00      15.871400 R
0 00000 81->05        8   60  00  14  02  00  00  00  00      15.873450 R
0 00000 01->06        8   2F  00  16  00  00  00  00  00      15.874730 R
0 00000 80->00        0                                       15.876600 R
0 00000 81->05        8   60  00  16  00  00  00  00  00      15.876770 R
0 00000 01->06        8   23  00  16  01  20  00  83  60      15.878050 R
0 00000 81->05        8   60  00  16  01  00  00  00  00      15.880100 R
0 00000 01->06        8   23  00  16  02  20  00  84  60      15.881380 R
0 00000 81->05        8   60  00  16  02  00  00  00  00      15.883430 R
0 00000 01->06        8   2F  00  16  00  02  00  00  00      15.884710 R
0 00000 80->00        0                                       15.886670 R
0 00000 81->05        8   60  00  16  00  00  00  00  00      15.886760 R
0 00000 01->06        8   23  00  14  01  00  02  00  00      15.888120 R
0 00000 81->05        8   60  00  14  01  00  00  00  00      15.890090 R
0 00000 01->06        8   23  01  14  01  00  03  00  80      15.891370 R
0 00000 81->05        8   60  01  14  01  00  00  00  00      15.893410 R
0 00000 01->06        8   2F  01  14  02  01  00  00  00      15.894690 R
0 00000 80->00        0                                       15.896660 R
0 00000 81->05        8   60  01  14  02  00  00  00  00      15.896740 R
0 00000 01->06        8   2F  01  16  00  00  00  00  00      15.898110 R
0 00000 81->05        8   60  01  16  00  00  00  00  00      15.900070 R
0 00000 01->06        8   23  01  16  01  20  00  FF  60      15.901350 R
0 00000 81->05        8   60  01  16  01  00  00  00  00      15.903400 R
0 00000 01->06        8   2F  01  16  00  01  00  00  00      15.904760 R
0 00000 80->00        0                                       15.906640 R
0 00000 81->05        8   60  01  16  00  00  00  00  00      15.906730 R
0 00000 01->06        8   23  01  14  01  00  03  00  00      15.908090 R
0 00000 81->05        8   60  01  14  01  00  00  00  00      15.910050 R
0 00000 01->06        8   23  02  14  01  00  04  00  80      15.911420 R
0 00000 81->05        8   60  02  14  01  00  00  00  00      15.913380 R
0 00000 01->06        8   2F  02  14  02  01  00  00  00      15.914750 R
0 00000 80->00        0                                       15.916620 R
0 00000 81->05        8   60  02  14  02  00  00  00  00      15.916800 R
0 00000 01->06        8   2F  02  16  00  00  00  00  00      15.918080 R
0 00000 81->05        8   60  02  16  00  00  00  00  00      15.920040 R
0 00000 01->06        8   23  02  16  01  10  00  40  60      15.921400 R
0 00000 81->05        8   60  02  16  01  00  00  00  00      15.923450 R
0 00000 01->06        8   2F  02  16  00  01  00  00  00      15.924730 R
0 00000 80->00        0                                       15.926610 R
0 00000 81->05        8   60  02  16  00  00  00  00  00      15.926780 R
0 00000 01->06        8   23  02  14  01  00  04  00  00      15.928060 R
0 00000 81->05        8   60  02  14  01  00  00  00  00      15.930110 R
0 00000 01->06        8   2B  00  23  03  96  00  00  00      15.931390 R
0 00000 81->05        8   60  00  23  03  00  00  00  00      15.933440 R
0 00000 01->06        8   2F  00  23  04  06  00  00  00      15.934720 R
0 00000 80->00        0                                       15.936680 R
0 00000 81->05        8   60  00  23  04  00  00  00  00      15.936760 R
0 00000 01->06        8   2F  00  23  02  01  00  00  00      15.938040 R
0 00000 81->05        8   60  00  23  02  00  00  00  00      15.940090 R

主机通过SDO开始去配置一些我们想要设置的东西。这部分涉及SDO下回讲吧


http://chatgpt.dhexx.cn/article/LyBxo37G.shtml

相关文章

canopen学习总结(一)——NMT网络管理

[1] NMT网络管理 [1-1]概念: NMT到底是啥? 答:简单理解就是由一台主机来管理从机,主机可以控制从机的状态。 那么机器到底有哪些状态呢? 答:看下面这图,总共就这些状态 [1-2]命令&#xff1…

NMT

1)刚开始时,在RNN的基础上引入attention,即将两者结合应用,完整解释并附上完整code。详见下链接: 基于RNNAttention的机器翻译 2)接着,Facebook在CNN的基础上引入attention,参见论…

Neural Machine Translation(NMT)技术概述

在神经网络语言模型处理NLP领域,我做的研究一直都和文本分类相关,其实还有很多其他的应用领域,比方说:语言翻译、词性标注、命名实体识别等。感觉还是有必要了解一下如何用神经网络语言模型对这些应用进行建模的。因此&#xff0c…

NMT with Attention

1.数据准备 termcolor.colered 对输出进行染色,凸显。colored(f"tokenize(hello): ", green) from termcolor import colored import random import numpy as npimport trax from trax import layers as tl from trax.fastmath import numpy as fastnp …

CANopen通信之NMT通信

在介绍NMT通信机制之前,先介绍一下NMT这个通信对象的定义。在以下部分中COB-ID使用的是 CANopen 预定义连接集中已定义的缺省标志符。 1) NMT 模块控制( NMT Module Control) 只有 NMT-Master 节点能够传送 NMT Module Control 报文。 所有从…

NMT:神经网络机器翻译

前言 SMT是在神经网络之前最主流的翻译模式,统计机器翻译;NMT则是基于神经网络的翻译模式,也是当前效果最好的翻译模式。现在基于几篇paper来梳理下神经网络下的翻译模型。 NMT based RNN 1) First End-to-End RNN Trial   2014年&…

神经机器翻译(Neural machine translation, NMT)学习笔记

神经机器翻译(Neural machine translation, NMT)是最近提出的机器翻译方法。与传统的统计机器翻译不同,NMT的目标是建立一个单一的神经网络,可以共同调整以最大化翻译性能。最近提出的用于神经机器翻译的模型经常属于编码器-解码器…

Java本机内存跟踪NMT实战详解

JVM通常会额外分配内存。这些额外的分配,会导致java程序占用的内存,超出-Xmx的限制。让我们使用NMT查看内存的使用情况 NMT 是什么 NMT 是一种 Java Hotspot VM 功能,用于跟踪 HotSpot VM 的内部内存使用情况。您可以使用该jcmd实用程序访问…

fastText模型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目标一、fastText的模型架构1. N-gram的理解1.1 bag of word 2. fastTex模型中层次化的softmax2.1 哈夫曼树和哈夫曼编码2.1.1 哈夫曼树的定义2.1.2 哈夫曼树的相关…

fastText Python 教程

诸神缄默不语-个人CSDN博文目录 fastText Python官方GitHub文件夹网址:fastText/python at main facebookresearch/fastText 本文介绍fastText Python包的基本教程,包括安装方式和简单的使用方式。 我看gensim也有对fasttext算法的支持(ht…

玩转Fasttext

Fasttext是Facebook AI Research最近推出的文本分类和词训练工具,其源码已经托管在Github上。Fasttext最大的特点是模型简单,只有一层的隐层以及输出层,因此训练速度非常快,在普通的CPU上可以实现分钟级别的训练,比深度…

FastText详解

词向量对比word2vec https://zhuanlan.zhihu.com/p/75391062 0、实战经验 word2vec vs fastText区别? 思想:将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。 word2vec vs fastText区别? …

FastText原理

一、简介 fasttext是facebook开源的一个词向量与文本分类工具,在2016年开源,典型应用场景是“带监督的文本分类问题”。提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。 fastText结合了自然语言处理和机器学习中最…

Fasttext

Fasttext Paper Fasttext特点 模型简单,只有一层的隐层以及输出层,因此训练速度非常快不需要训练词向量,Fasttext自己会训练两个优化:Hierarchical Softmax、N-gram Fasttext模型架构 fastText模型架构和word2vec中的CBOW很相…

[NLP]文本分类之fastText详解

Word2vec, Fasttext, Glove, Elmo, Bert, Flair pre-train Word Embedding 一、fastText简介 fastText是一个快速文本分类算法,与基于神经网络的分类算法相比有两大优点: 1、fastText在保持高精度的情况下加快了训练速度和测试速度 2、fastText不需要预…

FastText:高效的文本分类工具

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

FastText的简单介绍

0、引言 FastText是facebook开源的一款集word2vec、文本分类等一体的机器学习训练工具。在之前的论文中,作者用FastText和char-CNN、deepCNN等主流的深度学习框架,在同样的公开数据集上进行对比测试,在保证准确率稳定的情况下,Fa…

快速文本分类(FastText)

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

FastText:快速的文本分类器

转载请注明作者和出处:http://blog.csdn.net/john_bh/ 一、简介二、FastText原理 2.1 模型架构2.2 层次SoftMax2.3 N-gram特征 三、 基于fastText实现文本分类 3.1 fastText有监督学习分类3.2 fastText有监督学习分类 三、总结 3.1 fastText和word2vec的区别3.2 小…

DCGAN的PyTorch实现

DCGAN 1.什么是GAN GAN是一个框架,让深度模型可以学习到数据的分布,从而通过数据的分布生成新的数据(服从同一分布)。 其由一个判别器和一个生成器构成,生成器负责生成“仿造数据”,判别器负责判断“仿造数据”的质量。两者一起…