一、CANOpen总线结构广播命令二、通信类型CANOpen有三种通信方式:主/从通信方式服务器/客户端通信方式生产商/顾客通信方式2.1主/从通信方式(NMT)对某一特点功能而言,一个网络中只有一个主机,其他全为从机。由主机发送请求信号,从机发送相应信号(如果需要)主机发出命令,从机作出响应,但不回送数据主机发出命令,从机作出响应,同时回送数据确认2.2服务器/客户端通信方式(SDO)这种关系指发生在一个服务器和一个客户端之间,客户端发送命令,服务器执行后,回答客户端2.3生产商/顾客通信方式(SYNC、TimeStamp、EMCY)这种通信方式有Push和pull两种模式,网络中在这一个生产厂,0或多个顾客。2.3.1push模式厂商发送命令,顾客执行,不需回送数据2.3.2pull模式厂商发送命令,顾客执行,回送证实数据三PDO传送模式PDO分为TPDO(发送PDO)与RPDO(接收PDO)两种,PDO的传送模式有两种:同步传送与异步传送。同步传送又分为周期传送与非周期传送3.1同步传送由某一个同步应用在网路上周期性的发送同步对象,及发送SYNC帧,该同步应用可以是主机也可以是从机PDO通信参数中的传输类型说明传送模式与触发方式,TPDO:传送类型同时说明其传送率,以基本传送周期的倍数表示。传送类型为0时,表示当某事件发生后,收到一个同步对象帧(SYNC)时,立刻进行数据传输。(非周期传送)传送类型为1时,表示当每收到一次同步对象帧(SYNC)时,传送一次数据。(周期传送)传送类型为n时,表示当每收到n次同步对象帧(SYNC)时,传送一次数据。(周期传送)RPDO:接收是在收到SYNC信号后,运行接收,独立于传输参数定义的传送率。传输类型252为非周期传输,在接收到同步对象后进行采样但不发送,在接收到请求该数据的远程帧后发送。3.2异步传送TPDO:异步传送与SYNC无关,传输类型253-255为异步传输,定义为此三种类型的TPDO在接收到远程帧或规定的事件发生后进行传输。3.3触发模式:触发方式有三种3.3.1事件触发方式对于周期性传送,接收到的SYNC报文达到设定数量,相当于出发事件,引起一次发送。对于非周期性传送由设备子协议设定的事件触发发送3.3.2定时器触发当设定的时间达到后,触发一次发送3.3.3远程帧触发在收到其他设备发送的远程帧后,启动一次异步传送3.4PDO协议PDO的通信模式相当于厂商/顾客的通信模式,包含如下参数:PDO数量:1~512,用户类型:厂商/顾客数据类型:由PDO映射确定禁止时间:n*100ns索引20h描述PDO的通信参数,索引21描述PDO的映射参数3.4.1写PDO使用厂商/顾客模式的PUSH形式,厂商主动发送PDO3.4.2读PDO使用厂商/顾客模式的PULL形式,某一顾客发送远程帧,传送发送PDO,这是可选模式,所有的PDO都可以接收,。这种模式若PDO发送的数据量L大于PDO映射定义的数据量n,取前那个数据,若PDO发送的数据量L小于PDO映射定义的数据量n,若顾客支持Emergency报文,发送Emergency报文,错误代码为8210四SDO传送模式SDO以段的形式发送,首先发送的是初始化阶段的段,以加速传送方式传送,包含4个以内字节的数据,索引为22h的对象字典描述SDO通信参数。相应的对象字典的条目通过下式计算:SSDO(RSDO)通信参数索引=1200h+SSDO_No-1CSDO(TSDO)通信参数索引=1280h+CSDO_No-14.1SDO协议SDO参数:SDO数量:1~128,用户类型:客户端/服务器Index和subindex的数据类型有多种形式:structureunsigned(16),unsigned(8)Index说明对象字典的条目,subindex说明条目中的具体内容传送类型:数据在4个字节以下:加速传送数据在4个字节以上:分段传送或块传送数据类型:由index和subindex确定禁止时间:n*100ns5对象字典5.1对象字典的通用格式Index:指示该对象在对象字典中的位置,不包含子索引Object:按照下表确定的对象名称表37Name:是该对象功能的简单文本描述Type:提供关于对象类型的信息,可能的类型包括:BOOLEAN,floatingpointnumber,UNSIGNEDInteger,SignedInteger,visible/octetstring,timeof-day,time-differenceandDOMAIN,还包括预定义的复杂数据类型PDOMapping和厂商或设备预定义的特殊的复杂数据类型Attribute:定义从总线看向设备时的访问权限,如下所示M/O:表明该对象是强制(Mandatory)的还是可选(Optional)的5.2对象字典的内容下表给出对象字典的整体布局表39索引01h~1Fh包含标准数据类型索引20h~23h包含预定义的复杂数据类型索引24h~3Fh预留索引40h~5Fh厂家自由定义自己的复杂数据类型索引60h~7Fh包含设备子协议说明的标准数据类型索引80h~9Fh包含设备子协议说明的复杂数据类型索引A0h~25Fh包含多功能设备模块中的数据类型索引1000h~1FFFh包含对象字典中相关通信解释内容。这些内容称为通信条目,对于所有设备是一样的索引2000h~5FFFh留给厂家定义子协议索引6000h~9FFFh包含标准设备子协议参数索引A000h~FFFFh预留设备不必支持所有的数据类型,只要支持1000h~9FFFh中用到的数据类型即可对象字典条目结构类型的组织若对象字典的某一条目包含子目录,则子索引0的内容为子索引的个数,不算子索引为FFh这一条。FFh这一条表示内容如下:这一条是可选项预定义的复杂数据类型索引20h~23h预定义复杂数据类型:thePDOCommParrecord(PDO_COMMUNICATION_PARAMETER),thePDOMappingAPPLICATIONLAYERCANopenCiA82record(PDO_MAPPING),theSDOParameterrecord(SDO_PARAMETER)andtheIdentityrecord(IDENTITY).其具体内容解析如下:6通信协议说明对象字典条目的结构按照如下方式进行描述:所有设备接口应用协议6.1对象规范细节对象代码必须是上表内容中的一个,为了便于阅读,对象表述还包含对象名对于简单变量值描述只出现一次,且不包含sub-index和EntryCategory,对于复杂数据类型必须包括上述所有内容。6.2对象字典中有关通信方面的条目概述表47给出由通信子协议定义的对象字典相关条目的概况若某设备支持PDO,则必须包含相应的PDOcommunicationparameterandPDOmapping条目(强制),若支持SDO必须包含相应的SDOparameters(强制)6.3通信子协议的特殊对象的详细描述Object1000h:设备类型本条包含有关设备类型的信息。描述设备类型及他的功能。有两个16位的数据组成,第一的16位描述所使用的设备子协议,第二个16位给出设备可选功能的附加信息。附加的信息参数是设备子协议特定的,有各自的设备子协议确定。值0000h表示这个设备不是标准的设备子协议。对于多设备模块,附加信息参数包括FFFFh且1000h所参考的设备子协议号是对象字典中第一个设备的设备子协议,其他设备子协议的设备子协议存储在67FFh+x*800h的对象内,x=内部设备号(0~7)。数据类型下表是CANOpen支持的数据类型,这些数据类型的编码表如下:第一列是在IEC61131-3中的定义,第二列是在CANOpen中的等价定义,第三列是数据对应的数据长度,第四列是该数据类型对应的实际编码下表的数据类型不能通过PDO发送下表中是不同数据类型之间如何进行转换预定义的连接集CAN的帧结构真正受控的报文为COB_ID(11位)RTR(远程桢标志)数据0数据1数据2数据3数据4数据5数据6数据7预定义的功能码及COB_ID列表广播对象功能码(2进制)COB_ID(2/16进制)含义00000000/000hNMT(BroadcastObjects)00010001/080hSYNC(BroadcastObjects)00100010/100h时间戳(BroadcastObjects)对等对象00010001+NODE_ID/001h+NODE_IDEMCY(Peer-to-PeerObjects)00110011+NODE_ID/180h+NODE_IDPDO1(发送/Peer-to-PeerObjects)01000100+NODE_ID/200h+NODE_IDPDO1(接收/Peer-to-PeerObjects)01010101+NODE_ID/280h+NODE_IDPDO2(发送/Peer-to-PeerObjects)01100110+NODE_ID/300h+NODE_IDPDO2(接收/Peer-to-PeerObjects)01110111+NODE_ID/380h+NODE_IDPDO3(发送/Peer-to-PeerObjects)10001000+NODE_ID/400h+NODE_IDPDO3(接收/Peer-to-PeerObjects)10011001+NODE_ID/480h+NODE_IDPDO4(发送/Peer-to-PeerObjects)10101010+NODE_ID/500h+NODE_IDPDO4(接收/Peer-to-PeerObjects)10111011+NODE_ID/580h+NODE_IDSDO(发送/Peer-to-PeerObjects)11001100+NODE_ID/600h+NODE_IDSDO(接收/Peer-to-PeerObjects)11101110+NODE_ID/700h+NODE_IDNMT错误控制(Peer-to-PeerObjects)COB_ID即11位仲裁区数据区列表功能码(2进制)含义字节0字节1字节2字节3字节4字节5字节6字节70000NMT命令字NODE_ID0001SYNC/EMCY0010时间戳0011PDO1(发送)数据0数据1数据2数据3数据4数据5数据6数据70100PDO1(接收)数据0数据1数据2数据3数据4数据5数据6数据70101PDO2(发送)数据0数据1数据2数据3数据4数据5数据6数据70110PDO2(接收)数据0数据1数据2数据3数据4数据5数据6数据70111PDO3(发送)数据0数据1数据2数据3数据4数据5数据6数据71000PDO3(接收)数据0数据1数据2数据3数据4数据5数据6数据71001PDO4(发送)数据0数据1数据2数据3数据4数据5数据6数据71010PDO4(接收)数据0数据1数据2数据3数据4数据5数据6数据71011SDO(发送)命令字索引0索引1子索引数据0数据1数据2数据31100SDO(接收)命令字索引0索引1子索引数据0数据1数据2数据31110NMT错误控制从节点状态1.CAN初始化:1.1初始化本节点ID心跳报文(包括发送时间间隔,报文ID,长度以及数据初始化为0)SDO响应/中止报文(包括报文ID,长度以及数据初始化为0)1.2初始化RPDO①检查RPDO数目的范围和节点ID的范围(1-127)以及PROD指向过程映射数组的偏移量(offset)是否超过映射数组的最大范围;②初始化通讯子索引(通讯参数的个数)的数目,传输类型,事件定时周期,数据长度,偏移量(offset)和ID。1.3初始化TPDO①检查TPDO数目和节点ID的范围(1-127)、数据长度(1-8)和事件定时周期、禁止时间的设置(两个变量至少定义一个)以及offset(指向过程数组的偏移量)是否超过映射对象的范围;②初始化通讯子索引,传输类型,数据长度,