ISO11898主要定义了物理层和数据链路层,对比标准OSI通信模型,物理层和数据链路层属于最底层的两个层级。在详细讲ISO11898-1之前先来了解一下汽车CAN通信网络中常用的几个协议都处于OSI模型的什么位置。
图1 OSI模型
物理层定义了比特流的一些性质及电气特性,不在本文讨论范围内故跳过。
>>>>
数据链路层(Data Link Layer)
数据链路层(Data Link Layer)的作用主要是将物理层的数据比特流封装成帧,并控制帧在物理信道上的传输,还包含检错、调节传送速率等功能。
在ISO11898-1中,将数据链路层(Data Link Layer)分为两个子层:逻辑链路控制(Logical Link Control,LLC)和媒体访问控制(Medium Access Control,MAC)。
逻辑链路控制(LLC):数据链路层(Data Link Layer)的上层部分,DLL服务通过LLC为网络层提供统一接口。
媒体访问控制(Medium Access Control,MAC):定义了数据帧如何在介质上进行传输,我们知道CAN属于广播式的总线,MAC就分配了帧在信道上的使用权。
图2 数据链路层(DLL)示意图
每一层都有都有各自定义的PDU(Protocol Data Uint),同层级之间的通信通过交换PDU来实现,两个上下层级通过SDU(Service Data Uint)来进行交互。
图3 层级间交互示意图
>>>>
CAN的特点
1.基于多主优先级的总线访问
总线空闲时,任何节点都可以发送数据。当有多个节点同时发送时,就要根据ID值按位进行仲裁(ID值越小优先级越高),优先级高的获得总线访问权。
2.非破坏性仲裁机制
3.广播型
节点通过本地过滤接收自己所需的数据,不需要的就过滤掉。
4.配置灵活
可随意增减节点,不影响软硬件。节点数量理论上无限制,实际受电气负载限制。
5.系统范围内数据一致性
6.错误检测
7.自动重传仲裁或错误期间被破坏的数据
8.区分临时错误和永久性故障节点,自动关闭有缺陷节点
>>>>
MAC子层
MAC层有3种服务:
MAC层帧结构:
1.数据帧
数据帧将数据从发送器传输到接收器。
标准格式:
图4 数据帧标准格式
扩展格式:
图5 数据帧扩展格式
(1)帧起始
帧起始(SOF)标志数据帧和远程帧的起始,仅有一个显性位组成(0)。
(2)仲裁域
标准格式中,仲裁域由11位标识符和RTR位组成;扩展格式中,仲裁域由29位标识符和SRR位、IDE位、RTR位组成。
标识符(Identifier):在扩展帧中,有11位基本ID和18位扩展ID。
RTR位(Remote Transmission Request Bit):0表示数据帧,1表示远程帧。
SRR位(Subtitue Remote Request Bit):SRR位为0,当标准帧与扩展帧发生冲突,而扩展帧的的基本ID与标准帧的ID相同时,标准帧优先于扩展帧。
IDE位(Identifier Extension Bit):扩展格式里为隐性(1)。
(3)控制域
IDE位与r0组成保留位。
DLC有4位,表示数据长度,0 ~ 8 个字节。
(4)数据域
0 ~ 8 个字节的数据。
(5)循环冗余码(CRC)域
CRC序列里存计算出的CRC校验值。
CRC界定符包含1个隐性位(1)。
(6)应答场(ACK)
应答间隙:在发送器隐性位写一个显性位(0)表示收到匹配到正确CRC。
应答界定符:1位隐性位(1)。
(7)帧结束
帧结束(EOF)由7个隐性位(1)组成。
2.远程帧
节点发出远程帧,请求具有相同ID的数据帧。
远程帧也分标准格式和扩展格式,RTR位为1表示远程帧,相比数据帧少了数据域。
标准格式:
图6 远程帧标准格式
扩展格式:
图7 远程帧扩展格式
3.错误帧
任何节点检测到总线错误就发出错误帧。
4.过载帧
过载帧用在相邻数据帧或者远程帧之间提供附加的延时。
5.帧间隔
>>>>
LLC子层
LLC层有2种服务:
LLC层帧结构:
1.数据帧
图8 数据帧结构
2.远程帧
图9 远程帧结构
MAC层对帧优先级进行了仲裁发送给LLC层,LLC层这时候只需把帧继续向网络层传输,所以帧的结构也发生了变化。
以上均是笔者自己的理解,如有错误欢迎指正。