视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
CANOpen协议介绍
2025-09-27 21:56:27 责编:小OO
文档
CANopen内部设备结构

内部设备结构

CANopen设备的结构从逻辑上可分为三部分。一部分提供CAN接口,而另一部分提供设备的应用程序,如果为I/O模块,该应用程序控制设备的输入/输出(I/O)线路。应用程序与CAN接口之间的接口在对象字典中实现。对象字典对任何CANopen设备都是唯一的。它相当于参数列表,可提供对受支持配置和过程数据的访问。若要访问对象字典,每个CANopen设备都必须执行CANopen协议堆栈。此CANopen协议堆栈是一种软件,通常在设备应用程序软件所使用的同一微控制器上实现。

CANopen对象字典

对象字典布局

对象字典是所有CANopen设备的核心。实际上是一个对象(⡰卥)组,可通过网络以事先安排的预定义方式访问。可使用6位索引和8位子索引对对象字典内的每个对象进行寻址。对象字典的结构可分为几个索引范围。索引范围1000h至1FFFh中的对象用于描述设备的通讯行为。索引范围2000h至5FFFh和6000h至9FFFh中的对象以制造商特定方式或CANopen设备子协议或应用子协议的标准化方式描述应用程序行为。由于标准化的CANopen设备和应用子协议的索引范围被分成八个部分,因此可以在一个CANope¾设备内提供最多八个设备/应用子协议执行过程。根据相关的CiA接口规范,网络变量和系统变量被安排在索引范围A000h至BFFFFh之间。

设备设计人员的可能选择

在对象字典中,设备设计人员通过执行相关的对象指出支持的设备功能。通讯行为可在索引范围1xxxh中的合适对象中调整。制造商特定设备功能所需要或生成的参数和结果可在索引范围2000h至5FFFh中指出。此外,制造商特定状态信息和过程数据可在该索引范围中显示到网络。

如果设备设计人员希望在CANopen设备子协议的层面上通过标准化的CANopen接口为客户提供舒适的设备控制,可在相关CANopen子协议中的预定义索引范围6000h至9FFFh内提供相应的参数和状态信息。

CANopen溚俶嬍攍

丗蠾劆乎CANopen位定时、所产生的最大网络长度以及最大的无端接分支电缆长度。所有CANopen设备都必须至少支持其中一个定义的比特率。CANopen设备也可以支持多个比特率。样本点的位置必须尽可能接近于位时间的87.5%处。

CANopen位定时表

比特率总线长度最大短柱长度累计短柱长度 
1 Mbit/s25 m1,5 m7,5 m 
800 kbit/s50 m2,5 m12,5 m 
500 kbit/s100 m5,5 m27,5 m 
250 kbit/s250 m11 m55 m 
125 kbit/s500 m22 m110 m 
50 kbit/s1000 m55 m275 m 
20 kbit/s2500 m137,5 m687,5 m 
10 kbit/s5000 m275 m1375 m
差错控制协议

心跳协议或监控协议服务用于检查网络成员是否存在,并确认它们是否仍正常工作。CANopen规范要求每个CANopen设备支持心跳协议或监控协议。由于心跳协议更为灵活,无需远程帧(RTR)即可工作,因此强烈推荐所有的新执行过程都使用该协议。 

心跳协议是从一台设备以广播形式发送的周期性消息。该消息发送设备的当前NMT状态。发送心跳消息的周期时间可在对象1017h中调整。 

 

心跳协议

差错控制消息

差错控制协议使用通过CAN仆栦譻700h+节点ID赋值且包含一个数据字节的CAN消息。在该数据中,设备指出其当前的网络状态。

启动协议

每次从NMT初始化状态转到NMT试运行状态时,发送启动消息。启动协议用于发送信号通知:设备已在网络上注册,可即时运行。该协议使用与差错控制协议相同的标识符。1字节数据字段采用固定值(零)。

网络管理(NMT)

CANopen NMT从站状态机

所有CANopen设备都必须支持CANopen网络管理(NMT)从站状态机。NMT状态机定义CANopen设备的通讯行为。CANopen NMT状态机包括初始化状态、试运行状态、运行状态和停止状态。在上电或复位后,设备进入初始化状态。 

在设备初始化完成后,设备自动转到试运行状态,并通过发送启动消息指出此状态跳转。通过这种方法,设备指出已做好工作准备。如果保持试运行状态的设备的服务受支持且配置正确,则这些设备便可开始发送SYNC消息、时间戳消息或心跳消息。相对于在此状态下必须禁用的PDO通讯,设备可通过SDO进行通讯。PDO通讯只有在运行状态下才能实现。在试运行状态期间,设备可以使用所有受支持的通讯对象。已切换到停止状态的设备只对接收到的NMT命令做出反应。此外,设备通过在停止状态期间支持差错控制协议,指出当前的NMT状态。 

 

初始化状态

初始化状态包含三种子状态:初始化、复位应用程序和复位通讯。在初始化期间,设备启动和初始化其内部参数。复位应用程序和复位通讯这两种子状态的目的是启用部分复位命令。在复位应用程序期间,对象字典范围2000h至9FFFh中的所有参数被设置为上电值或缺省值。在设置为上电值后,自发进入NMT子状态 - 复位通讯。在复位通讯子状态期间,通讯子协议的参数(索引范围1xxxh)被设置为其上电/缺省值。在此状态结束后,离开初始化状态。

NMT协议

NMT协议

NMT消息通过在CANopen网络中作为激活NMT主站的设备发送。接收到NMT消息后,CANopen设备被强制转到指定的NMT状态。NMT消息映射为数据长度为2个字节的单个CAN帧。第一个字节包含命令说明符,第二个字节包含必须执行命令的设备节点ID (如果此数值等于0,则所有节点必须执行指定的状态跳转)。NMT消息的CAN标识符为0,该消息在基于CAN的系统中具有优先级别。

服务数据对象(SDO)

SDO通讯

通过服务数据对象(SDO)可访问CANopen对象字典的所有条目。一个SDO由两个带有不同CAN标识符的CAN数据帧组成。这是确认的通讯服务。使用SDO,可以在广播介质CAN上建立起两个CANopen设备之间的点对点客户机服务器通讯。被访问对象字典的拥有者充当SDO服务器。访问其它设备对象字典的设备是SDO客户机。

 

SDO协议的变量

正常的SDO传送

CANopen设备可支持SDO协议的不同变量:

∙加急传送、 

∙正常(分段)传送或 

∙块传送。 

在此启动期间,客户机设备指出将要从服务器的对象字典访问哪些信息以及使用何种类型的SDO以及读取或写入哪些信息。服务器设备将确认查询,然后客户机设备将开始发送第一个数据段。正常传输允许以分段方式传送任何数量的数据。每个段可携带最多七个字节的应用程序数据,因为有一个字节的CAN亁帨覎畏亮叡譯伂怨っ圸殄并SDO传送(参见图)中,可交换不限数量的段以及应用程序数据。

为加速少量数据(小于或等于4字节)的SDO传送,可使用加急的SDO传送。在此类SDO连接中,数据在启动SDO连接期间直接传送。通过支持SDO块传送,可实现加速大量数据的传送。在块传送期间,接收器不会确认单数据段(如正常传送中的那样),而只确认数据块(最多为127个段)。

设备制造商应该根据设备将要传送的数据量选择其设备的SDO变量。

 

SDO通道

CANopen设备可支持SDO客户机或服务器通道。如果设备支持SDO客户机通道,则设备能够访问其它网络成员的对象字典。通过支持服务器通道,设备制造商可以让其它网络成员访问其设备中的对象字典条目。设备制造商必须评估其设备是否需要访问其它设备‹⢂俄夁繶悃兑寜缐繘抄咧瘶捨剖)或其它设备是否必须访问其设备(例如出于组态目的)。作出此评估后,设备制造商可以估算其设备将需要多少SDO客户机和服务器通道。第一个SDO服务器通道根据规范进行严格预定义,并且必须受所有CANopen设备支持。

SDO参数集

SDO参数集

SDO参数集被安排在对象字典索引范围12xxh中。SDO服务器通道在范围1200h至127Fh中描述。客户机通道的参数集必须在范围1280Fh至12FFh中提供。 

SDO参数集包含两个通讯对象标识符(COB-ID)和相关通讯伙伴的节点ID。COB-ID条目包含用于按照“服务器至客户机”方向或相反方向发送信息的CAN帧的CAN标识符。 

特殊功能对象

CANopen提供三种用于生成特殊网络行为的特定协议:

∙SYNC对象可实现同步网络行为。 

∙“时间戳”对象用于调整唯一的网络时间。 

∙“紧急”对象可用于通知其它网络成员存在设备内部错误。 

同步(SYNC)对象

同步对象由SYNC发送方定期发送。两个连续SYNC消息之间的时间段就是通讯周期。根据预定义的连接集,SYNC消息被映射到带标识符80h的CAN单帧上。缺省状态下,SYNC消息不携带任何数据(DLC = 0)。支持V4.1或更高版本的CiA 301的设备可随意地提供SYNC消息,而SYNC消息能提供1字节的SYNC计数器值。因此,可以更加便捷地协调多个设备的同步行为。

紧急对象

“紧急”消息由设备内部错误触发。“紧急”消息由“紧急”发送方发送,并被映射到一个最多可包含八字节数据的CAN单帧。数据内容被定义为1字节的错误寄存器(本地对象字典的对象1001h)、16位的紧急错误代码和多达5字节的厂商特定错误信息。缺省状态下,支持“紧急”鐁厹邟旽劄肾瘇謺奎“紧急”消息分配CAN标识符80h + (节点ID)。对每个错误事件,仅发送一次“紧急”消息。只要设备上没有新错误产生,便不会再发送紧急消息。可能有零个或多个“紧急”接收方接收到这些消息,并启动合适的针对应用的应对措施。

时间戳对象

CANopen系统的用户可以使用“时间戳”对象来调整唯一的网络时间。时间戳被映射到6字节数据长度代码的CAN单帧。这六个数据字节提供“时间”信息。该信息在午夜后显示为毫秒(数据类型:Unsigned28),且从1984年1月1日起显示为天数(数据类型:Unsigned16)。缺省状态下,相关的CAN帧拥有CAN标识符100h。

过程数据对象(PDO)

过程数据对象(PDO)在CANopen中用于广播高优先级的控制和状态信息。PDO由单个CAN帧组成,能够传送最多8个字节的纯应用程序数据。设备设计人员必须估算设备须接收和发送的过程数据的数量。根据此估算结果,他们必须提供设备内的接收和发送PDO的相关数量。

PDO参数设置

若要支持PDO的传送/接收,则必须在该设备的对象字典中提供此PDO的相应参数设置。单个PDO需要一组通讯参数(PDO通讯参数记录)和一组映射参数(PDO映射记录)。 

在其它情况下,通讯参数指出此PDO使用的CAN标识符以及触发相关PDO传送的触发事件。映射参数指出希望发送的本地对象字典信息,以及保存所接收的信息的位置。 

接收PDO的通讯参数被安排在索引范围1400h至15FFh内,发送PDO的通讯参数被安排在索引范围1800h至19FFh内。相关的映射条目在索引范围1600h至17FFh和1A00h至1BFFh内进行管理。

PDO触发事件

世亚拶孨敱嚨騚劾'讅姨冋郶仦仑襓PDO传送(例如温度值超出特定限值;事件定时器的时间已过;等等)。

远程请求:因为PDO由单个CAN数据帧组成,所以可以通过远程传送请求(RTR)来请求这些PDO。

同步传送(周期性):PDO的传送可与SYNC消息的接收结合进行。

同步传送(非周期性):这些PDO由所定义的设备特定事件触发,但在接收到下一个同步消息时才被发送。

 

PDO映射

PDO伄暚屉嬨乗PDO内传送哪些应用程序对象。它描述了被映射的应用程序对象的顺序和长度。应用程序对象的映射在每个PDO的相关CANopen对象字典条目中描述。CANopen可以区分三种类型的PDO映射: 

静态PDO映射: 

如果支持PDO静态映射,则PDO的内容会被设备制造商严格预定义,且不能通过CANopen接口进行更改。 

可变PDO映射: 

可变PDO映射表示PDO的映射条目可在NMT试运行状态期间更改。 

动态PDO映射: 

如果CANopen对象字典中的PDO映射条目在NMT运行状态期间也可以更改,则设备支持动态映射。 

PDO映射过程

与严格预定义的映射相比,设备设计人员可以更改PDO的映射。在CANopen中,这种可灵活调整的PDO映射功能称为可变或动态PDO映射。如果支持可变或动态映射,则PDO的映射条目只能通过使用定义的映射过程来更改:

1.通过在相关COB-ID条目中切换位31将PDO设为无效。 

2.通过将00h写入相关映射条目的子索引00h,将PDO映射设为无效 

3.调整期望的PDO映射。 

4.将相关映射索引的子索引00h设为被映射对象的数目。 

5.通过相关COB-ID条目中的位31,将PDO切换为有效状态。下载本文

显示全文
专题