2.报文帧结构形式
在报文传输时,不同的帧具有不同的传输结构,下面将分别介绍四种传输帧的结构,只有严格按照该结构进行帧的传输,才能被节点正确接收和发送。
(1)数据帧数据帧格式如图7-9所示。数据帧由七种不同的位域(Bit Field)组成:帧起始(Start of )、仲裁域(Arbitration Field)、控制域(Control Field)、数据域(DataField)、CRC域(CRC Field)、应答域(ACK Field)和帧结尾(End of )。数据域的长度可以为0~8个字节。
1)帧起始(SOF):帧起始(SOF)标志着数据帧和远程帧的起始,仅由一个“显性”位组成。在CAN的同步规则中,当总线空闲时(处于隐性状态),才允许站点开始发送(信号)。所有的站点必须同步于首先开始发送报文的站点的帧起始前沿(该方式称为“硬同步”)。
2)仲裁域:仲裁域如图7-10所示,仲裁域由标识符和RTR位组成,标准帧格式与扩展帧格式的仲裁域格式不同。标准格式里,仲裁域由
3)控制域:控制域由6位组成,包括2个保留位(r0、r1同于CAN协议扩展)及4位数据长度码,允许的数据长度值为0~8字节。
4)数据域:发送缓冲区中的数据按照长度代码指示长度发送。对于接收的数据,同样如此。它可为0~8字节,每个字节包含8位,首先发送的是MSB(最高位)。
5)CRC校验码域:它由CRC域(15位)及CRC边界符(一个隐性位)组成。CRC计算中,被除的多项式包括帧的起始域、仲裁域、控制域、数据域及15位为0的解除填充的位流给定。此多项式被下列多项式X15+X14+X10+X8+X7+X4+X3+1除(系数按模2计算),相除的余数即为发至总线的CRC序列。发送时,CRC序列的最高有效位被首先发送/接收。之所以选用这种帧校验方式,是由于这种CRC校验码对于少于127位的帧是最佳的。
6)应答域:应答域由发送方发出的两个(应答间隙及应答界定)隐性位组成,所有接收到正确的CRC序列的节点将在发送节点的应答间隙上将发送的这一隐性位改写为显性位。因此,发送节点将一直监视总线信号已确认网络中至少一个节点正确地接收到所发信息。应答界定符是应答域中第二个隐性位,由此可见,应答间隙两边有两个隐性位:CRC域和应答界定位,如图7
(2)错误帧错误帧由两个不同的域组成:第一个域是来自控制器的错误标志;第二个域为错误分界符。其结构如图7-12所示。
1)错误标志:有两种形式的错误标志。
①激活(Active)错误标志。它由6个连续显性位组成。
②认可(Passive)错误标志。它由6个连续隐性位组成。
它可由其他CAN控制器的显性位改写。
2)错误界定:错误界定符由8个隐性位组成。传送了错误标志以后,每一站就发送一个隐性位,并一直监视总线直到检测出1个隐性位为止,然后就开始发送其余7个隐性位。
(3)远程帧 远程帧也有标准格式和扩展格式,而且都由6个不同的位域组成:帧起始、仲裁域、控制域、CRC域、应答域、帧结尾。与数据帧相比,远程帧的RTR位为隐性,没有数据域,数据长度编码域可以是0~8个字节的任何值,这个值是远程帧请求发送的数据帧的数据域长度。当具有相同仲裁域的数据帧和远程帧同时发送时,由于数据帧的RTR位为显性,所以数据帧获得优先。发送远程帧的节点可以直接接收数据。远程帧结构如图7-13所示。
1)接收方在接收一帧之前需要过多的时间处理当前的数据(接收尚未准备好);
2)在帧空隙域检测到显性位信号;
3)如果CAN节点在错误界定符或过载界定符的第8位采样到一个显性位节点会发送一个过载帧。
过载帧的具体结构如图7-14所示。
3.位定时要求
标称位速率是指理想发送器在没有重新同步的情况下每秒发送的位数量。标称位速率的倒数即为标称位时间。不同的CAN系统中,CAN的位速率不同。但在一个给定的CAN系统中,位速率是一定的,其最大值受所选用的CAN控制器类型、收发器和物理介质等因素的影响,可在一定范围内自由设定。CAN总线的数据传输速率最高可达1Mbit/s,通常用石英晶体振荡器作为时钟发生器,可以独立地进行位定时的参数设置,这样即使网络中节点之间的时钟周期不一样,仍可获得相同的位速率。
可以把标称位时间划分成为几个不重叠的时间片段,它们是同步段、传播段、相位缓冲段1和相位缓冲段2,如图7-15所示。
4 CAN总线特点的分析
CAN总线通信接口集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理。CAN总线的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。数据帧的标识码可由11位或29位组成,CAN2.0B规定在标识符的前7位不能同时为逻辑零,这种按数据帧编码的方式,还可使不同的节点同时接收到相同的数据。数据段长度最多为8字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8字节不会占用过长的总线时间,从而保证了通信的实时性。CAN协议采用CRC,并可提供相应的错误处理功能,保证数据通信的可靠性。CAN具有以下特性:
1)CAN为多主方式工作,不分主从,通信方式灵活,通过报文标识符通信,无需站地址等节点信息;
2)CAN上的节点信息分成不同的优先级,可满足不同的实时要求;
3)CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁时间。尤其是在网络负荷很重的情况下,也不会出现网络瘫痪情况;
4)CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式的数据传送与接收,无需专门的“调度”;
5)CAN的直接通信距离最远可达
6)CAN上的节点数主要取决于总线驱动电路,目前可达110个。报文标识符可达204.8种(CAN2.
7)采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。CAN的每帧信息都有CRC及其他检错措施,降低了数据出错概率。CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响;
8)cAN的通信介质可为双绞线、同轴电缆或光纤,选择灵活。
CAN总线在汽车电子系统中已得到广泛应用,成为欧洲汽车制造业的主体行业标准,代表着汽车电子控制网络的主流发展趋势。现代汽车越来越多地采用电子装置控制,例如发动机的定时注油控制,加速、制动控制及防抱死制动系统(ABS)等。世界上很多著名的汽车制造厂商,如Volkswagen(大众)、Benz(奔驰)、BMW(宝马)、Porsche(保时捷)、Rolls.Royce(劳斯莱斯)、Jaguar(美洲豹)等公司都已经采用CAN总线来实现汽车内部控制系统的数据通信。