CAN与CANOpen(六)

CAN与CANOpen(一)基本概念 
CAN与CANOpen(二)报文格式 
CAN与CANOpen(三)错误处理
CAN与CANOpen(四)CANOpen对象字典 
CAN与CANOpen(五)PDO和SDO
CAN与CANOpen(六)网络管理和CAN FD

4.网络管理

CANOpen的网络管理使用了master/slave结构。Master通过模块控制服务,可以控制slave的状态:{STOPPED, PRE-OPERATIONAL, OPERATIONAL, INITIALISING}.模块控制服务可以只针对一个节点,也可以是所有节点同时改变。图40列出了模块控制服务的命令字,8列出了命令字标识符与NMT的对应关系。图41CANOpen设备上电之后的状态转换图及触发条件表9。设备上电初始化之后,设备进入PRE-OPERATIONAL状态,此时SDO服务开启。在这个状态设备可以配置参数已经分配ID。然后节点可以转换到OPERATIONAL状态,在OPERATIONAL状态PDO服务开启。节点状态与通讯对象之间的关系,可以参考10。所以一般我们在设备处于PRE-OPERATIONAL状态时对设备进行配置。


40 NMT命令字


8NMT命令标识符


41CANOpen器件的状态转换


9触发条件


10状态与通讯对象的关系

5.CAN FD

5.1CAN FD的主要特点

虽然CAN总线有各种有点,但是它也有传输速率低,数据传输效率低的缺点。随着CAN应用的增多,这个缺点也越来越突出。于是博世公司在2011年开发了CAN FD协议。

CAN FDCAN协议主要有两点改进:一、速率可变。CAN报文在数据传输阶段可以使用更快的速率。二、一个CAN报文可传输的报文上限由8byte变为64byte。这两个改变是数据的传输速率提升了6[1]


42速率可变


43数据场扩展到64byte

5.2CAN FD的实现

为了实现CAN FDCAN FD报文的格式在CAN的基础上做了一些修改。

在仲裁场,原来的RTRremote transmission request)位变为RRSremote request substitution)位,并始终为显性。也就是说,CAN FD不支持远程帧。如果要使用远程帧可以使用CAN报文(CAN FD兼容经典的CAN报文)。


44仲裁场的变化

对于控制场和数据场变化更大,这里体现了CAN FDCAN的主要差别。

IDEidentifier extension)指示标识符的位数。如果为显性,则采用11位的标识符。如果为显性则采用29位的标识符。

FDFflexible data rate format)标识是否为CAN FD 的帧格式。如果为显性,则报文为经典的CAN报文格式,数据场最多8byte。如果为隐性,则数据场最多64byte

BRSbit-rate switch)指示是否采用可变速率。如果为显性,则数据场的传输速率与仲裁场相同,如果为隐性,数据场采用变速率传输。CAN FD推荐采用1:8的速率比,即数据场的传输速率是仲裁场的8倍。而且如果是可变速率,速率就是在BRS为的采样点开始变的。

ESIerror state indicator)指示节点错误状态。如果为显性,节点为错误主动节点。如果为隐性,节点为错误被动结点。


45控制场与数据场的变化

为了支持最多64byte的数据场,DLC也发生了变化,见图46


46 CAN FDDLC的表示

CAN FD还在安全性上有了提高。为了避免位填充对CRC的影响,CAN FDCRC场中增加了stuff count记录填充位的个数对应8的模,并用Grey Code表示(图48)。还增加了奇偶校验位。FSBfixed stuff-bit)固定为前一位的补码


47 CRC场的变化


48 CAN FD 中的 stuff count

5.3 CAN FD的局限

CAN FD大大提高了CAN总线的通讯速率,对于全新设计的总线很有优势。但是对于已有CAN总线的改造就不会那么容易了。我觉得在兼容性方面CAN FD有两点局限:一、对于以前的CAN设备不能做到不修改硬件软件或者只修改软件而兼容新的CAN FD设备。如果想把经典的CAN设备挂载到CAN FD网络中,至少要在收发器和CAN控制器之间加处理芯片,以屏蔽CAN FD的报文。这样对于系统集成商来说成本很大,要想把一条CAN总线升级为CAN FD总线以为这原来总线上的所有设备都不能直接拿过来用。这其中的研发和测试成本不会低。二、CAN器件不能接受CAN FD报文。这样CAN FD设备要和CAN设备通讯就只能用经典的CAN协议。这样通讯效率就会打折扣。这个方面有点像Python2与Python3的改变,从现在的趋势来看,虽然依然有很多的应用时Python2的但是Python3是必然的趋势。所以只要CAN FD只要有足够好的应用,虽然有那么多的CAN设备,但仍然会代替CAN成为主流。

猜你喜欢

转载自blog.csdn.net/liukais/article/details/80249822