首页 上一页 1 2 3 4 5 6 下一页 尾页

CANopen协议简介 点击:7171 | 回复:113



欧迪

    
  • 精华:2帖
  • 求助:0帖
  • 帖子:4帖 | 306回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2006年7月11日
发表于:2009-04-10 09:57:20
楼主

CANopen协议介绍

1、介绍
从OSI 网络模型的角度来看同,现场总线网络一般只实现了第1 层(物理层)、第2 层(数据链路层)、第7 层(应用层)。因为现场总线通常只包括一个网段,因此不需要第3 层(传输层)和第4 层(网络层),也不需要第5 层(会话层)第6 层(描述层)的作用。
CAN(Controller Area Network)现场总线仅仅定义了第1 层、第2 层(见ISO11898 标准);实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软件(Software)或固件(Firmware)。
同时,CAN只定义物理层和数据链路层,没有规定应用层,本身并不完整,需要一个高层协议来定义CAN 报文中的11/29 位标识符、8 字节数据的使用。而且,基于CAN 总线的工业自动化应用中,越来越需要一个开放的、标准化的高层协议:这个协议支持各种CAN 厂商设备的互用性、互换性,能够实现在CAN 网络中提供标准的、统一的系统通讯模式,提供设备功能描述方式,执行网络管理功能。
 应用层(Application layer):为网络中每一个有效设备都能够提供一组有用的服务与协议。
 通讯描述(Communication profile):提供配置设备、通讯数据的含义,定义数据通讯方式。
 设备描述(Device proflile):为设备(类)增加符合规范的行为。
下面的章节将介绍基于CAN 的高层协议:CAL 协议和基于CAL 协议扩展的CANopen 协议。CANopen 协议是CAN-in-Automation(CiA)定义的标准之一,并且在发布后不久就获得了广泛的承认。尤其是在欧洲,CANopen 协议被认为是在基于CAN 的工业系统中占领导地位的标准。大多数重要的设备类型,例如数字和模拟的输入输出模块、驱动设备、操作设备、控制器、可编程控制器或编码器,都在称为“设备描述” 的协议中进行描述;“设备描述”定义了不同类型的标准设备及其相应的功能。依靠 CANopen 协议的支持, 可以对不同厂商的设备通过总线进行配置。
在OSI 模型中,CAN 标准、CANopen 协议之间的关系如下图所示:

2、CAL 协议
CAL(CAN Application Layer)协议是目前基于CAN 的高层通讯协议中的一种,最早由Philips医疗设备部门制定。现在CAL由独立的CAN用户和制造商集团CiA(CAN in Automation)协会负责管理、发展和推广。
CAL 提供了4 种应用层服务功能:
 CMS (CAN-based Message Specification)
CMS提供了一个开放的、面向对象的环境,用于实现用户的应用。CMS提供基于变量、事件、域类型的对象,以设计和规定一个设备(节点)的功能如何被访问(例如,如何上载下载超过8字节的一组数据(域),并且有终止传输的功能)。CMS 从 MMS (Manufacturing Message Specification)继承而来。MMS 是OSI 为工业设备的远程控制和监控而制定的应用层规范。
 NMT (Network ManagemenT)
提供网络管理(如初始化、启动和停止节点,侦测失效节点)服务。这种服务是采用主从通讯模式(所以只有一个NMT 主节点)来实现的。
 DBT (DistriBuTor)
提供动态分配CAN ID(正式名称为COB-ID,Communication Object Identifier)服务。这种服务是采用主从通讯模式(所以只有一个 DBT 主节点)来实现的。
 LMT (Layer ManagemenT)
LMT 提供修改层参数的服务:一个节点(LMT Master)可以设置另外一个节点(LMT Slave)的某层参数(如改变一个节点的NMT 地址,或改变CAN 接口的位定时和波特率)。

CMS 为它的消息定义了8 个优先级,每个优先级拥有220 个COB-ID,范围从1 到1760。剩余的标志(0,1761-2031)保留给NMT,DBT和LMT,见表2-1。

注意这是CAN2.0A 标准,11 位ID 范围【0,2047】,由于历史原因限制在【0,2031】。如果使用CAN2.0B标准,29 位ID 并不改变这个描述;表中的11 位映射到29 位COB-ID 中的最高11 位,以至于表中的COB-ID范围变得增大许多。
3、CANopen
CAL提供了所有的网络管理服务和报文传送协议,但并没有定义CMS对象的内容或者正在通讯的对象的类型(它只定义了how,没有定义 what)。而这正是CANopen切入点。
CANopen 是在CAL 基础上开发的,使用了CAL 通讯和服务协议子集,提供了分布式控制系统的一种实现方案。CANopen 在保证网络节点互用性的同时允许节点的功能随意扩展:或简单或复杂。
CANopen 的核心概念是设备对象字典(OD:Object Dictionary),在其它现场总线(Profibus,Interbus-S)系统中也使用这种设备描述形式。注意:对象字典不是CAL 的一部分,而是在CANopen 中实现的。
下面先介绍对象字典(OD:Object Dictionary),然后再介绍CANopen 通讯机制。
3.1 对象字典OD
对象字典(OD:Object Dictionary)是一个有序的对象组;每个对象采用一个16 位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8 位的子索引,对象字典的结构参照表3-1。不要被对象字典中索引值低于0x0FFF 的‘data types’项所迷惑,它们仅仅是一些数据类型定义。一个节点的对象字典的有关范围在0x1000 到 0x9FFF 之间。
CANopen 网络中每个节点都有一个对象字典。对象字典包含了描述这个设备和它的网络行为的所有参数。
一个节点的对象字典是在电子数据文档(EDS:Electronic Data Sheet)中描述或者记录在纸上。不必要也不需要通过CAN-bus“审问”一个节点的对象字典中的所有参数。如果一个节点严格按照在纸上的对象字典进行描述其行为,也是可以的。节点本身只需要能够提供对象字典中必需的对象(而在CANopen 规定中必需的项实际上是很少的),以及其它可选择的、构成节点部分可配置功能的对象。
CANopen 由一系列称为子协议的文档组成。
通讯子协议(communication profile),描述对象字典的主要形式和对象字典中的通讯子协议区域中的对象,通讯参数。同时描述CANopen 通讯对象。这个子协议适用于所有的 CANopen 设备。
还有各种设备子协议(device profile),为各种不同类型设备定义对象字典中的对象.目前已有5 种不同的设备子协议,并有几种正在发展。
设备子协议为对象字典中的每个对象描述了它的功能、名字、索引和子索引、数据类型,以及这个对象是必需的还是可选的,这个对象是只读、只写或者可读写等等。
注意:一个设备的通讯功能、通讯对象、与设备相关的对象以及对象的缺省值由电子数据文档(EDS:Electronic Data Sheet)中提供。
单个设备的对象配置的描述文件称作设备配置文件(DCF:Device Configuration File),它和 EDS 有相同的结构。二者文件类型都在 CANopen 规范中定义。
设备子协议定义了对象字典中哪些OD对象是必需的,哪些是可选的;必需的对象应该保持最少数目以减小实现的工作量。
可选项――在通讯部分和与



欧迪

  • 精华:2帖
  • 求助:0帖
  • 帖子:4帖 | 306回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2006年7月11日
发表于:2009-04-10 12:28:09
1楼
4. 预定义报文或者特殊功能对象
 同步(SYNC)
 在网络范围内同步(尤其在驱动应用中):在整个网络范围内当前输入值准同时保存,随后传送(如果需要),根据前一个SYNC后接收到的报文更新输出值。
 主从模式:SYNC主节点定时发送SYNC对象,SYNC从节点收到后同步执行任务。
 在SYNC报文传送后,在给定的时间窗口内传送一个同步PDO。
 用CAL中基本变量类型的CMS对象实现。
 CANopen建议用一个最高优先级的COB-ID以保证同步信号正常传送。SYNC报文可以不传送数据以使报文尽可能短。
 时间标记对象(Time Stamp)
 为应用设备提供公共的时间帧参考。
 用CAL中存储事件类型的CMS对象实现。
 紧急事件(Emergency)
 设备内部错误触发。
 用CAL中存储事件类型的CMS对象实现。
 节点/寿命保护(Node/Life guarding)。
 主从通讯模式
 NMT主节点监控节点状态:称作节点保护(Node guarding)。
 节点也可以(可选择)监控NMT主节点的状态:称作寿命保护(Life guarding)。当NMT从节点接收到NMT主节点发送的第一个Node Guard报文后启动寿命保护。
 检测设备的网络接口错误(不是设备自身的错误):通过应急指示报告。
 根据NMT节点保护协议实现:NMT主节点发送远程请求到一个特定节点,节点给出应答,应答报文中包含了这个节点的状态。
 Boot-UP
 主从通讯模式
 NMT从节点通过发送这个报文,向NMT主节点说明该节点已经由初始化状态进入预操作状态。

上面提到的通讯对象类型中有二个对象用于数据传输。它们采用二种不同的数据传输机制实现:一个CANopen设备必须支持一定数量的网络管理服务(管理报文,administrative messages),需要至少一个SDO。每个生产或消费过程数据的设备需要至少一个PDO。所有其它的通讯对象是可选的。一个CANopen设备中CAN通讯接口、对象字典和应用程序之间的联系如图 3-1 所示。
3.3 CANopen 预定义连接集
为了减小简单网络的组态工作量,CANopen定义了强制性的缺省标识符(CAN-ID)分配表。这些标志符在预操作状态下可用,通过动态分配还可修改他们。CANopen设备必须向它所支持的通讯对象的提供相应的标识符。
缺省ID分配表是基于11位CAN-ID,包含一个4位的功能码部分和一个7位的节点ID(Node-ID)部分。如图 3-2 所示。

Node-ID由系统集成商定义,例如通过设备上的拨码开关设置。Node-ID范围是1~127(0不允许被使用)。
预定义的连接集定义了4个接收PDO(Receive-PDO),4 个发送PDO(Transmit-PDO),1个SDO(占用2个CAN-ID),1个紧急对象和1个节点错误控制(Node-Error-Control)ID。也支持不需确认的NMT-Module-Control服务,SYNC和Time Stamp对象的广播。缺省ID分配表如表3-3所示。

欧迪

  • 精华:2帖
  • 求助:0帖
  • 帖子:4帖 | 306回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2006年7月11日
发表于:2009-04-10 12:43:12
2楼
3.4 CANopen标识符分配
ID地址分配表与预定义的主从连接集(set)相对应,因为所有的对等ID是不同的,所以实际上只有一个主设备(知道所有连接的节点ID)能和连接的每个从节点(最多127个)以对等方式通讯。两个连接在一起的从节点不能够通讯,因为它们彼此不知道对方的节点ID。
比较上表的ID映射和CAL的映射,显示了具有特定功能的CANopen对象如何映射到CAL中一般的CMS对象。
CANopen网络中CAN标识符(或COB-ID)分配3种不同方法:
 使用预定义的主从连接集。ID是缺省的,不需要配置。如果节点支持,PDO数据内容也可以配置。
 上电后修改PDO的ID(在预操作状态),使用(预定义的)SDO在节点的对象字典中适当位置进行修改。
 使用CAL DBT服务:节点或从节点最初由它们的配置ID指称。节点ID可以由设备上的拨码开关配置,或使用CAL LMT服务进行配置。当网络初始化完毕,并且启动后,主节点首先通过”Connect_Remote_Node”报文(是一个CAL NMT服务)和每个连接的从设备建立一个对话。 一旦这个对话建立,CAN通讯ID(SDO和PDO)用CAL DBT服务分配好,这需要节点支持扩展的boot-up。

3.5 CANopen boot-up过程
在网络初始化过程中,CANopen支持扩展的boot-up,也支持最小化boot-up过程。
扩展boot-up是可选的,最小boot-up则必须被每个节点支持。两类节点可以在同一个网络中同时存在。如果使用CAL的DBT服务进行ID分配,则节点必须支持扩展 boot-up过程。可以用节点状态转换图表示这两种初始化过程,如图 3-3 所示。扩展boot-up的状态图在预操作和操作状态之间比最小化boot-up多了一些状态。
注意:图3-3中括号内的字母表示处于不同状态那些通讯对象可以使用。
a. NMT ,b. Node Guard ,c. SDO ,d. Emergency ,e. PDO ,f. Boot-up
 状态转移(1-5 由 NMT 服务发起),NMT 命令字(在括号中):
1: Start_Remote_node (0x01)
2: Stop_Remote_Node (0x02)
3: Enter_Pre-Operational_State (0x80)
4: Reset_Node (0x81)
5: Reset_Communication (0x82)
6: 设备初始化结束,自动进入Pre_Operational状态,发送Boot-up消息在任何时候NMT服务都可使所有或者部分节点进入不同的工作状态。NMT服务的CAN报文由 CAN头(COB-ID=0)和两字节数据组成;第一个字节表示请求的服务类型(‘NMT command specifier’),第二个字节是节点ID,或者0(此时寻址所有节点)。仅支持最小化boot-up的设备叫最小能力设备。最小能力设备在设备初始化结束后自动进入预操作l状态。在这个状态,可以通过SDO进行参数配置和进行COB-ID分配。设备进入准备状态后,除了NMT服务和节点保护服务(如果支持并且激活的话)外,将停止通讯。(因此‘Stopped’是描述这个状态的一个好名字)

欧迪

  • 精华:2帖
  • 求助:0帖
  • 帖子:4帖 | 306回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2006年7月11日
发表于:2009-04-12 17:40:10
3楼

有需要的可以把邮箱留下,我会把资料发到各位的邮箱。

daibw

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 12回
  • 年度积分:0
  • 历史总积分:17
  • 注册:2009年3月27日
发表于:2009-04-13 21:46:52
4楼
烦您发一份给我,谢谢。邮箱:dbwgood_ok@126.com

guaguadu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2008年9月13日
发表于:2009-04-19 19:43:05
5楼
小弟弟刚刚从事跟CAN相关的工作,如果方便的话,请楼主也发一份给我 谢谢

guaguadu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2008年9月13日
发表于:2009-04-19 19:43:31
6楼
哦 忘了输邮箱地址了 guaguaduquanhui@sina.com

欧迪

  • 精华:2帖
  • 求助:0帖
  • 帖子:4帖 | 306回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2006年7月11日
发表于:2009-04-20 09:34:46
7楼
资料已发,请注意查收

sqqm

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2009年4月22日
发表于:2009-04-22 22:35:38
8楼
给我发一份,谢谢,sqqm@163.com,学习中

欧迪

  • 精华:2帖
  • 求助:0帖
  • 帖子:4帖 | 306回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2006年7月11日
发表于:2009-04-23 09:30:35
9楼
资料已发,请注意查收

churui

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2009年4月24日
发表于:2009-04-24 09:19:36
10楼
回复内容:
对:欧迪 关于

有需要的可以把邮箱留下,我会把资料发到各位的邮箱。

 


您好,可以发给我一份吗?

trueray@yeah.net

内容的回复:

欧迪

  • 精华:2帖
  • 求助:0帖
  • 帖子:4帖 | 306回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2006年7月11日
发表于:2009-04-24 10:12:28
11楼

资料已发,请注意查收

chang_qs

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2008年3月17日
发表于:2009-04-24 14:07:32
12楼

您好!我正需要这方面资料,可以给我发一份吗?     chang_qs@163.com

dkh4628

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 17回
  • 年度积分:0
  • 历史总积分:250
  • 注册:2009年4月02日
发表于:2009-04-30 20:54:15
13楼

可以也给我发一份吗

dkh4628@163.com

 

ouqd

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 89回
  • 年度积分:0
  • 历史总积分:142
  • 注册:2005年11月30日
发表于:2009-05-01 21:38:25
14楼

欧迪

  • 精华:2帖
  • 求助:0帖
  • 帖子:4帖 | 306回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2006年7月11日
发表于:2009-05-04 09:43:26
15楼

资料已发,注意查收。

啊飞111

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 14回
  • 年度积分:0
  • 历史总积分:41
  • 注册:2007年1月29日
发表于:2009-05-04 10:24:02
16楼
给我发一份吧,谢谢,liuzhicheng0724@163.com

欧迪

  • 精华:2帖
  • 求助:0帖
  • 帖子:4帖 | 306回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2006年7月11日
发表于:2009-05-06 14:42:25
17楼

资料已发,请注意查收

baijun_neu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2009年5月07日
发表于:2009-05-07 13:28:50
18楼
你好,可以给我发一份吗?谢谢 bai-j@neusoft.com

欧迪

  • 精华:2帖
  • 求助:0帖
  • 帖子:4帖 | 306回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2006年7月11日
发表于:2009-05-07 14:07:08
19楼

资料已发,请注意查收

29845167啊啊

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2009年5月09日
发表于:2009-05-09 10:00:00
20楼

您能给我发一份吗 我在做关于这个的设计 谢谢

29845167@qq.com


热门招聘
  • 客服
  • 小程序
  • 公众号
首页 上一页 1 2 3 4 5 6 下一页 尾页