CAN笔记(19) 网络管理

  • 1. 网络管理
  • 2. 节点状态
  • 3. 节点上线报文
  • 4. 心跳报文
  • 5. 节点守护
  • 6. 节点状态切换命令
  • 7. 主站设备

1. 网络管理

一个 CANOpen 网络中为了保证可靠、可控,必须要 NMT 网络管理

就像一个军队一样,要令行禁止,才能达到稳定、高效的目标

所以每个 CANOpen 从节点的 CANOpen 协议栈中必须具备 NMT 管理的相应代码
这是节点具备 CANOpen 协议的最基本的要素


2. 节点状态

NMT 管理涉及到一个 CANOpen 节点从上电开始的 6 种状态:

  • 初始化(Initializing):节点上电后对功能部件包括 CAN 控制器进行初始化

  • 应用层复位(Application Reset):节点中的应用程序复位(开始)
    比如开关量输出、模拟量输出的初始值

  • 通讯复位(Communication reset):节点中的CANOpen 通讯复位(开始)
    从这个时刻起,此节点就可以进行CANopen通讯了

  • 预操作状态(Pre-operational):节点的CANOpen 通讯处于操作就绪状态
    此时此节点不能进行PDO通信,而可以进行SDO进行参数配置和NMT网络管理的操作

  • 操作状态(Operational):节点收到NMT主机发来的启动命令后
    CANOpen 通讯被激活,PDO通信启动后, 按照对象字典里面规定的规则进行传输
    同样SDO也可以对节点进行数据传输和参数修改

  • 停止状态(Stopped): 节点收到NMT主机发来的停止命令后
    节点的PDO通信被停止
    但SDO和NMT网络管理依然可以对节点进行操作

除了初始化状态
NMT主机通过NMT命令可以让网络中任意一个的CANOpen 节点进行其他5种状态的切换
当然CANOpen 节点也可以程序自动完成这些状态的切换


3. 节点上线报文

任何一个 CANOpen 从站上线后
为了提示主站它已经加入网络(便于热插拔1),或者避免与其他从站 Node-ID 冲突
这个从站必须发出节点上线报文(boot-up)

节点上线报文的 ID 为 700h + Node-ID, 数据为 1 个字节 0
生产者为 CANOpen 从站


4. 心跳报文

为了监控 CANOpen 节点 是否在线目前的节点状态

CANOpen 应用中通常都要求在线上电的从站 定时发送 状态报文(心跳报文)
以便于主站确认从站是否故障、是否脱离网络

心跳报文发送的格式:

CAN-ID与节点上线报文相同为700h + Node-ID
数据为 1 个字节,代表节点目前的状态:
04h:停止状态, 05h:操作状态, 7Fh:预操作状态

CANOpen 从站按其对象字典中 1017h 中填写的心跳生产时间(ms)进行心跳报文的发送
而 CANOpen 主站(NMT 主站)则会按其 1016h 中填写的心跳消费时间进行检查

假设超过诺干次心跳消费时间,没有收到从站的心跳报文
则认为从站已经离线或者损坏


5. 节点守护

在早期 CANOpen 应用中,还有一种可以通过 轮询模式 监视从站状态的节点守护模式
但它与心跳报文模式二者不能并存

通过节点守护, MNT 主机可以检查每个节点的当前状态
NMT-Master 节点发送标准远程帧(无数据)如下:

NMT-Slave 节点应答发送数据帧, 数据为 1 个字节:


数据部分包括一个触发位(bit7)
触发位 必须在每次节点保护应答中交替置“0”或者“1”
触发位在第一次节点保护请求时置为“0”

位 0 到位 6(bits0~6)表示节点状态,数值可为:

由于远程帧在 CAN 发展中逐渐被淘汰,而节点守护由于需要更多的主站开销与增加网络负载
CiA 协会已经不建议使用,被心跳报文所取代


6. 节点状态切换命令

NMT 网络管理中,最核心的就是 NMT 节点状态切换命令
这是 NMT 主站所进行网络管理的“命令”报文


必须牢记这些命令:

CAN-ID 均为 000h,具备最高的 CAN 优先级

数据为 2 个字节:

  • 第 1 个字节:命令类型
    01h:启动命令(让节点进入操作状态)
    02h:停止命令(让节点进入停止状态)
    80h:预操作状态(让节点进入预操作状态)
    81h:复位节点应用层(让节点的应用恢复初始状态,比如列车门都恢复打开状态)
    82h:复位节点通讯(让节点的 CAN 和 CANOpen 通讯重新初始化,一般用于总线收到干扰,导致节点总线错误被动,或者总线关闭时)
  • 第二个字节:控制的节点 Node-ID
    如果要对整个网络所有节点同时进行控制,则这个数值为 0 即可

7. 主站设备

通常 NMT 主站也称为 CANOpen 主站, 上文所述为 CANOpen 最基本的 NMT 操作


而作为一个完整的 CANOpen 主站设备,为了满足管理整个 CANOpen 网络的从站设备
需要具备以下功能:

  • 支持 PDO、 SDO 发送与接收
  • 支持 NMT 网络管理
  • 支持 PDO 通信类型并能够支持监控每一个 PDO 目标
  • LSS 层设置功能:从站波特率设置、从站节点编号设置
  • 支持从站管理功能:类型与名称读取、对象字典读写
  • 紧急报文发送功能
  • 扩展 CANOpen 标准指示灯功能

目前有二种形式的主站:

  1. 可编程控制器(PLC) 中的一个单元
    内部集成了CANOpen 的主站功能,这个单元能连接到 CANOpen 总线
    同时因为它是 PLC 中的一个单元,它能与 PLC 的 CPU 交换数据
    因此通过编写 PLC 程序对它所连接的 CANOpen 从站进行管理和控制

  2. PC 扩展主站通信卡
    通过 PC 扩展一个 CANOpen 主站通信卡,从而令 PC 具有管理 CANOpen 通信网络的能力
    推荐使用 PCI 总线或 USB 总线来扩展 CANOpen 通信卡
    使用它们不仅可以令PC 成为一个 CANOpen 网络的管理节点
    还可以开发或测试 CANOpen 网络、拓展连接其他网络


参考:

《CANopen 轻松入门》


相关推荐:

CAN笔记(18) 对象字典
CAN笔记(17) 预定义报文ID
CAN笔记(16) CANOpen简介
CAN笔记(15) STM32-M4 CAN通讯
CAN笔记(14) STM32-M4 寄存器


谢谢!


  1. 热插拔:即带电插拔,指的是在不关闭系统电源的情况下,将模块、板卡插入或拔出系统而不影系统的正常工作,从而提高了系统的可靠性、快速维修性、冗余性和对灾难的及时恢复能力等 ↩︎

CAN笔记(19) 网络管理相关推荐

  1. 《编程之美》读书笔记19: 3.9 重建二叉树

    <编程之美>读书笔记19: 3.9 重建二叉树 对根节点a以及先序遍历次序P和中序遍历次序I,查找a在I中的位置,将I分为两部分,左边部分的元素都在a的左子树上,右边的元素都在a的右子树上 ...

  2. Ext.Net学习笔记19:Ext.Net FormPanel 简单用法

    Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...

  3. springmvc学习笔记(19)-RESTful支持

    springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...

  4. 区块链学习笔记19——ETH难度调整

    区块链学习笔记19--ETH难度调整 学习视频:北京大学肖臻老师<区块链技术与应用> 笔记参考:北京大学肖臻老师<区块链技术与应用>公开课系列笔记--目录导航页 前面学过,比特 ...

  5. Python学习笔记19:列表 III

    Python学习笔记19:列表 III 其实这篇笔记标题应该是列表扩展,从列表开始,将涵盖Python中的序列容器. 关于列表的基础知识,可以看我的前两篇文章: Python学习笔记1:列表. Pyt ...

  6. Linux 学习笔记19 信号

    Linux 学习笔记19 信号 信号 信号概述 为什么要是使用信号--为了实现进程的有序退出 信号是进程运行过程中,由自身产生或者由进程外部发来的消息.信号是硬件中断的软件模拟(软中断) signal ...

  7. [网络安全学习篇19]:NAT、动态路由及实验(千峰网络安全视频笔记 19 day)

    引言:我的系列博客[网络安全学习篇]上线了,小编也是初次创作博客,经验不足:对千峰网络信息安全开源的视频公开课程的学习整理的笔记整理的也比较粗糙,其实看到目录有300多集的时候,讲道理,有点怂了,所以 ...

  8. 影像组学视频学习笔记(19)-数据标准化、归一化极简概述、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(19)主要介绍: 数据的标准化.归一化 为什么要进行标准化.归一化? 机器学习算法的要求 便于横向比较 # 标准化 (影像组学中最常用) ...

  9. 【编译原理笔记19】代码优化: 支配结点和回边,自然循环及其识别,删除全局公共子表达式和复制语句,代码移动,作用于归纳变量的强度削弱,归纳变量的删除

    本次笔记内容: 8-10 支配结点和回边 8-11 自然循环及其识别 8-12 删除全局工工资表达式和赋值语句 8-13 代码移动 8-14 作用于归纳变量的强度削弱 8-15 归纳变量的删除 本节课 ...

  10. 【汇编语言与计算机系统结构笔记19】虚存概念初步,MIPS内存管理

    本次笔记内容: 29.虚存概念初步 30.MIPS内存管理 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库. 本节课对应幻灯片:汇编语言程式设计-MIPS.pdf,第92页起. 这是课 ...

最新文章

  1. day 2 基本类型和函数
  2. 混合托管:第三代云计算
  3. java 坦克重叠_坦克大战中坦克一直有重叠是怎么回事
  4. 2021.3.1 百度测试开发实习面试–百度地图一面
  5. CSDN中Markdown编辑器的数学公式编写(非常详细!)
  6. 第八周项目三-指向学生类的指针
  7. canvas 圆角矩形填充_Canvas:随机长方形生成和色块填充
  8. MySQL 也替换了master、slave
  9. Golang入门(1):安装与配置环境变量的意义
  10. JAVA 算法练习(一)
  11. Object-C-复制
  12. python中pandas有误_python-pandas to_sql方法给出日期列错误
  13. 辨异 —— Java 中的抽象类和接口
  14. HTTP协议详解 (转)
  15. (Twinkle Tray)快速调整外接显示器屏幕亮度
  16. spark-streaming 编程(四)自定义输出foreachRDD
  17. 学术篇 | 面向分类的脑电接口Fuzzy-Rough特征选择
  18. 【考研经验】2018四跨吉林大学计算机初试复试经验贴(67+72+99+141=379分)
  19. JSD-2204-API-JavaIO-Day02
  20. CC2640R2F BLE5.0 CC2640R2F软件架构

热门文章

  1. 【ASM C/C++】 Makefile 规则说明
  2. UITableView分页
  3. Cheggit解析器模块分析
  4. 解决Spring+Quartz无法自动注入bean问题
  5. IDEA 设置护眼色RGB值
  6. jsapi.php 参数设置,统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!...
  7. QGIS for Android 开发:一、Ubuntu环境搭建
  8. [C#.NET通用权限管里系统组件]对资源权限、列表型、记录级权限、数据集权限的实现参考...
  9. SerializeUtil 序列化 java
  10. tomcat-定制tomcat日志