汽车车载网络技术详解(第3版)
上QQ阅读APP看书,第一时间看更新

第五节 数据通信基本知识

一、数据在总线导线上生成信号

总线信息通过数据导线上的电压变化来传输。电平在低数值(低位)与高数值(高位)之间切换。这两种状态可以通过二进制字符0和1表示,称为比特(二进制数)。电气信号可以通过一个电阻和一个开关或晶体管在数据导线上产生。通过一个开关和一个灯泡(电平指示器)产生数据总线信号。

开关处于打开状态时,电阻R1与灯泡串联。如果已根据灯泡标称电压(例如2.5V)调整电阻上的电压降,则灯泡亮起。此时数据导线上的电压值约为2.5V。以二进制方式表示时,这种情况为状态1,如图1-34a所示。

如果使开关闭合,则电路从并联电路变为开关电阻为0的“混合电路”。因为灯泡与开关并联,且并联电路电阻值始终小于最小的单个电阻,所以全部电压都作用在电阻R1上。数据导线上电压为0V且灯泡不亮起。按二进制表示方式这种情况为状态0,如图1-34b所示。

图1-34 通过一个电阻和一个开关生成信号

a)开关打开 b)开关闭合

也可以通过一个晶体管和一个灯泡(电平指示器)产生数据总线信号。

晶体管未受控制时,电阻R1不与负极直接连接,电阻与灯泡一起构成一个串联电路。相应数值匹配时,灯泡亮起且数据导线上产生二进制状态1,如图1-35a所示。

晶体管受控制时条件发生了变化,因为集电极-发射极导通形成了另一个电路。因此数据导线上的电压值从2.5V降到约0V。灯泡不再亮起且数据导线上形成二进制状态0,如图1-35b所示。

图1-35 通过一个电阻和一个晶体管在数据导线上生成信号

a)晶体管未导通 b)晶体管导通

对比结果表明,两个电路对数据导线的作用相同。如果用示波器替代灯泡,则通过观察示波图可以发现二进制状态0或1与数据导线电压电平之间的直接关系。

晶体管未导通状态:晶体管未受控制时电阻R1不与负极连接,因为R1和晶体管集电极-发射极段的电路未导通。如果现在通过示波器观察数据导线上的电压,则可看出电压值为5V。按二进制表示方式这种情况相当于状态1,如图1-36所示。

晶体管导通状态:晶体管受控制时条件发生了变化,因为集电极-发射极导通形成了电路。因此示波图中的电压值从5V降到约0.2V,以二进制表示时,数据导线处于状态0,如图1-37所示。

图1-36 晶体管未导通状态

图1-37 晶体管导通状态

二、数据在总线的传输

如果总线导线上的电压电平以相同的时钟节拍切换,则可以在相同时段内表示二进制代码数据。这些代码称为比特。利用二进制字符0和1可以为十进制数编码。表1-15为十进制0~9的编码,图1-38为十进制数9在总线上的表示。

表1-15 以二进制数方式为十进制数编码

总线上的比特编码可以通过非归零法(NRZ)、曼彻斯特法和脉冲宽度调制法(PWM)实现。这些方法的区别在于表示一个比特所需要的时段(时间窗)数量不同。

采用N RZ法时用一个时段即可表示一个比特。在整个比特时间内所示比特的电平保持不变。CAN和LIN中使用这种方法。曼彻斯特比特由两个时段构成,PWM比特由三个时段构成。曼彻斯特和PWM编码的优点是,每个比特都包含一次用于总线设备同步的脉冲沿切换,如图1-39所示。

图1-38 二进制数9在数据总线上的表示方式图

图1-39 比特编码方法示意图

1.信号传输速度

数据导线上的电压电平按传输二进制数值的规律切换。在此数据接收器必须知道,数据发送器让每个比特在数据总线上停留多长时间(直至下一个数值传到数据导线上为止的时间)。这个循环时间是系统的时钟频率。这个时间越短,信息传输越快,但是数据发送器和接收器的工作速度也必须越快。传输速度按ISO(国际标准化组织)标准系统分为两组,如图1-40所示。

图1-40 低速和高速通信

低速通信范围:比特率低于125kbit/s。高速通信范围:比特率高于125kbit/s。

2.显性比特和隐性比特

如果总线上布置了多个发送器,则同时发送时会造成信息重叠。有三个总线设备时,在总线电平方面可能出现以下情况:

如果三个发送器都未起用,则晶体管不受控制,因此没有电流流过电阻,且数据导线上的电压值为5V。作为二进制状态或电平这种情况表示为1,如图1-41所示。如果某个晶体管通电,则有电流流过串联电阻。数据总线上电压值变为0V或电平为0。这意味着,任何处于应用状态的收发点都可以立即用低位覆盖状态1(高位)。因此在这个电路中低位状态称为显性,高位状态称为隐性。这种关系对传输错误信息以及访问总线收发点的同时识别冲突来说十分重要。如果多个控制单元同时发送信息,那么数据总线上就必然会发生数据冲突,为了避免发生这种情况,CAN总线采用了仲裁方法来处理这类冲突。总线传输信息见表1-16。

图1-41 三个发送器耦合在一根总线

表1-16 总线传输信息

3.优先权的仲裁

要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。实时处理通过网络交换的紧急数据有较大的不同。一个快速变化的物理量,如汽车发动机负载,将比类似汽车发动机温度这样变化相对较慢的物理量,更频繁地传送数据并要求更短的延时。CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。

总线读取中的冲突可通过位仲裁解决。例如,当3个站同时发送报文时,站1的报文标识符为011111,站2的报文标识符为0100110,站3的报文标识符为0100111。通过比较3个站的报文标识符,发现所有标识符前面2位相同都为01,直到第3位进行比较时,站1的报文被丢掉,因为它的第3位为高,而其他两个站的报文第3位为低;站2和站3报文的4、5、6位相同,直到第7位时,站3的报文才被丢失。

注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。在此例中,站2的报文被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据报文在整个系统中的重要性按顺序处理的。这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放在每个报文中了,这可以保证在实时系统中较低的个体隐伏时间。对于主站的可靠性,由于CAN协议执行非集中化总线控制,所有主要通信,包括总线读取(许可)控制,在系统中分几次完成。

1)控制单元发送的每个信息都要分配优先权,不同的信息具有不同的优先权(优先权隐含在数据中的“标识符”),优先权高的信息优先发送。

2)所有的控制单元都是通过各自的RX线来跟踪总线上的一举一动,并获知总线的状态。

3)请求发送信息的控制单元,每个发射器将对TX线和RX线的状态一位一位地进行比较,它们可以不一致。

4)CAN是这样来进行调整的:如果某个控制单元向外发送“1”(TX-线为1),但在通过RX-线在总线接到“0”,则该控制单元中控制发送信息,退出对总线的控制,转为接收信息。

故用标识符中位于前部的“0”的个数就可调整信息的重要程度,从而就可保证按重要程度的顺序来发送信息。规则:标识符中的号码越小,表示该信息越重要。这种方法称为仲裁。

比如现在有三个控制单元,发动机控制单元、ABS控制单元、仪表,同时向外发送信息,其中发动机控制单元向外发送信息为“10101010”,ABS向外信息为“1010101 1”,仪表向外发送的信息为“10111111”。三个控制单元向外发送信息的第1位、第2位、第3位都是一样的,都是“101”,此时不存在冲突,但三个控制单元向外发送第4位,此时仪表的第4位为“1”,其他的两个控制单元的第4位为“0”,根据三个发送器耦合在一根总线的原理(见“图1-41三个发送器耦合在一根总线”)知道,此时总线的状态应为“0”,对仪表控制单元来说,它向外发送“1”(TX状态1),但接收到是“0”(RX状态0),根据仲裁原则,仪表控制单元停止发送信息,转为接收状态,该信息等待下一次发送周期,再次请求发送。

同理,发动机控制单元和ABS控制单元继续向外发送信息的第5位、第6位、第7位(101),且这三位的信息是一样的,不存在冲突。再发送第8位,发动机控制单元的第8位为“0”,而ABS控制单元的第8位为“1”,根据三个收发器耦合在一根总线的原理,此时总线的状态应为“0”,对ABS控制单元来说,它向外发送“1”(TX状态1),但接收到是“0”(RX状态0),根据仲裁原则,ABS控制单元停止发送信息,转为接收状态,该信息等待下一次发送周期,再次请求发送。

结果,发动机控制单元接管数据总线控制权,继续发送剩余的信息,最终数据总线的信息与发动机控制单元向外发送的信息是一样的,如图1-42所示。

图1-42 3个电控单元信息发送过程

三、数据总线的终端电阻

在高频网络中总线导线端部必须有终止点,否则可能会出现反射。这种情况也适用于至总线设备连接部位的导线端部。对于高频信号来说,总线导线端部的作用相当于独立的发送器。因此导线端部会产生反向运行的信号,这些信号叠加在有效信号上并造成信号失真。例如,各控制单元扫描时不识别为1,而是识别为0,如图1-43所示。

反射过程与撞到堤岸上反射,并与后续波浪叠加的水波类似。如果波浪冲到沙滩上,沙滩就会吸收波浪的能量且不会造成波浪叠加。因为电阻可以吸收信号运行到数据导线端部时的能量,所以只需连接一个电阻即可使数据导线终止,如图1-44所示。

1)按CAN规范布置电阻:CAN规范中规定终端电阻连接在数据总线导线的端部。每个电阻值都为120Ω。

2)电阻在控制单元内的布置:与标准规定在数据总线两端布置终端电阻(为120Ω)不同,在高速总线(CAN)上汽车制造商最常使用的是分布在控制单元上的负载电阻,如图1-45所示。在低速总线(CAN)中终端电阻不连接在CAN_H与CAN_L之间,而是对地或对5V切换,如图1-46所示。

例如,在Golf V中发动机控制单元内有一个中央终端电阻,其他高阻值电阻布置在其他控制单元内。其结果是虽然总线导线上的反射较强,但是由于总线长度较短而不会明显影响数据交换。高速总线上附加安装回线时可能出现令人费解的故障信息。因此车辆内的接地导线不保持连接状态。

图1-43 无终端电阻时的信号流程

图1-44 有终端电阻时的信号流程

图1-45 高速总线(CAN)上的终端电阻

图1-46 低速总线(CAN)上的终端电阻

3)在低速总线中,一个电阻在CAN_L导线与收发器供电之间切换,另一个电阻在CAN_H导线与接地之间切换。将点火开关置于关闭位置时,无法从外部测量电阻值,因为两个电子开关断开了供电与接地之间的连接。

4)单线技术的终端电阻布置:终端电阻连接在数据总线导线与接地电位之间。