CAN應用層和CANopen

CANopen 概述

CANopen是附加了一套设备子协议的高层(第7层)CAN通信协议。作为一种标准化、高度可配置的嵌入式网络解决方案,它广泛应用于实时工业应用、机器人、医疗、交通、汽车和航空等领域。CANopen设备子协议系列规定了各种标准化的通信机制和设备功能,以服务于各种应用程序。CANopen标准由CAN in Automation (CiA)国际用户和制造商协会维护保持。

CANopen的优势

通过应用程序和网络活动服务,使具备高度灵活配置能力的嵌入式应用标准化。

标准化的设备、接口和应用程序配置有助于CANopen系统和高度模块功能的充分集成,并提供互操作性和互换性。

众多国际供应商支持的高度标准化协议。

实时数据交换,同步与异步,循环与非循环,事件驱动。

具有高效寻址方案的对象字典,允许系统工程师和应用程序开发人员在CANopen基本配置文件上进行扩展,并提供扩展设备配置和诊断功能。

SDO(服务数据对象)报文与对象字典相结合,为系统设计者提供了通过网络进行设备配置的途径。

各种通信对象都允许系统设计者为过程数据通信、错误显示和网络控制,设计编程所需的网络功能。

通过专用同步SYNC(同步对象)和TIME(时间标识对象)实现高效同步。

通过Node Guarding (节点监测) 进行可靠的节点监测和诊断。

高效灵活的设备状态,实现耐用性、容错性和恢复能力。

觀看由CAN in Automation組提供的有關“ CANopen FD”的更新。

CANopen协议

CiA 通过一系列文件维护保持 CANopen 设备和通讯协议规定。CANopen 的CiA 文件 包括下列3类:

CiA规定 – 为实施协议,对硬件及软件配置的功能规定。

CiA建议 – 关于最适宜解决方案的信息。

CiA 实施和用户指南– 关于怎样使用CiA 功能和建议的说明。

基本配置由CiA 301规范定义。它被命名为“CANopen应用层和通信配置”,并规定了CANopen应用层。这些规范包括:

1. CANopen对象字典中的数据类型、编码规则和对象

2. CANopen通信服务和协议

3. CANopen 网络管理服务和协议

4. CANopen 通讯配置 – 物理层

5. 预定义的通信对象标识符连接数集、与紧急事件相关的对象、时间标识和同步通信对象

此基本 CiA 301配置规定由其他CiA文件进行了补充和扩展,为一些具体领域的设备和功能规定了设备、应用程序和接口配置。下面是其中几个例子:

CiA 302 – CANopen 附加应用层功能

CiA 303-1 – 布线和接头管脚分配

CiA 303-3 – 指示器规范

CiA 306 – CANopen 电子数据表规范

CiA 309 – 从其他网络接入CANopen

CiA 315 – CANopen 通用框架

CiA 401 – 通用I/O模块的CANopen设备配置

CiA 402 – 驱动和运动控制的CANopen设备配置

CANopen设备模型

每个CANopen设备都遵循一个通用的设备模型,因此不同的设备能依据同样的CANopen标准。CANopen设备模型的三个组成部分是:

通讯

对象字典

应用软件

通讯

CANopen通过不同的通讯模式在节点之间传输报文:

生产/消费模式: 它是一个广播连接,以推送模式工作(信号生产节点向消费节点发送无任何特定要求的信息)和引入模式(消费节点向信号生产节点要求特定信息)。

用户机/服务器模式: 通过SDO协议,用户节点向服务器节点要求数据(对象字典索引),然后服务器节点通过发送在指定索引处的对象内容来响应。

主机/从机模式: 主机节点可在任何时候向从机节点发送或要求数据。例如:NMT协议通信。

CANopen通信单元由必要的通信接口和协议软件组成,通过总线在节点之间进行通信对象的发送和接收。各种CANopen通信对象用于实现各种类型的通信,如过程数据、网络管理、节点监控、同步信号错误控制和紧急报文。这些对象及其说明如下:

CANopen帧

它由下列场组成:

11位 CAN帧id,也称为CANopen通信对象标识符(COB-ID)。它进一步分为4位功能代码(代表一个CANopen通信对象)和7位节点id。

1位远程传输请求 (RTR)。

4位数据长度。

0 – 8字节的数据。

对象字典

对象字典(OD)是CANopen协议的核心概念。它是一组预定义的CANopen对象,通过网络使用索引和子索引访问对象。对象字典提供了应用程序和设备之间的沟通方式,提供了配置该设备的途径,和与设备通信的方法。作为对象索引存储在对象字典中的信息包括:

通信和应用程序配置参数

标准化设备配置参数

制造商特定设备配置文件参数

设备配置静态数据类型

设备配置复杂数据类型

复杂和静态数据类型

制造商特定数据类型

其他

从上述对象说明可以清楚地看出,制造商可以通过扩展由标准设备配置和数据类型规范要求的标准设备功能,来增强其设备的功能。他可以按照CANopen标准的指导,以预定义的方式添加自己特定的制造商配置和数据类型。

对象字典条目中的场包括:

主索引: 16位索引,直接对应对象字典中的条目。对于简单变量,该索引直接引用变量值;对于复杂类型,该索引对应整个记录或数组。

索引: 对应具体数据场的8位子索引,如主索引指向的复杂数据结构中的数组项或记录值。

对象: 条目中对象类型的符号名称。例如:变量、数组、记录等。

名称: 描述条目的字符串。

类型: 条目的数据类型限定词。例如:UNSIGNED32、BOOLEAN等。

属性: 此条目的访问权限值。例如:读取和书写,只读取,只书写。

必须/可选/Optional: 设备必须实现此具体对象条目,还是可以选择执行。

各种对象参数组按索引范围排列如下:

通讯配置的范例索引

引用复杂或结构化数据类型条目的子索引示例

这些条目用于单通道RS-232适配器,其通信参数在索引6092H处以单一结构数据类型存在。然后,各个通信参数存在于子索引6092H中,范围从0起。

上述对象字典项的C编程语言结构定义为:

CANopen的网络管理

CANopen的网络管理采取主机/从机通信模式。整个网络被设置为一个“状态机”,其中一个设备被指定为NMT主机,另一个设备被指定为NMT从机。NMT主机控制和监控NMT从机的状态。通过NMT主机触发,NMT从机进行状态转换,实现CANopen网络的各个阶段。

通过具体的NMT协议,如启动协议、模块控制协议、心跳协议(Heartbeat Protocol)和节点监测,从主机向从机发出状态更改命令,进行这些状态转换。NMT主机向特定节点或所有节点发送NMT命令代码以改变状态。

NMT从状态机的初始状态序列从开机,或从关机事件的恢复开始,然后是设备初始化。然后,NMT从机将自动转换到预运行状态。在错误监测和诊断期间的内部设备重置(重置应用程序和重置通信)也会使NMT从机进入初始化状态,然后进入预运行状态。在此转换之前,该从机将使用启动协议向总线发送启动报文,以表明启动过程。

在预运行状态下,应用程序配置工具可以使用SDO通信,配置NMT从机和设置参数。由于设备尚未开始运行,因此在此状态下不能使用PDO通信。

一旦状态从预运行变为运行状态,节点中的所有通信对象都将变为活跃状态,并且运行节点之间均可进行PDO和SDO通信。在此阶段,也可以通过SDO访问对象字典。当节点状态更改为停止时,PDO和SDO通信都将停止。

CANopen中的节点监测

NMT主机定期使用远程帧询问从机的当前状态,并将其与网络数据库中记录的早期状态相比较。任何不匹配和缺少PDO传输的状态都会以适当的错误代码表示,然后应用程序将采取适当的操作,如设备重置或错误标识。这称为节点监测,是通过使用节点监测协议得以实现。NMT从机使用一种称为生命监测的技术,通过在预定义的时间间隔里,内部检查节点监测帧的接收,来检测NMT主机的缺失。

现代设备设计使用Heartbeat协议进行节点监视,其中NMT从设备(Heartbeat Producer心跳发出者)将周期性地向NMT主设备(Heartbeat Consumer心跳使用者)发送Heartbeat报文。这些报文之间的间隔是可配置的,并在主、从两个设备的对象字典中Heartbeat producer time(心跳产生时间)对象上都进行设置。如果心跳报文在此时间限制内未到达,则发出者将被视为关机,使用者将采取补救措施,如设备重置或错误显示。

预定义的连接数组

对于只有1个主机和最多127个从机的简单通信结构,CANopen提供了CAN报文标识符的预定义分配,这被称为预定义连接数集。此方法的主要目的是减少简单网络中仅需要点对点连接的的配置数量。此预定义的主从机连接机制支持按设备分配通信对象,如下所示:

一个紧急状况对象

SYNC和时间标识对象

一个 SDO 连接

NMT节点监测 (节点监测/心跳)

最多 4个输出和4 个输入PDO

电子数据表格和 CANopen 系统配置

一个电子数据表(EDS)是一个标准化的电子文件,描述为CANopen设备定义的通信功能和对象。此供应方生成的文件有3个区域:

关于EDS文件的信息

一般设备信息

具有默认变量的对象字典

EDS文件可用作CANopen设备的配置和网络设置工具。

CANopen 和 Kvaser

Kvaser 开发了 Kvaser CANopen Stack, 这是一个使用便捷、存储高效的AAPI,能实现CANopen设备的高性能运行 。它完全符合CANopen标准,并完全支持CANopen主机和从机功能。

CANopen在工业中的应用

Vector Informatik GmbH 是CCANalyzer的的开发商 – 这是 CANopen 网络分析和模拟的最佳软件工具之一。

Port GmbH 开发了大量CANopen 工具,包括:

用于CANopen设备开发的CANopen Design Tool。

CANopen 主机/从机协议库

CANopen 模块和配置文件

CANopen 设备监测

CANopen 网关服务器

National Instruments提供一个1-Port C系列CANopen接口模块,用于帮助CANopen应用程序开发。

有许多其他CANopen商业工具,以及开源API和协议栈,比如CANopenNode,它们使用CANopen的开放架构,借助于此协议的高度标准化、详细的建议和指南,发展新的应用。

更多資源

獲取與CANopen兼容的協議棧和軟件。搜索軟件

請聯繫專門從事CANopen應用的Kvaser技術助理之一。搜索助理

canopen服务器协议,CANopen相关推荐

  1. canopen服务器协议,CANopen协议详情讲解.docx

    精品文档 精品文档 PAGE PAGE #欢迎下载 精品文档 精品文档 PAGE PAGE #欢迎下载 根据DS301的内容进行介绍 1.CAN总线 45二爺 45二爺 CAN标准报文 CAN 标准报 ...

  2. canopen服务器协议,CANOpen协议如何保证通讯不丢帧?-通信/网络-与非网

    摘要:如何让现场总线通讯更加稳定可靠,不丢失,这向来都是工程师们难以解决的问题.本文将运用国际规范的通讯协议来展示怎样才能搭建好握手通讯. 服务数据对象 SDO(Service data object ...

  3. canopen服务器协议,ZOPC_Server(ZLG通用OPC服务器)CANopen协议插件

    ZOPC_Server(ZLG通用OPC服务器)CANopen协议插件是一款基于CAN的一种高层协议,是一种具有灵活配置功能的标准嵌入式网络.它的任务是控制和监测所有NMT从站的NMT状态.通常,CA ...

  4. 数据库和服务器什么协议,数据库服务器协议

    数据库服务器协议 内容精选 换一换 本章节适用于MRS 3.x之前版本.Loader支持以下多种连接,每种连接的配置介绍可根据本章节内容了解.obs-connectorgeneric-jdbc-con ...

  5. 服务器云ide_语言服务器协议如何影响IDE的未来

    服务器云ide The release of Visual Studio Code single-handedly impacted the developer ecosystem in such a ...

  6. Visual Studio的语言服务器协议

    语言服务器协议(LSP)是Visual Studio Code的一个重要组件.语言服务器实际上是单独运行的编译器或分析器,它负责处理各种任务,如编译器错误报告.文本悬浮.代码自动完成(也就是Intel ...

  7. 云服务器的协议,云服务器协议

    云服务器协议 内容精选 换一换 当创建文件系统后,您需要使用云服务器来挂载该文件系统,以实现多个云服务器共享使用文件系统的目的.本章节以Windows 2012版本操作系统为例进行CIFS类型的文件系 ...

  8. 作为面向事务的客户服务器协议,湖南大学《计算机网络》实验报告.doc

    文档介绍: 实验一应用协议与数据包分析实验(使用Wireshark) 一.实验目的 通过本实验,熟练掌握Wireshark的操作和使用,学****对HTTP协议进行分析. 二.实验内容 1.HTTP ...

  9. 邮件服务器两种协议,邮件服务器协议

    邮件服务器协议 内容精选 换一换 浏览器发送邮件:在使用浏览器登录邮箱时直接使用HTTP协议,其端口号默认为80,邮件服务器之间还是使用邮件发送协议:SMTP协议.通过浏览器发送邮件,则需要开放TCP ...

最新文章

  1. 介绍一款facebook信息收集工具FBI
  2. 基于 Ubuntu 搭建微信小程序服务
  3. Hadoop HIVE
  4. 时代聚焦AI安全——可解释性
  5. D. Steps to One(概率DP,莫比乌斯反演)
  6. apache camel_令人印象深刻的第一个Apache Camel版本
  7. python命名时可以使用中文吗_Python命名约定
  8. 关于信道利用率的总结与一道习题的最终解释
  9. Python使用python-snap7实现西门子PLC通讯
  10. IP防护等级测试设备(IPX1.2.3.4.5.6.9)
  11. 西门子PLCSIM仿真PLC的网口连接与设置
  12. 谷尼国际软件-企业竞争情报系统
  13. 关于VS.NET中多个项目的工程相互引用和多个dll引用的问题! - antony--异域空间 - 博客园
  14. Q3营收利润双降,新作将成Take-Two逆势大爆发的动力?
  15. 第一个很土很土很可爱的程序
  16. 【Ubuntu】虚拟摄像头,并应用在Teams上
  17. python 按键精灵识图_Python实现按键精灵(二)-找图找色
  18. C语言 输入一个长度小于80的字符串,将字符串中的字母字符滤掉掉,并统计新生成串中包含的字符个数。
  19. android 点阵字体生成,点阵字体 ASCII码 汉字库 自我学习 简单总结
  20. HSCTF-部分writeup

热门文章

  1. 64位内核第一讲,和32位内核的区别
  2. 超神线段树 山海经
  3. Bottle源码阅读(3) HeaderDict
  4. UIActivityIndicatorView
  5. return,break,continue三者区别
  6. 38.什么是PV操作
  7. 工信部提醒:用户及时设置 SIM 卡密码,丢失手机后第一时间挂失
  8. OpenCV 4.2.0 发布,Intel 开源的计算机视觉库
  9. USB启动盘制作的几种方式
  10. python多包运行_如何组织包含多个包的python项目,以便包中的每个文件仍然可以单独运行?...