第三节网关技术(选讲)一、网关的概念网关是接连异型网络的接口装置,它综合了桥接器和路由器的功能,汽车网关主要能在OSI参考模型的物理层、数据链路层和应用层上对双方不同的协议进行翻译和解释。
对于Bosch公司为奔驰600SEL等汽车开发的控制器区域网CAN1.2与CAN2.0协议之间的网关,是指为处理多个ECU的核中和CPU之间的通信而提供的一种综合接口装置,实际上就是一个Intel—16位80C196单片微机,至于美国三大汽车公司采用的SAEJ1850网络与Bosch—CAN网络之间的网关,实际上就是一个Intel—16位87C196KR单片微机。
一个网关必须具备有一个网络协议到另一个协议转换信息的能力,对于CAN协议的网关,应能涉及CAN协议4种帧类型中的两种,即数据帧和远程帧。
另外两种错误帧和超限帧,由该网关的CAN芯片硬件控制,因此,可以说网关无附加的相应性。
当然,网关必须具备有“状态位”,即在任何一个网络中发生的错误太多时,网关应有报警状态位或总线中断状态位,这样,网关就像网络中的节点那样,可以调查总线状态。
对于两个网络之间的网关,起码应具备以下特性:尽量少的传输等待时间,信息丢失或超限差错最少,能处理总线出现的差错。
二、Bosch—CAN1.2与CAN2.0版本的主要区别1991年9月,标准的1.2版本的CAN协议修订为新的2.0版本,新版本的技术关键是增加了信息标识符,也就是说,新的CAN2.0既支持标准的11位,也支持扩展后的29位信息标识。
图5位两个CAN版本的互联框图。
CAN2.0实施新的信息位,标识扩展位(IDE)使CAN操作装置能区分标准和扩展格式,但大多数现存的标准CAN—1.2版本不能使被扩展后的信息格式,在实施过程中会影响错误信息。
为了能实施29位的信息标识,Intel公司开发了品种繁多的芯片,作为CAN的汽车用户,可以采用网关使网络互联,在仅用CAN—1.2—11位信息标识的条件下,能正确响应29位标识。
三、CAN1.2与CAN2.0的信息格式信息格式是数据通信系统中关于标题、信息首部、地址、正文和结尾等的书写规定。
CAN—1.2 采用11位表示符,称为标准(1.2版本)格式;CAN—2.0采用29位标识符,称为扩展(2.0版本)格式。
标准和扩展的格式均支持4种帧类型:数据帧,载运数据;远程帧,当一个节点向另一个节点要求数据时发送;错误帧,当某个节点检测到一个消息错时发送;过载(超限)帧,当某个节点要求附加延迟时发送。
图6表示数据帧和远程帧的标准和扩展的信息格式,内容如下:SOF:起始帧(支配位),标志数据帧湖远程帧开始。
Arbitration Field:判优字段,包括信息标识位的1个或2个字段。
标准格式由1个11位字段,而扩展格式有11位和18位宽的2个字段,共29位标识符。
RTR:远程传输请求位,该位在判优字段,对于数据帧是主位,对于远程帧是从属位。
SRR:用于扩展信息中替代远程请求位,是从属的。
该位代替标准格式中的RTR位,位于扩展格式的判优字段中。
IDE:标识扩展位,对于标准格式是支配的,对于扩展格式是从属的。
该位位于扩展格式的判优字段和标准格式的控制字段中。
Control Field:控制字段。
保留位r0和r1被单作支配位发送。
4位数据长度码DLC表示数据字段中的字节数。
Data Field:数据字段。
数据字节位于数据帧(0—8字节)中。
远程帧包含零数据字节。
CRC Field:循环冗余效验字段。
该字段由1组15位虚幻冗余效验误码和1个从属的CRC分隔符位组成。
ACK Field:确认字段。
确认是1个支配位,由接收数据帧和远程帧的节点发送,紧跟着1个从属的ACK分隔位符位。
End of Frmae:帧结束。
由7个从属位结束帧。
Int:中断。
是3个用来分隔数据帧与远程帧的从属位。
表6中的位计数是用来评定网关信息传输等待时间和过速(指网关部能按数据发送速率接收数据而造成的数据丢失)敏感度。
这些信息的实际长度可能有差异,原因是“填充”位被添加到信息中。
由于信息中增加了转换,故填充位有助于同步。
5个连续等值为被发送后,填充位被插入到位流中,填充位于5个连续位反极性。
处理CRC分隔符、ACK字段和帧结束外,所有的信息字段都被填充。
四、CAN网关的布局及进行能够的主要操作如果两个CAN网络执行器是两片独立的芯片(图7),微控制器(单片微机)作为网关,那么,CAN芯片就像灵巧的随机存储器被网关读写。
一旦接收到信息,网关就执行接收CAN芯片的外部读操作,接着执行转换信息的逻辑指令,然后执行外部写操作,对第二个网络的CAN芯片做传输编成。
所以说,网关主要是执行外部读、写操作和转换信息标识符,而执行读、写操作的重要技术条件是时间,读、写所要求的时间又取决于网关和CAN芯片借口的定时特性。
图7的结构采用1组16位地址/数据总线,该总线在网关与CAN芯片间又双通信能力,CAN芯片驱动连至网关独立中断线,以利于识别中断的CAN装置。
五、CAN芯片信息结构的特点CAN芯片配置有接收和发送信息的结构。
典型的CAN芯片的信息结构支持2—15个信息客体(含有信息的实体或接收信息的实体,对客体的存取即为对其包含的信息存取)。
信息客体由存储信息标识符、数据字节和控制字节的RAM字节组成。
为提高接收信息的可靠性,CAN芯片必须在接收新信息的同时仍能处理早先接收的旧信息。
具体的做法是:采用1套带缓冲的接收信息客体或采用两个交替作确认和否认的缓冲接收信息客体(图8)。
假设所有接收信息就只被单个缓冲的接收信息客体接收。
若不用认可的过滤,起阻止作用的一些接收信息客体将会接收所需的全部信息。
为了捕获新信息,新信息的末位被接收前的那一个接收信息客体必须“有效”。
每个CAN芯片使用1或2个信息客体接收,剩余的信息客体用来处理远程帧和发送信息。
网关必须配备存储多个发送信息的结构(图9)。
以等待CAN总线存取。
所需要的发送信息客体的数量,取决于网关传送和接收的信息量以及将这些信息送至另一个网络的能力。
总线的总负荷和越过网关的信息优先级,对所需要的发送信息客体的数量,起着决定性的作用。
管理发送信息客体的方法之一,是提供一个堆栈,以存储末用的信息客体(号)数。
如果需要一条信息传输,一个信息客体号就从该堆栈中“弹出”。
同样,当结束了一条信息传输,它的信息客体号就被“压入”堆栈中。
网关管理发送信息客体的次序,低优先级的信息不会被先排定发送。
例如,Intel 82527使用被存在最低号数的信息客体中的信息以供判优,可以不考虑芯片上其他信息客体的判优登记,信息客体#1中的低优先级信息不会先于其他信息传输。
六、网关“处理”内容网关主要“处理”有关下面三部分的内容(图10):从第一个网络读取所接收的信息,翻译信息,向第二个网络发送信息。
图中翻译信息标识符的含义如下:CAN1.2和CAN2.0的网关可用于以下两种情况,第一种是最简单的实施方式,即在两个网络之间不需要对信息标识符翻译,只是传送标准信息,也就是说,这是6的网关只起到互联CAN1.2与CAN2.0,并让这两个网络共享标准信息的任务;第二种实施方式需要对信息标识符作翻译,也就是说,两个网络有各自的信息标识符。
例如,“发动机温度信息”在CAN1.2网络上具有专用的11位表转信息标识符,而在CAN2.0网络上却具有扩展的29位信息标识符,此时的网关需对这两种信息标识符通过计算或“查表”翻译。
七、为什么实施SAE J1939和J1850网络协议的美国汽车也要采用与CAN 桥接的网关?SAE汽车选用CAN2.0协议作为“C级”串行控制和通信网络的推荐实施标准,又称为SAE J1939规范。
CAN2.0每秒钟的数据速率可达1Mbps,也就是说,CAN2.0执行相当于SAE—C级的高速数据速率。
而对于载货车的挂车或被牵引的机具来说,并不需要如此高的数据速率。
由于高速率的串行链路的电子元件和硬件的成本较昂贵,因此,就采用中速率(B级)41.6kbps的J1850网络来管理挂车的牵引和制动,而CAN2.0只用于支持主车发动机的各个ECU,这样,在载货车和大客车大客车上献出现了连接异型网络的网关(图11)同样原理,原实施SAE—J1650B级通信速率的小客车,感到发动机、自动变速器、ABS等系统的数据速率偏低,想提高通信速率以改善汽车的控制性能,又不能让汽车成本增加太多,就将原实施J1850的汽车增加一网关(图12),并将网关前方的总线修改为CAN总线。
八、CAN与J1850桥接网关硬件的配置CAN与J1850桥接的网关硬件主要由四部分组成(图13)(1)87C196KR微控制器。
该微控制器为16位,16MHz,经编程后使CAN 和J1850控制器互通。
87C196KR实际上就是网关。
87C196KR利用端口引脚产生通至网络各个控制器的复位和片选信号。
作为一输入配置的端口引脚,从网络控制器的开式—漏极输出端接收中断信号。
87C196KR至82527的借口使用8位多路复用地址/数据总线。
高位地址译码,生成片选数据至83527。
其他总线信号(ALE,RD#,WR#)控制总线操作,87C196KR跨接一个串行外围借口SPI与MC68HC57互通。
87C196KR同步串行输入/输出外围设备控制SPI接口。
(2)82527—CAN控制器。
82527是执行CAN2.0规范的全特性CAN器件。
该芯片具有能提供大量发送/接收配置的15个信息客体。
网关虽只有1个16位多路复用接口,但可利用82527的8位同步和异步非多路复用接口及1个SPI接口。
另外,82527还配置有1个缓冲接收信息客体,用来从CAN 总线接收扩展信息。
13和14号接收的标准信息交替构成有效/无效,以执行缓冲接收。
这样能给微控制器有更多的时间处理信息。
其他的12个信息客体发送信息。
堆栈通过存储在其上的相应信号数据跟踪可用的信息客体(图14),如果需要1个信息客体,一个可用的信息客体号数就被堆栈“弹出”(亦称出栈)。
如果1个信息客体已被发送,它的信息客体号数就被压回堆栈。
这种类型的堆栈,对管理配置在这一事件传输的多条信息是很有用的。
(3)MC68HC57数据链路控制器。
MC68HC57处理J1850的总线占控度。
芯片上收发器让芯片直接到J1850总线上。
MC68HC57缓冲发送和接收通过串行口编程的87C196KR只能操作与1MHz。
87C196KR发送第1个字节装有数据、第2字节装有命令的2字节系列串行信息给MC68HC57,命令又包括装入1条发送信息、取出1条接收信息、读出一状态字节,然后配置MC68HC57中断发送和支持接收。
队列用于管理J1850传输(图15),由于MC68HC57具有发送FIFO的内存缓冲区,队列被用于保持FIFO的全发送。