计算机网络体系:OSI体系结构分为7层,分别为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
网络拓扑结构:星型拓扑、总线拓扑、环型拓扑、树型拓扑、网型拓扑。
CAN总线基础
CAN(Controller Area Network)属于现场总线的范畴,是一种高性能、高可靠性、易开发和低成本的多主方式的串行通信总线。CAN总线协议只定义了物理层和数据链路层。
-
CAN总线的特点
-
CAN总线传输介质
表示“隐性”和“显性”逻辑能力是CAN总线仲裁方法的基本先决条件,即所有节点都为“隐性”逻辑时,总线介质才处于“隐性”状态;只要有一个节点发送了“显性”逻辑,总线就呈现"显性"状态。
使用电气介质时,高电平为“隐性”状态;低电平为“显性”状态。
使用光学介质时,暗表示”隐性“状态;亮表示”显性“状态。
电气传输介质使用方式:两线总线、单线总线、共用一条线传输信号的供电
-
报文传输
3.1 帧类型
CAN总线的报文传输帧类型:数据帧、远程帧、错误帧、负载帧
报文传输过程中,任何节点检测到总线错误时就发送错误帧;负载帧用于在先行和后续的数据帧(或远程帧)之间提供附加的延时。
3.2 帧格式
依据标识符的长度,具有11位标识符的帧称为标准帧,具有29位标识符的帧称为扩展帧;帧间间隔用于区分前后两帧报文。
数据帧
数据帧由7部分组成:起始帧、仲裁域、控制域、数据域、CRC域、应答域、帧结束。标准帧和扩展帧格式如下图:
- SOF表示数据帧起始,一个显性位;
- 仲裁域表示数据帧优先级。标识符(ID)表示数据帧优先级,先发送ID高位,后发送低位;远程发送请求位(RTR)显性时为数据帧,隐性时为远程帧;代替远程请求位(SRR)为隐性位,当标准帧发送与扩展帧发送冲突且前11位标识符相同时,标准帧优先级高于扩展帧;标识符扩展位(IDE)为显性时表示为标准格式,为隐性表示为扩展格式;
- 控制域表示数据帧中数据域的字节长度。标准格式中r0为保留位,扩展格式中r1(显性)和r0(显性)为保留位;数据长度码(DLC)表示数据域字节数,采用二进制编码,只允许为0~8;
- 数据域表示数据帧中发送的数据内容,包括0~8字节,高位在前;
- CRC域:CRC序列依次计算帧起始、仲裁域、控制域、数据域,用于校验数据是否正确;CRC界定符为单独的隐性位;
- 应答域:包括应答位和应答界定符;发送器的发送报文应答位为隐性,接收器匹配CRC序列后的应答报文应答位为显性;应答界定符为隐性位;
- 帧结束:由7个隐性位组成,每个数据帧和远程帧都由帧结束界定。
远程帧
远程帧功能:作为数据接收点,可通过发送远程帧启动资源节点发送数据
远程帧分为标准格式和扩展格式,包括:帧起始、仲裁域、控制域、CRC域、应答域、帧结束。远程帧的报文格式如下图所示:
远程帧中RTR位为隐性,且没有数据域,数据长度码的值表示请求数据帧的数据长度。
错误帧
错误帧组成:不同节点的出错标志叠加、出错界定符,错误帧结构如下图所示:
出错标志有两种形式:主动错误标志和被动错误标志,主动错误标志由6个连续的显性位组成;被动错误标志由6个连续的隐性位组成,除非被其他节点的显性位重写。
错误标志位的形式破坏了从帧起始到CRC界定符的位填充规则,或破坏了应答帧或帧结束的固定形式。
错误界定符由8位隐性位组成。
超载帧
超载帧包含两个域:超载标志(6个显性位)和超载界定符(8个隐性位),如下图所示。
引发超载帧发送的3种条件:
-
接收器要求延迟一个数据帧或远程帧到达
-
在帧间间隔间歇域的第1和第2位检测为显性位
-
若一个CAN节点在出错界定符或超载界定符的第8位(最后1位)采样到1个显性位,节点会发送1个超载帧
如果在帧间间隔间歇域的第3位期间检测到一个显性位,则改为将解释为帧起始。
帧间间隔
目的是为了与总线上的其他帧进行区分。注意,超载帧和出错帧之间没有帧间间隔,多个超载帧之间也没有间隔。
帧间间隔包括间歇域和总线空闲域。
-
帧优先级仲裁
- 总线空闲时间,最先开始发送报文的节点获得优先级
- 多节点同时发送,从仲裁域第1位开始仲裁,连续输出显性位最多的节点可继续发送
- 具有相同ID的数据帧和远程帧在竞争时,RTR为显性的数据帧具有优先权
- 具有相同ID的标准格式和扩展格式竞争时,RTR为显性的具有优先权
-
报文滤波和校验
报文校验:。。。
报文校验
-
发送端:发送帧的同时逐位回读检测,如果直到帧末尾位均没有错误,则报文对发送器有效;若报文损坏则自动重发。重发必须在总线空闲时启动。
-
接收器:如果直到最后,所有的位(除了帧末尾位)均没有错误,则报文对于接收器有效。
-
-
编码——位填充
帧起始、仲裁域、控制域、数据域及CRC序列均通过位填充编码,发送器检测到位流中有5个连续为相同,则自动填充一个补码位。
数据帧和远程帧(CRC界定符、应答域和帧结束)的剩余位域形式相同,不填充;错误帧和过载帧的形式也相同,但不通过位填充的方式进行编码。
CAN总线报文里的位流根据“不归零”(NRZ)的方法来编码。在整个位时间里,位电平不是“显性”就是“隐性”。
-
错误处理和故障界定
5中错误类型:位错误、填充错误、CRC错误、形式错误、应答错误
-
位错误:发送器发送并监测,
- 填充错误:填充法编码时出现第6个连续相同的位电平
- CRC错误:接收器CRC计算结果与接收到的CRC序列结果不相符
- 形式错误:当固定形式的位域含有1个或多个非法位,则检测为一个形式错误(除了接收单元检测到EOF(7位隐性位)的最后一位(第8位)为显性电平;数据编码长度(DLC)为9~15数值)
- 应答错误:应答间隙期间监视到不为显性
节点错误处理:位错误、填充错误、形式错误、应答错误,在检测出错误后的下一位开始传输错误标志;CRC错误在ACK界定符后的下一位开始输出错误标志。