电子产业一站式赋能平台

PCB联盟网

搜索
查看: 62|回复: 0
收起左侧

CAN现场总线

[复制链接]
匿名  发表于 2024-8-14 08:32:00 |阅读模式
一个通信方式的诞生不是一件简单的事,CAN总线是由德国 Bosch 公司的工程师和一群博士设计的,后被提交给国际标准化组织维护管理。
据不完全统计,世界上已出现过的总线种类近 200 种
IEC/SC65C 成立了 MT9 现场总线修订小组于2001年8月制定出由 10 种类型现场总线组成的第 3 版现场总线标准,该标准于 2003 年 4 月成为正式国际标准。
每种总线都有其产生的背景和应用领域。CAN 适用于汽车工业, Lon 适用于楼宇自动化等。
典型的现场总线协议模型采用 OSI 模型中的三个典型层:物理层、数据链路层和应用层。物理层完成电气连接、实现驱动器/接收器特性、定时、同步、位编码解码。数据链路层分为逻辑链路控制与媒体访问控制两部分,分别完成接收滤波、超载通知、恢复管理,以及应答、帧编码、数据封装拆装、媒体访问管理、出错检测等。
CAN 总线的技术特点:
1、多主工作方式
2、节点信息分为不同的优先级,可满足不同的实时要求3、采用非破坏性的总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动退出发送,而高优先级的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁的时间。4、通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送和接收数据,无需专门的“调度”。5、一个节点可以主动要求其他节点发送信息,这种特性叫做“远程终端发送请求(RTR)”。6、CAN 的直线通信距离最长可达 10km(速率 5kbit/s 以下),通信速率最高可达 1Mbit/s(此时通信距离最长为 40m)。
7、CAN 上的节点数主要取决于总线驱动电路,目前可达 110 个;报文标识符可达 2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制。
8、采用短帧结构,传输时间短,受干扰概率低,具有良好的检错效果。
9、CAN 的每帧信息都有 CRC 校验及其他检错措施,保证了数据出错率极低。
10、CAN 的通信介质可为双绞线、同轴电缆或光纤,选择灵活。
11、CAN 节点在错误严重的情况下具有自动关闭输出的功能,以使总线上其他节点的操作不受影响。

ISO 11898 定义了一个总线结构的拓扑,采用干线和支线的连接方式:干线的两个终端都端接一个 120Ω 的终端电阻;节点通过没有端接电阻的支线连接到总线
CAN总线结构拓扑:




在实际应用中,可通过 CAN 中继器将分支网络连接到干线网络上,每条分支网络都符合ISO 11898 标准,这样可以扩大 CAN 总线通信距离,增加 CAN 总线工作节点的数量。


CAN物理层:
CAN驱动器芯片负责将收发电平转换成差分电压发送到总线网络上

CAN协议约定了两种逻辑状态,存在压差时代表0,是显性位,无压差时代表1,为隐性位。显性状态中 CANH 的额定电压是 3.5V, CANL 是 1.5V,隐性状态中都是2.5V。
显位在与隐位争夺总线的过程中将获胜,也就是如果有多个站点在发送信号,只要有一个站点发送了显位,总线就表现为显位。
这点是CAN总线的精髓
我们来看下为什么显性位可以胜出
下图是驱动器的内部构造图


总线输出参考电压输出 Vref的输出电压是1/2VCC。
在隐性状态中,CANH 和 CANL 输入通过 25kΩ的上拉到VCC/2。
显性的信号电平,由两个晶体管直接拉到电源和地,这是显性胜出的秘密
每个节点发送一位数据并检测总线状态,一个节点发出隐性位,但是读到的是显性位,表示有优先级更高的节点,显性位的节点继续发送数据,失败的节点退出发送。
二,CAN 链路层
CAN 总线报文有以下 4 种帧类型:
1)数据帧:数据帧将数据从发送器传输到接收器。
2)远程帧:总线节点发出远程帧,请求发送具有同一识别符的数据帧。
3)错误帧:任何节点检测到总线错误就发出错误帧。
4)超载帧:超载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
2.1数据帧

帧起始(SOF)标志数据帧和远程帧的起始,仅由一个“显性”位组成。所有节点必须同步于首先开始发送报文的节点的帧起始前沿。
2.1.1仲裁场


2.1.1.1    ID
标准帧的仲裁场由 11bit ID(标识符)和 RTR 位(远程发送请求位)组成,在总线空闲时,最先开始发送消息的节点获得发送权,多个节点同时发送时,各发送节点从仲裁段的第一位开始进行仲裁。还记得我们前面说明的显性隐形的竞争问题,ID的值越小,即0越靠前,0越多,其优先级就越高,越容易获得总线的使用权。
举个例子,如果两个节点同时发
送数据如下:
节点 1:00000000111 10111011101111111……
节点 2:00000001111 01011111101001010……
发送到第 8bit 时,节点 2 判断出其他节点在发送高优先级的报文,节点 2 自动停止发送,等待总线空闲。
2.1.1.2    RTR 位
RTR 位在数据帧中为显性,在远程帧中为隐性。数据帧优于远程帧取得控制权。
2.1.2控制场


    DLC 指示数据场里的字节数量
2.2远程帧
前面说过,远程终端发送请求(RTR),即请求其他节点发送数据

第 12bit在数据帧中必须为显性,而在远程帧中必须为隐性。所以ID相同的远程帧优先级小于数据帧。没有数据场,数据长度码的值可以是请求的数据的长度值。其实我个人认为远程帧可以看成是一种特殊的数据帧。
2.3错误帧


2.3.1    错误标志
错误标志分为“错误激活”标志和“错误认可”标志。
CAN通信固定当发送器在发送的位流中检测到 5bit 连续的相同数值时,将自动在实际发送的位流中插入一个补码位(相反逻辑)。因为CAN是串口,一个字节发送多长时间是一定的,如果长时间处于同一电平,可能造成时序错乱。
而检测到出错站点发送“错误激活”标志来指示错误,“错误激活”标志是由 6 个连续的显位组成。“错误认可”标志由“错误认可”站点(出错较多的站点)发出,“错误认可”标志由 6 个连续的隐位组成,这就打破了上面的规定,所以能被节点是别到数据错误。“错误认可”标志由“错误认可”站点(出错较多的站点)发出。
2.3.2    错误界定符
在发送完错误标志以后,就向总线发送隐位并监测总线,直到
检测到 1 个隐位为止,然后它继续向总线发送 7 个隐位,这共 8 个隐位称为错误界定符。


2.4超载帧

超载帧与错误帧的形式相同。超载标志由 6 个显性位组成
2.5帧空间

数据帧或远程帧与先行帧都通过帧间空间来分开。超载帧与错误帧之前没有帧间空间,普通的帧间空间由间歇场和总线空闲场组成。间歇场为 3 个隐性位,数据帧或远程帧在检测到帧结束场后,在发送数据之前,要等待 3 个位时间,在总线空闲场上检测到的显性位被解释为帧起始场。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表