CANopen介绍 目录
目录...................................................................................................................................1 1. 列表..............................................................................................................................3 1.1 1.2 1.3
图片列表............................................................................................................3 表格列表............................................................................................................3 缩写词................................................................................................................4
2. CAN总线介绍..............................................................................................................5 2.1
特征数据............................................................................................................5 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9
物理层...................................................................................................5 数据传输协议(数据链路层)...............................................................6 总线仲裁...............................................................................................6 标识符意义............................................................................................8 通信对象(帧)....................................................................................8 数据报文(数据帧).............................................................................9 错误报文(错误帧).............................................................................9 超载报文(超载帧).............................................................................9 数据请求报文(远程请求帧)...............................................................9
2.1.10 错误检测...............................................................................................10 2.1.11 错误处理...............................................................................................10
3. CAN应用层(CAL)...................................................................................................11 4. 通信和设备规范............................................................................................................12 4.1
设备规范............................................................................................................12 4.1.1 4.1.2 4.1.3 4.2
默认值...................................................................................................12 参数.......................................................................................................13 设备特性...............................................................................................13
通信规范............................................................................................................14 4.2.1 4.2.2
SDO参数通信.......................................................................................15 PDO过程数据通信...............................................................................17
5. 参数通信(SDO).......................................................................................................18 5.1 5.2
31.3.2006, 43930071
协议...................................................................................................................19 SDO异常行为....................................................................................................23
系统手册, page 1.1
CANopen介绍 目录
6. 过程数据通信(PDO)................................................................................................24 6.1 6.2 6.3
对象:通信参数.................................................................................................24 传输类型............................................................................................................25 对象映射............................................................................................................26
7. 紧急事件报文(EMCY).............................................................................................27 7.1 7.2 7.3
对象1001h:错误寄存器...................................................................................27 对象1002h:状态..............................................................................................27 对象1003h:预定义错误区域...........................................................................27
8. 网络管理(NMT)和模块的启动(boot-up)..............................................................28 8.1 8.2
NMT主报文.......................................................................................................29 状态转换描述.....................................................................................................29
9. 节点保护和生命保护....................................................................................................30 9.1 9.2
对象 100Ch:保护时间......................................................................................31 对象 100Dh:生命时间因素..............................................................................32
10. 心跳协议......................................................................................................................33 10.1 对象 1016h:消费者心跳时间...........................................................................34 10.2 对象 1017h:生产者心跳时间...........................................................................35
系统手册, page 1.2 31.3.2006, 43930071
CANopen介绍 列表
1.
1.1
列表
图片列表
图 1.1 在一辆汽车中的CAN网络结构原理...............................................................................5 图 1.2 显性和隐性总线等级的实现............................................................................................7 图 1.3 总线仲裁.........................................................................................................................7 图 1.4 报文帧的标准格式(CAN specification 2.0 A).............................................................9 图 1.5 CANopen结构..............................................................................................................12 图 1.6 CANopen的通信规范...................................................................................................14 图 1.7 SDO通信......................................................................................................................15 图 1.8 参数通信概要................................................................................................................16 图 1.9 参数通信(SDO)........................................................................................................18 图 1.10 PDO过程数据交换.....................................................................................................25 图 1.11 设备行为(boot-up)状态图(NMT状态机)............................................................28 图 1.12 节点保护和生命保护...................................................................................................30 图 1.13 心跳............................................................................................................................33
1.2 表格列表
表 1.1 根据ISO11898的额定绝对总线等级.............................................................................5 表 1.2 数据传输速率,电缆和终端电阻.....................................................................................6 表 1.3 CANopen中的默认标识符.............................................................................................8 表 1.4 通信和设备规范之间的比较..........................................................................................12 表 1.5 CANopen设备参数区域...............................................................................................13 表 1.6 PDO传输类型..............................................................................................................25 表 1.7 默认映射示例................................................................................................................26 表 1.8 在各设备状态下允许使用的通信对象...........................................................................28 表 1.9 NMT状态机的状态转换................................................................................................29
31.3.2006, 43930071 系统手册, page 1.3
CANopen介绍 列表
1.3 缩写词
在本文档中使用了以下缩写词:
AWG CAL CAN CiA CMS COB CPU CRC DBT DLC EMCY EMC ID IPC LMT NMT OSI PDO RTR Rx_PDO SDO SYNC Tx_PDO
美国接线规格 CAN应用层 控制器区域网络
'CAN in Automation' 用户组织 CAN报文规范 通信对象 中央处理单元 循环冗余校验 分配者 数据长度编码 紧急事件(对象) 电磁兼容性 标识符
工业控制计算机 层管理 网络管理 开放系统互连 过程数据对象 远程传送请求 接收PDO 服务数据对象 同步(对象) 发送PDO
系统手册, page 1.4 31.3.2006, 43930071
CANopen介绍 CAN总线介绍
2. CAN总线介绍
在上世纪80年代初期,汽车工业领域明确提出需要一种能应用到车辆内的总线系统。其目的是开发一种两线的电总线来取代被广泛使用的用于连接电气系统的线束。确实,自从车辆中使用的常规接线线束长度已经超过2千米,重达100多千克以来,这个需求越发迫切。同样在80年代初,控制器区域网络(CAN)相应于这个要求而被开发出来。CAN是一种串行总线系统,由于其对错误的低易感性、实时性、高可靠性和总线结构简单等特点,非常适合工业应用。基于ISO11898 的CAN协议相应于ISO/OSI参考模型的第二层——数据链接层,并支持多主方式运行,即每个节点都可要求通过这个连续总线进行通信。
2.1
2.1.1
特征数据
物理层
物理层包括了CAN总线的网络拓扑,即它描述了通信系统的物理结构。CAN总线使用一种线性结构的总线拓扑,所有节点被连接到一条单独的两线电缆(屏蔽的双绞线电缆)上,在该电缆的末端接有总线终端电阻。这样,每一站都可与其他任一站之间无约束地通信。
充气压力 空气压力 测量 1 节点 1 油温引擎温度.油压点火测量 2喷油引擎控制 系统 节点 3 CAN总线节点 2 终端电阻 节点 4 温度压力警报终端电阻节点 5 诊断接口显 示系统 监控 图 1.1 在一辆汽车中的CAN网络结构原理
为了与总线媒介耦合,CAN总线节点的收/发环节通过CAN-High (CANH) 和CAN-Low
(CANL)两条线路被动地连接到总线电缆上。实际的数据传输采用具有良好干扰免疫性的差分电压信号。在这个过程中,两条总线电缆之间的电压差被计算。为了表示总线上传输的数据,ISO 11898中定义了两个不同的差分电压范围,也就是隐性和显性的总线等级。
总线状态 CANH CANL
可接受的电压差: UD = CANH - CANL
显性 2.5 V 2.5 V 0 ... 0.5 V
隐性 3.5 V 1.5 V 0.9 ... 2.0 V
表 1.1 根据ISO11898的额定绝对总线等级
视所使用的数据传输电缆,可以达到相应的总线长度和数据传输速率。首选传输介质是屏蔽的双绞线电缆。
31.3.2006, 43930071 系统手册, page 1.5
CANopen介绍 CAN总线介绍
总线覆盖长度
0 ... 40 m 40 ... 300 m 300 ... 600 m 600 m ... 1 km
总线电缆
每单位长度阻值 70 mΩ/m <60 mΩ/m <40 mΩ/m <26 mΩ/m
电缆截面(线径)0.25 ... 0.34 mm2 AWG23, AWG 22 0.34 ... 0.6 mm2 AWG22, AWG20 0.5 ... 0.6 mm2 AWG 20 0.75 ... 0.8 mm2 AWG18
总线终端电阻
124 Ω (1%) 127 Ω (1%) 150 Ω ... 300 Ω 150 Ω ... 300 Ω
最大数据传输速率
1 Mbit/s 40 m 500 kbit/s 100 m 100 kbit/s 500 m 50 kbit/s 1 km
表 1.2 数据传输速率,电缆和终端电阻
CAN对数据位编码采用不归零制编码方法。在不归零制编码下,整个位时间中总线等级保持恒定,这意味着在一个相同位比特序列传送中不会出现信号改变。
2.1.2 数据传输协议(数据链路层)
除物理层外,总线定义中最重要的部分是数据传输协议。这个协议必须被明确地定义以便使所有的节点讲同一种“语言”。CAN(的数据传输协议)基于一种面向对象的报文交换而被定义。
在这样的情况下,报文发送端为其报文指派一个确定的报文号码(标识符)并将报文及其标识符发送到总线上。在此过程中接收端地址和发送端地址都不被指定。结果,报文可以供任意接收端接收(广播原理),每一个接收端从总线上获取它所需要的信息。当前连接到总线上的具体的站需要以软件为根据来决定一条报文是否与他们相关。
在CAN总线上个别站之间的通信过程是以事件驱动、具有优先级(编号)的报文或总线节点间的通信对象广播交换的形式发生。
2.1.3 总线仲裁
两个或更多的站同时发送时的数据冲突问题,使得非常有必要具有这样一个机制——该机制能在冲突事件发生时可靠地将总线分派给一个做好发送准备的站。这个机制被提及为总线仲裁。CAN总线具有位到位的总线仲裁,它可识别隐性和显性比特位,也就是一个数据位的逻辑低(0)和高(1)状态通过显性和隐性两种总线状态在CAN中被表示。当两个CAN节点站同时发送时,显性总线状态将决定发送权的归属。由于有总线监控,一个站在总线仲裁中失败时将立即被其自身检测到并停止发送。当且仅当所有节点发送的都是隐性比特位时,总线才处于隐性状态。而只要有一个节点在发送显性比特位,整个总线等级就是显性的。
系统手册, page 1.6 31.3.2006, 43930071
CANopen介绍 CAN应用层(CAL)
Bus cable
Receiver 1 Receiver 2
图 1.2 显性和隐性总线等级的实现
一个发送端通过发送一个显性的比特位(帧开始标记SOF)来表示一条新报文的开始。所有准备发送的其他节点以这个开始比特位对其自身进行同步,并也开始发送它们的报文。在开始比特位之后,每个节点一位一位的发送它们的报文的标识符并在每发送一位后都对实际的总线等级与其所发送的比特位进行比较。如果某个节点检测到它发送的一个隐性比特位被另一个节点发送的显性比特位所覆盖,在开始下一次报文发送前它将中断发送,并等待当前报文发送结束。在仲裁过程的最后,所发送报文标识符最小(优先级最高)的节点保持着总线控制权并可以无任何延时的发送其报文的数据内容。
如我们从这个序列所见,每一个标识符仅允许被分派一次。否则,在总线仲裁后就可能出现两个节点同时进入总线,它们发送的报文将相互覆盖。
开始位 节点站 1 节点站 1 赢得了总线仲裁并继续发送隐性 显性 隐性 节点站 2 显性 节点站 2 停止发送 图 1.3 总线仲裁
31.3.2006, 43930071 系统手册, page 1.7
CANopen介绍 CAN总线介绍
2.1.4 标识符意义
在CAN中标识符非常地重要。它指明了报文的内容同时又被用来参与访问总线的仲裁。 在其他总线系统中,一条报文通常包含了接收端和发送端的地址。然而在CAN中情况不同,一条CAN报文包含了一个唯一地标识报文内容及隐含源地址的标识符。标识符仅被关联到产生此报文的CAN节点,也就是说一个节点可以以相应的标识符号码发送多条报文。任何情况下,每一条报文首先被发送到网络中的所有节点。这些节点以标识符为基础来决定该报文是否与它们相关。结果非常可能出现几个节点同时接收到同一条报文(多点传送)。 从I/O模块角度的默认标识符分配(xxxxxxx = 模块ID):
标识符 (二进制) 0000000000000010000000
标识符(十进制) 0 128 129-255 256 385-511
标识符 (十六进制) 0 80 81- FF 100 181- 1FF 201- 27F 281- 2FF 301- 37F 381-3FF
通信参数 /映射的对象 (未使用) 0x1014 0x1015 0x1012 0x1013 0x1800 /0x1A00 0x1400 /0x1600 0x1801 /0x1A01 0x1401 /0x1601 0x1802 /0x1A02 0x1402 /0x1602 0x1803 /0x1A03 0x1403 /0x1603 0x1200 0x1200 0x1016 0x1017
对象 NMT SYNC
功能 Boot-Up 同步 状态 时间戳
注释 广播 广播
广播,映射只读
事件驱动,根据CiA DS 40x默认映射
事件驱动,根据CiA DS 40x默认映射
异步,根据CiA DS 40x默认映射 事件驱动,根据CiA DS 40x默认映射
SDO以I/O模块的角度发送标识符 SDO以I/O模块的角度接收标识符
Emergency 0001xxxxxxx TIME STAMP Tx_PDO1
001000000000011xxxxxxx
Rx_PDO1 0100xxxxxxx 513-639
Tx_PDO2 Rx_PDO2
0101xxxxxxx 0110xxxxxxx
641-767 769-895
Tx_PDO3 Rx_PDO3 Tx_PDO4 Rx_PDO4 Tx_SDO Rx-SDO
0111xxxxxxx 1000xxxxxxx 1001xxxxxxx 1010xxxxxxx 1011xxxxxxx 1100xxxxxxx
897-1023 参数 参数 生命保护/节点保护
1025-1151401-47F 1153-1279481-4FF 1281-1407501-57F 1409-1535581-
5FF 1537-1663601-
67F 1793-1919701-
77F
Nodeguard 1110xxxxxxx
心跳
LMT
1111110010x
2020-20217E4-7E5
层管理
(未使用)
对ID和比特率设置进行层管理
表 1.3 CANopen中的默认标识符
2.1.5 通信对象(帧)
在CAN中,4种类型的通信对象被用来在总线上交换数据。这些通信对象也被称作帧。
系统手册, page 1.8 31.3.2006, 43930071
CANopen介绍 CAN总线介绍
2.1.6 数据报文(数据帧)
CAN节点站必须使用数据报文来传送它们的数据(根据它们的软件进行)。这些数据报文的帧由单独的场构成,其结构如下图所示:
End of frame 帧结束标记 7
SOF帧开始标记 Acknowledge field with check-sum and acknow-ledge 应答场 16+2
Identifier field 标识场 Control field 控制场 Data field 数据场 0...64
1 11+1 6
图 1.4 报文帧的标准格式(CAN specification 2.0 A)
• SOF“帧开始”标记位始终是显性的(逻辑‘0’)。 它表示了一个帧的开始,所有总线节点都将根据这个比特位的下降沿来同步它们内部的接收级。 • 标识场(也被称作仲裁场)被用来标识2032个(CAN 2.0A,11位标识符)可能的报文对象之一以及它们的优先级。换句话说:在一个单独的CAN网络中可以使用2032个不同的通信对象(测量值,开关位置等)。CAN 2.0B支持的CAN扩展帧具有29位的标识符(536,870,912个通信对象)。最后一位是RTR位(远程传送请求)。通过RTR,一个节点站可以发送一个目标请求给另一个节点站,使其立即无任何延时地传送它的通信对象,通信对象的类型被指定在了请求当中。这样的请求通常在某处急需某个通信对象时被使用。 • 控制场传送一个4位DLC(数据长度编码)来指定在接下来的数据场中所包含的用户数据的长度,长度被表示为许多个byte(0 - 8)。 包含在控制场中的IDE(标识符扩展)位显示了被使用的标识符是否是一个11位的标准格式(显性)或是一个29位的扩展帧格式(隐性)。 • 数据场包括了最大64个比特的用户数据(= 每条报文8个byte)。
• 应答场发送15位的CRC校验码和1个应答位,依靠这个应答位可以确定是否至少有1个节点正确接收到这条报文。 • 帧结束序列包含了7个隐性比特位来表示帧发送结束。
在两条报文间必须保持至少3个隐性位的报文间距(间歇场)。在此之后可以接一个任意长度隐性总线等级的场,它表示总线处于休眠状态(总线空闲)。
2.1.7 错误报文(错误帧)
如果网络中收到一个数据帧的节点站在该数据帧中检测到一个错误,一个错误帧将被使用。
2.1.8 超载报文(超载帧)
如果一个网络节点站因为其来不及接收或两次报文发送间的总线状态是显性的而要求推迟下一条数据或远程帧的发送, 它将发送一个超载帧。
2.1.9 数据请求报文(远程请求帧)
远程帧使网络中的节点可以从另一个节点上请求数据,一个结构近似于数据帧的帧被用作此功能。所请求对象的标识符被放入该帧的标识符中。该帧的DLC区域包含了所请求用户数据的长度。在此时,RTR比特位被设置成隐性,这表示有一个节点站正在明确地向另一个节点站直接请求数据。在远程请求帧中没有数据场被发送,CRC区域直接地接在DLC区域后面。远程请求帧被构造来像一个包含0 byte数据的数据帧。所有站都接收到这个帧并根据其设置的
31.3.2006, 43930071
系统手册, page 1.9
CANopen介绍 CAN总线介绍
RTR比特位检测到一个节点站正向另一个节点站请求确定的数据。被寻址的节点站根据标识符发现这个事实并发送出一个带有被请求数据的数据帧作为回应。
2.1.10 错误检测
CAN总线一个重要的积极特性是其检测在数据传输中一系列错误并能据此作出反应的强大能力。CAN总线在数据传输期间贯彻一个HD = 6的汉明距离(信号距离)。为此,CAN总线同时并行地使用五种不同的错误检测概念。
• 总线监测
发送端将对被发送的比特位状态与总线等级进行比较。若发出的比特状态与总线等级不相符,就表明有一个错误发生在了传输媒介上。其他等待发送的报文将被停止发送,同时一个错误处理程序被执行。 • CRC (循环冗余码校验)
发送端和接收端分别用一个二进制多项式对报文进行除运算并求余,然后对结果进行比较。 • 位填充
在此机制下,为了保证总线同步,5个连续同样的数据比特位序列后将被“填充”一个补码位来打断。这些填充位将被接收端从数据流中移除,从而将报文恢复成其原始状态。 • 报文帧校验
各种各样的报文帧都将被检验其正确性(帧格式检验)。 • 应答校验
发送端将检验是否存在至少一个接收端正确地接收到了数据。
2.1.11 错误处理
相应于数据传输错误的错误处理程序由两个过程组成。首先,一个被检测到包含错误的帧将立即被节点站拒绝且不被评定处理。第二步被用来确保系统范围的数据共存,其在CAN总线上结构如下:一旦任何节点站检测到一个错误,它将立即发送一个由6个显性位(错误标记)和一个错误分隔符(8个隐性位)组成的错误帧。违反了位填充规则的6个连续显性位会覆盖总线上的所有隐性位。总线上所有其他节点都注意到这个错误情形并检测到它们刚接收到的这个帧包含有一个错误。于是它们拒绝这个帧,随后也发送一个错误帧。由此一个节点站检测到的一个错误就被对所有节点站全局化了,系统范围的数据共存通过这样被重新建立。
正在发送数据的节点站也自然地检测到它发送的帧包含一个错误,于是停止发送并等待一定时间后重新进行传送。
系统手册, page 1.10 31.3.2006, 43930071
CANopen介绍 CAN应用层(CAL)
3. CAN应用层(CAL)
由‘CAN in Automation’(CiA)国际制造商和用户组织规范化的CANopen协议被用作ISO/OSI参考模型的第7层——应用层。
由于定义在第2层上的服务的使用,在数据传输上无任何附加协议。根据CiA/DS201 ... CiA/DS207,CAL被划分为如下的基本部分:
• CAN报文规范(CAN Message Specification - CMS) • 分配者(Distributor - DBT)
• 网络管理(Network management - NMT) • 层管理(Layer management - LMT)
CAN报文规范(CMS)定义了在CAN节点之间的基本通信服务,也定义了这些通信服务所需的数据类型 。就这种情况下,一个CAL节点仅需要执行它实际上使用的服务。
分配者(DBT)使标识符可以在运行中被动态地分派。这意味着每个节点不必被手动地配置。整个系统可以更简便地被扩展或修改而不需要用户对标识符重新定义。
针对网络监控的全局服务被指定在‘网络管理(NMT)’中。这些服务包括了对单个节点的启动和停止,在运行中监控节点并处理异常状态等。
层管理(LMT)提供了允许在整个网络中对某些参数进行配置的服务。这些服务包括了对单个节点指定节点号以及设置其CAN接口的位定时参数(波特率)等。
同CANopen一样还有许多附加在第7层上的协议,诸如DeviceNet(Allen-Bradley),Smart Distributed System智能分布式系统SDS(Honeywell),SeleCAN(Selectron)及CAN Kingdom等。在这里就不作更多的讨论了。
31.3.2006, 43930071 系统手册, page 1.11
CANopen介绍 通信和设备规范
4. 通信和设备规范
通信规范 控制“怎样”通信
指定了交换实时数据和参数数据的原理 简化了网络管理(NMT)
设备规范
描述了用“什么”通信
公开的数据内容定义 -> 对不同设备分类的基本功能进行统一寻址(例如输入/输出 模块,伺服系统或变频器)
表 1.4 通信和设备规范之间的比较
4.1 设备规范
设备规范通常定义了: • 默认值 • 参数
• 设备特性(性能)
CANopen设备规范描述了用“什么”进行通信。设备规范的目的是以公开的方式定义数据内容,从而使不同设备分类(例如 I/O 模块,伺服系统和编码器等)的基本功能能被统一地寻址。
设备规范 CiA/DS40X规范ACANopen设备 设备 规范B设备 规范 C 设备 规范 D CANopen通信规范 CiA/DS30XISO/OSI第7层: 应用层 ISO/OSI第2层:数据链路层 ISO/OSI第1层:物理层 ISO标准 11898CANCAN 图 1.5 CANopen结构
4.1.1 默认值
为了使启动简化,CANopen为所有的参数都定义了默认值。这些默认值适合大多数的应用。 在开关接通(上电)后,CANopen模块有一个默认标识符分配。 附录中包含有一个所有重要默认标识符的列表。
系统手册, page 1.12 31.3.2006, 43930071
CANopen介绍 通信和设备规范
4.1.2 参数
设备参数通过使用服务数据对象(SDO)来被读和写。但因为默认值对大多数的应用都有效,几乎不需要再特意的设置设备参数。服务数据对象将在下一节——‘通信规范’中被更加详细的阐述。设备参数被相应的划分为以下几组:
索引(hex) 1000 – 1FFF 2000 - 5FFF 6000 - 9FFF A000 - FFFF
对象 通信规范区域 制造商定义规范区域 标准化的设备规范区域 为将来的使用作保留
表 1.5 CANopen设备参数区域
4.1.3 设备特性
CANopen允许一个简化的启动。在开关接通(上电)后,模块执行初始化操作并在初始化完成后转换到PRE-OPERATIONAL 预运行状态。
此时可以使用一条独立报文(Start_Remote_Node)来使模块转换到OPERATIONAL 运行状态。过程数据仅可在OPERATIONAL 运行状态下被交换。
31.3.2006, 43930071 系统手册, page 1.13
CANopen介绍 通信和设备规范
4.2 通信规范
通信规范控制了“怎样”通信。它定义了交换实时数据和参数数据的原理及一个简化的网络管理。这样的情况下,在相应的一个性能优良的软件层面不浪费资源地运行功能特别的重要。服务数据对象(SDO)被用来对设备参数进行读和写。过程数据对象(PDO)被用来交换实时数据。像这两种服务一样,CANopen还为网络管理提供了另外4种服务:心跳、节点保护、紧急事件和同步。过程数据交换是“纯粹的CAN”,因为没有任何协议附加在其之上。CAN的广播性能被保留了下来。所以,PDO具有一个广播特性,而SDO具有一个通道特性并被用在点对点的数据交换上。
根据CiA DS-301,针对不同的数据类型,CANopen使用以下这些服务: • 过程数据通信(PDO) • 参数通信(SDO) • 同步(SYNC)
• 紧急事件报文(EMCY) • 网络管理(NMT) • 节点保护和生命保护
NMT (Boot_Up)Node-guard (Life-/Nodeguarding)Emergency (Status)CommunicationprofileSNYC (Synch)PDO (Process Data Object)SDO (Service Data Object)Tx_PDO (Inputs)Rx_PDO (Outputs)Rx_SDO (Client -> Server, Upload Request)Tx_SDO (Server -> Client, Upload Response)Rx_SDO (Client -> Server, Download Request)Tx_SDO (Server -> Client, Download Response) 图 1.6 CANopen的通信规范
系统手册, page 1.14 31.3.2006, 43930071
CANopen介绍 通信和设备规范
4.2.1 SDO参数通信
对象列表中的设备参数通过使用服务数据对象SDO来被读和写。SDO可以是任意尺寸的数据结构。它们在CANopen中使用一个16位的主索引和一个8位的子索引来对参数寻址。
Cl i e n t ServerUp l o a d 1.Client->ServerUploadRequest2.Server->ClientUploadResponseData from server Do w n l o a d1.Client->ServerDownloadRequestData from client 2.Server->ClientDownloadResponse 图 1.7 SDO通信 上传
客户端请求,请求中包含数据和被请求的设备参数的主索引和子索引。
服务器以设备参数来回应(包括了主索引和子索引)。 下载
客户端将数据和主索引、子索引一起发送。 服务器确认正确接收。.
31.3.2006, 43930071 系统手册, page 1.15
CANopen介绍 通信和设备规范
SDO的CANopen报文 CAN首部
Byte 0 Byte 1
Bit 7 ID 10 ID 2
Bit 6 ID 9 ID 1
Bit 5 ID 8 ID 0
Bit 4 ID 7 RTR
Bit 3 ID 6 DLC 3
Bit 2 ID 5 DLC 2
Bit 1 ID 4 DLC 1
Bit 0 ID 3 DLC 0
CAN数据
Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 Byte 9
上传/下载 请求/回应 主索引低位字节(LSB) 主索引高位字节(MSB) 子索引 数据 数据 数据 数据
数据 数据 数据 数据
数据 数据 数据 数据
数据 数据 数据 数据
数据 数据 数据 数据
数据 数据 数据 数据
数据 数据 数据 数据
数据 数据 数据 数据
ID 10 ... ID 0 : CAN标识符 DLC 3 ... DLC 0 : 数据长度 RTR : 远程传送请求位 Data : 用户数据
参数通信概要
SDO 选择设备参数 -> 主索引和子索引 数据来自客户端 例如object 6200 对输出字节进行写 -> 下载 图 1.8 参数通信概要
数据来自服务器端 例如object 100A 软件版本 -> 上传 系统手册, page 1.16 31.3.2006, 43930071
CANopen介绍 通信和设备规范
4.2.2 PDO过程数据通信
过程数据对象PDO被用来交换过程数据(实时数据)。CANopen也为过程数据交换定义了默认设置,例如标识符、数据映射和通信方式等。使用映射参数可以改变数据映射的默认设置。PDO的传送既可以是事件驱动方式也可以是同步方式。
在接通上电后,最重要的PDO都有可用的默认标识符。这些标识符是基于设备节点地址设定的。
PDO的CANopen报文 CAN首部
Byte 0 Byte 1
Bit 7 ID 10 ID 2
Bit 6 ID 9 ID 1
Bit 5 ID 8 ID 0
Bit 4 ID 7 RTR
Bit 3 ID 6 DLC 3
Bit 2 ID 5 DLC 2
Bit 1 ID 4 DLC 1
Bit 0 ID 3 DLC 0
CAN数据
Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 Byte 9
数据 数据 数据 数据 数据 数据 数据 数据
数据 数据 数据 数据 数据 数据 数据 数据
数据 数据 数据 数据 数据 数据 数据 数据
数据 数据 数据 数据 数据 数据 数据 数据
数据 数据 数据 数据 数据 数据 数据 数据
数据 数据 数据 数据 数据 数据 数据 数据
数据 数据 数据 数据 数据 数据 数据 数据
数据 数据 数据 数据 数据 数据 数据 数据
ID 10 ... ID 0 : CAN标识符 DLC 3 ... DLC 0 : 数据长度 RTR : 远程传送请求位 Data : 用户数据
重点: 过程数据对象是从I/O模块的角度来设计定义的。
31.3.2006, 43930071 系统手册, page 1.17
CANopen介绍 参数通信(SDO)
5. 参数通信(SDO)
对象列表中的参数通过使用服务数据对象来被读和写。从CAL的层面来看,这些SDO是带有一个复用器(地址)的任意尺寸的数据结构。就CANopen中来说,这个复用器由在对象列表中对相应入口进行寻址的一个16位主索引和一个8位子索引组成。
参数通信(SDO)
对象字典&功能列表 主索引 对象 名称 写灯代码 类型 Unsigned16 Unsigned8 Unsigned8 Unsigned8 Unsigned8 Unsigned16 Unsigned16 Unsigned32 6200 VAR 6201 ARRAY 写灯参数 6202 ARRAY 后部照明 6203 VAR 6204 VAR 显示对比 输出音量 6210 RECORD 文本监控 6211 RECORD 文本指针 6212 VAR 显示存储数据
COOL 图 1.9 参数通信(SDO)
I/O模块在CAL术语学中通常是服务器,它根据客户端(例如PLC或IPC)的请求提供数据(上传)或从客户端接收数据(下载)。一次握手在客户端和服务器端之间发生。如果将要被传递的参数包含的数据不到4个字节,那么一次单独的握手就足够了(报文对)。
在一次下载中,客户端将数据与主索引和子索引一起发送,服务端接收并确认。在一次上传中,客户端通过传送被请求参数的主索引和子索引来请求数据。随后,服务器端在其回应报文中将被请求参数与主索引和子索引一同发出。上传和下载过程都是使用的相同的标识符对。 数据报文的长度总是8个字节,不同服务(上传/下载 请求/回应)类型被编码在第一个数据字节中。
系统手册, page 1.18 31.3.2006, 43930071
CANopen介绍 参数通信(SDO)
5.1 协议
以下图解展示了CANopen中的SDO报文。 客户端 → 服务器,上传请求:1)
CAN首部 Byte 0 Byte 1 CAN数据 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 Byte 9
0 In 0.7 In 1.7 SI 7 0 0 0 0
1 In 0.6 In 1.6 SI 6 0 0 0 0
0 In 0.5 In 1.5 SI 5 0 0 0 0
0 In 0.4 In 1.4 SI 4 0 0 0 0
0 In 0.3 In 1.3 SI 3 0 0 0 0
0 In 0.2 In 1.2 SI 2 0 0 0 0
0 In 0.1 In 1.1 SI 1 0 0 0 0
0 40 In 0.0 In 1.0 SI 0
In 0 In 1 SI
Bit 7 1 NI 2
Bit 6 1 NI 1
Bit 5 0 NI 0
Bit 4 0 0
Bit 3 NI 6 1
Bit 2 NI 5 0
Bit 1 NI 4 0
Bit 0 NI 3
Hex Cx
0 x8
0 00 0 00 0 00 0 00
NI 6 .. NI 0: 节点地址(Node ID) In 0: 主索引低位字节(LSB) In 1: 主索引高位字节(MSB) SI: 子索引 6 – 9字节被保留(0)。 1: CAL: 发起域上传请求
31.3.2006, 43930071 系统手册, page 1.19
CANopen介绍 参数通信(SDO)
服务器 → 客户端,上传回应 1)
CAN首部 Byte 0 Byte 1 CAN数据 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 Byte 9
0 In 0.7 In 1.7 SI 7 D 0.7 D 1.7 D 2.7 D 3.7
1 In 0.6 In 1.6 SI 6 D 0.6 D 1.6 D 2.6 D 3.6
0 In 0.5 In 1.5 SI 5 D 0.5 D 1.5 D 2.5 D 3.5
0 In 0.4 In 1.4 SI 4 D 0.4 D 1.4 D 2.4 D 3.4
n1 In 0.3 In 1.3 SI 3 D 0.3 D 1.3 D 2.3 D 3.3
n0 In 0.2 In 1.2 SI 2 D 0.2 D 1.2 D 2.2 D 3.2
1 In 0.1 In 1.1 SI 1 D 0.1 D 1.1 D 2.1 D 3.1
1 4x In 0.0 In 1.0 SI 0 D 0.0 D 1.0 D 2.0 D 3.0
In 0 In 1 SI D 0 D 1 D 2 D 3
Bit 7 1 NI 2
Bit 6 0 NI 1
Bit 5 1 NI 0
Bit 4 1 0
Bit 3 NI 6 1
Bit 2 NI 5 0
Bit 1 NI 4 0
Bit 0 NI 3
HexBx
0 x8
NI 6 .. NI 0: 节点地址(Node ID) n1... n0: 指定(D0..D3)中不包含任何数据的数据字节的个数 In 0: 主索引低位字节(LSB) In 1: 主索引高位字节(MSB) SI: 子索引 D 0: 数据低低位字节(LLSB) D 3: 数据高高位字节(MMSB)
8位无符号数据类型参数在D0字节中被传送,那些16位无符号数据类型参数则在D0和D1字节中被传送。
参数数据字节的个数 n1 n0
第一个CAN数据字节(十六进制)
1 1 1 4F
2 1 0 4B
3 0 1 47
4 0 0 43
1: CAL: 发起域上传回应
系统手册, page 1.20 31.3.2006, 43930071
CANopen介绍 参数通信(SDO)
客户端 → 服务器,下载请求 1)
CAN首部 Byte 0 Byte 1 CAN数据 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 Byte 9
0 In 0.7 In 1.7 SI 7 D 0.7 D 1.7 D 2.7 D 3.7
0 In 0.6 In 1.6 SI 6 D 0.6 D 1.6 D 2.6 D 3.6
1 In 0.5 In 1.5 SI 5 D 0.5 D 1.5 D 2.5 D 3.5
0 In 0.4 In 1.4 SI 4 D 0.4 D 1.4 D 2.4 D 3.4
0 In 0.3 In 1.3 SI 3 D 0.3 D 1.3 D 2.3 D 3.3
0 In 0.2 In 1.2 SI 2 D 0.2 D 1.2 D 2.2 D 3.2
1 In 0.1 In 1.1 SI 1 D 0.1 D 1.1 D 2.1 D 3.1
0 2x (22) In 0.0 In 1.0 SI 0 D 0.0 D 1.0 D 2.0 D 3.0
In 0 In 1 SI D 0 D 1 D 2 D 3
Bit 7 1 NI 2
Bit 6 1 NI 1
Bit 5 0 NI 0
Bit 4 0 0
Bit 3 NI 6 1
Bit 2 NI 5 0
Bit 1 NI 4 0
Bit 0 NI 3
Hex Cx
0 x8
NI 6 .. NI 0: 节点地址(Node ID)
In 0: 主索引低位字节(LSB) In 1: 主索引高位字节(MSB) SI: 子索引 D 0: 数据低位字节(LSB) D 3: 数据高位字节(MSB)
8位无符号数据类型参数在D0字节中被传送,那些16位无符号数据类型参数则在D0和D1字节中被传送。可以在byte 2的bit 2和bit 3位中对不包含任何数据的数据字节个数进行指定。然而,通常这样的指定并非是必要的,因为可以根据将被写的对象列表入口的长度来对低位数据字节进行估算。因而进行一个数据下载时的第一个CAN数据位可以总是是22h。
参数数据字节的个数
第一个CAN数据字节(十六进制)
1 2F
2 2B
3 27
4 23
X 22
1: CAL: 发起域下载请求
31.3.2006, 43930071 系统手册, page 1.21
CANopen介绍 参数通信(SDO)
服务器 → 客户端,下载回应1)
CAN首部 Byte 0 Byte 1 CAN数据 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 Byte 9
0 In 0.7 In 1.7 SI 7 0 0 0 0
1 In 0.6 In 1.6 SI 6 0 0 0 0
1 In 0.5 In 1.5 SI 5 0 0 0 0
0 In 0.4 In 1.4 SI 4 0 0 0 0
0 In 0.3 In 1.3 SI 3 0 0 0 0
0 In 0.2 In 1.2 SI 2 0 0 0 0
0 In 0.1 In 1.1 SI 1 0 0 0 0
0 60 In 0.0 In 1.0 SI 0
In 0 In 1 SI
Bit 7 1 NI 2
Bit 6 0 NI 1
Bit 5 1 NI 0
Bit 4 1 0
Bit 3 NI 6 1
Bit 2 NI 5 0
Bit 1 NI 4 0
Bit 0 NI 3
HexBx
0 x8
0 00 0 00 0 00 0 00
NI 6 .. NI 0: 节点地址(Node ID) In 0: 主索引低位字节(LSB) In 1: 主索引高位字节(MSB) SI: 子索引 1: CAL: 发起域下载回应
中止参数通信2)
CAN数据 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 Byte 9
Bit 7 1 In 0.7 In 1.7 SI 7 AC 0.7 AC 1.7 EC 7 CL 7
Bit 6 0 In 0.6 In 1.6 SI 6 AC 0.6 AC 1.6 EC 6 CL 6
Bit 5 0 In 0.5 In 1.5 SI 5 AC 0.5 AC 1.5 EC 5 CL 5
Bit 4 0 In 0.4 In 1.4 SI 4 AC 0.4 AC 1.4 EC 4 CL 4
Bit 3 0 In 0.3 In 1.3 SI 3 AC 0.3 AC 1.3 EC 3 CL 3
Bit 2 0 In 0.2 In 1.2 SI 2 AC 0.2 AC 1.2 EC 2 CL 2
Bit 1 0 In 0.1 In 1.1 SI 1 AC 0.1 AC 1.1 EC 1 CL 1
Bit 0 In 0.0 In 1.0 SI 0 AC 0.0 AC 1.0 EC 0 CL 0
HexIn 0 In 1 SI AC 0AC 1EC CL
0 80
In 0: In 1: SI: AC 0: AC 1: EC: CL:
主索引低位字节(LSB) 主索引高位字节(MSB) 子索引
附加码,低位字节 附加码,高位字节 错误代码 错误分类
2: CAL: 域传送中止协议
系统手册, page 1.22 31.3.2006, 43930071
CANopen介绍 参数通信(SDO)
5.2 SDO异常行为
如果存在一个不支持的对象入口或一个读/写规定被违反了,服务器将使用‘中止域传送协议’及相应的错误代码来中止SDO传送。然而,服务器仍然处在正常运行状态。
如果服务器取消了域传送,也会在状态消息中被显示。相应的标记将被设置直到下一次域传送成功地完成。
31.3.2006, 43930071 系统手册, page 1.23
CANopen介绍 过程数据通信(PDO)
6. 过程数据通信(PDO)
所有的实时数据都通过过程数据对象来传送。CANopen为数据内容定义了默认设置。用户可以依靠常提到的PDO映射来改变这些设置。
PDO的传送既可以是事件驱动的又可以是同步的。基于‘远程传送请求RTR’CAN特性的请求被支持。这意味着应用需求可以被灵活地处理。
PDO通信参数(主索引 1400h...1403h 和 1800h...1805h)描述了PDO的传送方式。
6.1 对象:通信参数
PDO标识符
在对象列表中的PDO标识符入口也可以对PDO进行激活或使其无效。
标识符编码如下:
Bits 11-Bit ID 29-Bit ID
MSB 31 0/1 0/1
30 0/1 0/1
29 0 1
UNSIGNED32 28 – 11
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29-Bit 标识符
LSB 10 – 0 11-Bit 标识符
Bit位数 31 MSB 30 29 28 - 11 10 - 0
值 0 1 0 1 0 1 0 X X
意义 PDO被激活 PDO未激活
RTR在此PDO中被允许 RTR在此PDO中不被允许 11位 ID (CAN 2.0A) 29位 ID (CAN 2.0B) 如果 bit 29 = 0
如果 bit 29 = 1,那么 bits 28-11 是29位 COB ID的一部分 Bits 10-0是COB ID
系统手册, page 1.24 31.3.2006, 43930071
CANopen介绍 过程数据通信(PDO)
6.2 传输类型
传输类型定义了相应过程数据对象(PDO)的发送方式 。原则上讲,它可以被区分为事件驱动和同步传送两种。
在一次事件驱动传送中,模块上发生的一个事件将触发PDO的传送。在同步模式下,PDO将在收到一个同步报文(SYNC)后被发送。
1. 事件驱动 源端 接收端 2. 由远程帧循环推动源端Remote Fra me 接收端 3. 同步模式 源端SYNC同步报文接收端 图 1.10 PDO过程数据交换
传输类型 (十进制) 0 1-240 241-252 253 254 255
循环 X 做保留
X X
X
非循环 X
X X
PDO传送 同步
异步
不传送
表 1.6 PDO传输类型
31.3.2006, 43930071 系统手册, page 1.25
CANopen介绍 网络管理(NMT)和模块的启动(boot-up)
6.3 对象映射
映射表(主索引1600h...1603h and 1A00h...1A05h)将实时特性的对象从对象列表中映射到过程数据对象中。 示例: 1. 发送PDO
主索引(十六进制) 1800
子索引 0 1 2 3 4
描述 入口的数目
PDO使用的COB-ID 传输类型 抑止时间 CMS优先组
默认值 04h 255
主索引(十六进制) 1A00
子索引 0 1 2 3 4 5 6 7 8
描述
被映射对象的数目 1st 被映射的对象 2nd被映射的对象 3rd 被映射的对象 4th 被映射的对象 5th被映射的对象 6th被映射的对象 7th被映射的对象 8th被映射的对象
默认值(十六进制)01 1001 00 10 6000 00 00 6000 00 00 6000 00 00 6000 00 00 6000 00 00 6000 00 00 6000 00 00
表 1.7 默认映射示例
在‘默认值’中的入口是根据以下模式被编码的:
MSB
主索引(16位)
子索引(8位)
LSB
对象长度(8位)
系统手册, page 1.26 31.3.2006, 43930071
CANopen介绍 紧急事件报文(EMCY)
7. 紧急事件报文(EMCY)
在出现紧急事件的情况下,模块状态将通过高优先级的紧急报文被传送。 紧急事件报文结构如下所示:
Byte 内容
0
1
错误编码 (对象 1003h) LSB
MSB
2 错误寄存器(对象 1001h)
3
4
5
6
7 空
制造商自定义错误区域(对象 1002h) LSB
MSB
触发:一旦一个被标示的错误发生。
一旦引起错误的原因被纠正,将再次传送一条相应位被重置的错误报文。
7.1 对象1001h:错误寄存器
通用错误寄存器(0 Æ 无错误, 1 Æ 相应的错误发生)。
Bit 7
ManSpec
Bit 6 reserved
Bit 5 Dev.Spec
Bit 4 Comm.
Bit 3 reserved
Bit 2 Voltage
Bit 1 Current
Bit 0 Generic
ManSpec.: 制造商定义错误,在对象1002h中有更详细定义。 Dev.Spec.: 在相应的设备描述中被定义的错误标记。 Voltage: Current: Comm.: Generic:
例如输入电压不在有效范围内。 例如输出过载。 通信错误(CAN超限)
发生了一个没有更加详细地定义的错误(标记被设置在每一条错误报文上)。
7.2 对象1002h:状态
指定了模块的当前状态(制造商私有)。
Unsigned32
MSB 状态Byte 4
状态 Byte 3
状态 Byte 2
LSB 状态 Byte 1
7.3 对象1003h:预定义错误区域
包含了根据DS 301定义的紧急事件错误代码。错误类型之间可以使用制造商定义的错误寄存器(1002h)进行详细的区别,因此在这里只支持强制的入口: 0000h : xxxxh :
无错误或错误已被矫正
错误号码,更多细节见错误寄存器1001h和制造商定义错误寄存器1002h。
31.3.2006, 43930071 系统手册, page 1.27
CANopen介绍 网络管理(NMT)和模块的启动(boot-up)
8.
网络管理(NMT)和模块的启动(boot-up)
CANopen中允许对分布式网络执行一个非常简单的boot-up过程。在初始化完成后,模块自动地进入‘预运行’状态。在这个状态下,模块已经可以使用具有默认标识符的服务数据对象(SDO)来访问对象列表。这就意味着模块可以被配置。
Power on or Hardware Reset
(1)
Initialisation
(2)
(14)
(11)
Pre-Operational
(7)
(13)
(3)
(12)
Operational
(4)
(5)
Stopped
(6)
(8)(9)(10)
图 1.11 设备行为(boot-up)状态图(NMT状态机) Initialisation初始化
在上电时,模块执行初始化(CAN接口,等等)。
Pre-Operational预运行
PDO此时未激活,但可以使用节点保护,默认标识符的SDO是可用的。如果一个故障在模块上发生,紧急事件报文将被发送。
Operational运行
在运行状态下,PDO是激活的,且设备可以随时通过SDO进行重新配置。 Stopped停止
在停止状态下,输出处于错误状态。只有NMT和节点保护可以使用。
Status Initialisation Pre-Operational Operational Stopped
PDO x
SDO x x
NMT, Guard. x x x
EMCY x x
表 1.8 在各设备状态下允许使用的通信对象
系统手册, page 1.28 31.3.2006, 43930071
CANopen介绍 紧急事件报文(EMCY)
在对象列表中的所有入口都有默认设置。这意味着在大多数情况下配置可以被省却。结果,启动模块仅需要使用一条单独的CAN报文: 'Start_Remote_Node'
在boot-up过程中使用的网络管理报文结构非常的简单:CAN标识符‘0’+两个字节的数据内容。
8.1 NMT主报文
第一个数据字节包含的部分被称为命令说明符( cs - command specifier ),第二个数据字节是节点地址。在NMT命令中,若节点地址部分为‘0’则代表对所有节点进行寻址(广播)。
NMT主报文: CAN标识符 = 0 Byte 意义 数据类型
数据 byte 0
数据 byte 1
命令说明符节点地址Node ID Command specifier(Unsigned8)
(Unsigned8)
8.2 状态转换描述
状态转换 (3), (6) (5), (8) (4), (7) (9), (10), (11) (12), (13), (14) (2)
名称
命令说明符(cs)
功能
启动模块,使能输出,开始传送PDO 停止通信,将输出设置为错误状态 停止PDO传送 SDO仍然是活动的
执行一个模块的复位(包括应用程序)执行一个通信功能的复位 自动转换到预运行状态
Start_Remote_Node 指示1dec = 01h Stop_Remote_Node指示2dec = 02h Enter_Pre-Operational_State指示 Reset_Node指示
128dec = 80h 129dec = 81h
Reset_Communication指130dec = 82h 示
Initialisation初始化完成进- 入Pre-Operational预运行
表 1.9 NMT状态机的状态转换
31.3.2006, 43930071 系统手册, page 1.29
CANopen介绍 节点保护和生命保护
9. 节点保护和生命保护
分布式的外围模块通过节点保护被监控。依靠生命保护,这些模块自身也可以检测到行使保护功能的主是否掉线。在保护过程中,主使用被监控的从节点的保护报文标识符来发送远程帧(远程传送请求,报文请求报文)。从节点们使用保护报文来回答。这些报文包含了从节点的状态编码以及一个每一条报文后都必须改变一次的跳变位(toggle bit)。如果报文中的状态或者跳变位与NMT主所期望接收的位不匹配或根本无保护报文回应,主将认为一个从节点故障出现了。
NMT Master
COP-ID=1792+Node-IDRemote transmit request
request
Node Guard timeconfirm07t
16...0s
indicationresponseNMT Slave
Node Life timeCOP-ID = 1792 + Node-IDRemote transmit request
requestconfirm07t
16...0s
indicationresponse
Node Guarding Event*
indication*: if guarding error
Life Guarding Event*
indication图 1.12 节点保护和生命保护 协议
在第一条保护报文中传送的跳变位(t)的值为0。在此之后,这个跳变位在每一条保护报文中都改变,因而可以显示是否有一条报文丢失。从节点在剩下的7个bit位中指定了自身的网络状态:
s 4 = 0x04 5 = 0x05 127 = 0x7F
状态
Stopped停止 (以往称为:准备完成) Operational运行 Pre-operational预运行
系统手册, page 1.30 31.3.2006, 43930071
CANopen介绍 节点保护和生命保护
示例
节点27(0x1B)的保护报文必须使用一个标识符为0x71B(十进制数为1819)的远程帧来请求。如果节点处于Operational运行状态下,那么其回应的报文中第一个数据字节将在
0x05和0x85之间改变。而如果节点处于Pre-operational预运行状态下,这个字节将在0x7F和0xFF之间改变。
保护时间和生命时间因素
如果主对保护报文严格循环地进行请求,从节点将可以检测到主是否故障。在这种情况下,如果从节点在设定的节点生命时间(Node Life Time)内没有收到一个报文请求(保护错误),它将认为一个主故障发生了(看门狗功能)。随后它将其输出设定为错误状态,发送出一条紧急事件报文并转换到预运行状态。在一个保护时间耗尽事件后,通过发送一条新的保护报文可以重新启动保护过程。
节点生命时间使用保护时间参数(对象 0x100C)和生命时间因素参数(对象 0x100D)来计算:
生命时间 = 保护时间 x 生命时间因素
如果这两个参数中的任一个是“0”(默认设置),主将不被监控(无生命保护)。
9.1 对象 100Ch:保护时间
保护时间以毫秒计,将保护时间乘“生命时间因素”( 对象 0x100D)将得到生命保护的生命时间(监控行使保护功能的主状态,‘节点保护协议’)。如果所得结果为0,主将不被监控(默认,无生命保护)。 对象描述
主索引 变量名 对象代码 数据类型索引 长度
100Ch 保护时间 7 (Var) 6 (Unsigned16) 2
取值描述
子索引 描述 取值范围 先期范围
0
默认值:00'00h [读/写],保护时间 Unsigned16 无
31.3.2006, 43930071 系统手册, page 1.31
CANopen介绍 心跳协议
9.2 对象 100Dh:生命时间因素
生命时间因素乘以“保护时间”(对象0x100C)得到“节点保护协议”的生命时间。生命时间 = 0或保护时间 = 0 表示模块不对行使保护功能的主的故障与否进行监控。如果主是被监控的,那么在生命时间耗尽后,模块将把自身的输出转换到错误状态。 对象描述
主索引 变量名 对象代码 数据类型索引 长度
100Dh 生命时间因素 7 (Var) 7(Unsigned32) 4
系统手册, page 1.32 31.3.2006, 43930071
CANopen介绍 心跳协议
10. 心跳协议
心跳协议定义了一个不需要远程帧的错误控制服务。一个心跳生产者周期性地发送一个心跳。一个或多个心跳消费者接收到这个(心跳)指示。使用对象列表可以对生产者和消费者之间的比率(如时间等参数)进行配置。心跳消费者在心跳消费时间内对心跳的接收进行监控。 如果在心跳消费时间内没有接收到心跳,一个心跳事件就发生了。
HeartbeatProducer
COP-ID=1792+Node-ID
07r
16...0s
HeartbeatConsumer
Heartbeat Producer Timerequest
indicationindicationindication
HeartbeatConsumer Time0
request
7r
16...0s
indicationindication
Heartbeat Event
图 1.13 心跳 协议
在心跳的过程中,跳变位(toggle bit)没有被使用。节点周期性地发送自身的状态。可参考节点保护和生命保护。
S 4 = 0x04 5 = 0x05 127 = 0x7F
状态
Stopped停止 (以往称为:准备完成) Operational运行 Pre-operational预运行
示例
节点27(0x1B)在“生产者心跳时间”的间隔发送一个标识符为0x71B的心跳报文。该报文的内容反应了节点的NMT状态。于是在同一个网络中的所有节点 都认可这个节点是活动的并了解到它的状态。
31.3.2006, 43930071 系统手册, page 1.33
HeartbeatConsumerTimeindication
CANopen介绍 心跳协议
消费者和生产者心跳时间
以‘生产者心跳时间’为基础,生产者的心跳指示是周期循环的。如果监控节点没有在设定的‘消费者心跳时间’内收到一个心跳指示,它将认为生产者出现了故障。应用程序将据此作出反应,例如,将输出设定为一个错误状态或者‘冻结’输出。
如果这两个参数中任一个为“0”则表示没有进行监控。
10.1 对象 1016h:消费者心跳时间
“消费者心跳时间”定义了期望收到心跳的循环时间,这个时间必须比相应地在生产者中配置的该心跳的“生产者心跳时间”要长。当第一个心跳被收到后,监控就开始了。但若时间 = 0,则相应的入口未被使用。时间信息是1 ms的一个因数。
该入口根据以下模式被编码:
MSB 被保留
节点地址(8位)
心跳时间(16位)
LSB
对象描述
主索引 名称 对象代码 数据类型
1016h
消费者心跳时间 8 (ARRAY) Unsigned32
取值描述
子索引 描述 对象分类 访问 PDO映射 取值范围 强制范围 默认值
0h 入口数目 强制的 只读 否 1-127 无 00'05h
子索引 描述 对象分类 访问 PDO映射 取值范围 强制范围 默认值
1…7Fh 消费者心跳时间 强制的 读/写 否
Unsigned32 无 00'00h
系统手册, page 1.34 31.3.2006, 43930071
CANopen介绍 心跳协议
10.2 对象 1017h:生产者心跳时间
“生产者心跳时间”定义了心跳的周期时间。如果没有心跳被使用则时间信息为0。时间信息是1 ms的一个因数。
对象描述
主索引 名称 对象代码 数据类型
1017h
生产者心跳时间 7 (VAR) Unsigned16
取值描述
子索引 访问 PDO映射 取值范围 强制范围 默认值
0h 读/写 否
Unsigned16 无 00'00h
31.3.2006, 43930071 系统手册, page 1.35
因篇幅问题不能全部显示,请点此查看更多更全内容