打印
[技术问答]

CAN通信协议你知多少?

[复制链接]
873|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。

现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。

CAN协议具有一下特点:

1) 多主控制。在总线空闲时,所有单元都可以发送消息(多主控制),而两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。

2) 系统的若软性。与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。

3) 通信速度较快,通信距离远。最高1Mbps(距离小于40M),最远可达10KM(速率低于5Kbps)。

4) 具有错误检测、错误通知和错误恢复功能。所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其他所有单元(错误通知功能),正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。

5) 故障封闭功能。CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。

6) 连接节点多。CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

正是因为CAN协议的这些特点,使得CAN特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。

CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。

本章,我们使用的是450Kbps的通信速率,使用的是ISO11898标准,该标准的物理层特征如图30.1.1所示:

从该特性可以看出,显性电平对应逻辑0,CAN_H和CAN_L之差为2.5V左右。而隐性电平对应逻辑1,CAN_H和CAN_L之差为0V。在总线上显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。另外,在CAN总线的起止端都有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射。
:ISO11898标准和ISO11519-2标准下,显性电平和隐形电平定义是有区别的。只不过都是隐形电平为1,显性电平为0.
   CAN协议是通过以下5种类型的帧进行的:
l 数据帧
l 要控帧
l 错误帧
l 过载帧
l 帧间隔
另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11 个位的标识符(ID),扩展格式有29 个位的ID。各种帧的用途如表30.1.1所示:
帧类型
帧用途
数据帧
用于发送单元向接收单元传送数据的帧
遥控帧
用于接收单元向具有相同 ID 的发送单元请求数据的帧
错误帧
用于当检测出错误时向其它单元通知错误的帧
过载帧
用于接收单元通知其尚未做好接收准备的帧
间隔帧
用于将数据帧及遥控帧与前面的帧分离开来的帧
表30.1.1 CAN协议各种帧及其用途
   由于篇幅所限,我们这里仅对数据帧进行详细介绍,数据帧一般由7个段构成,即:
(1) 帧起始。表示数据帧开始的段。
(2) 仲裁段。表示该帧优先级的段。
(3) 控制段。表示数据的字节数及保留位的段。
(4) 数据段。数据的内容,一帧可发送0~8个字节的数据。
(5) CRC段。检查帧的传输错误的段。
(6) ACK段。表示确认正常接收的段。
(7) 帧结束。表示数据帧结束的段。
数据帧的构成如图30.1.2所示:
图30.1.2 数据帧的构成
图中D表示显性电平,R表示隐形电平(下同)。
帧起始,这个比较简单,标准帧和扩展帧都是由1个位的显性电平表示帧起始。
仲裁段,表示数据优先级的段,标准帧和扩展帧格式在本段有所区别,如图30.1.3所示:
图30.1.3 数据帧仲裁段构成
标准格式的ID 有11 个位。从ID28 到ID18 被依次发送。禁止高7 位都为隐性(禁止设定:ID=1111111XXXX)。扩展格式的 ID 有29 个位。基本ID 从ID28 到ID18,扩展ID 由ID17 到ID0 表示。基本ID和标准格式的ID 相同。禁止高7 位都为隐性(禁止设定:基本ID=1111111XXXX)。
其中RTR位用于标识是否是远程帧(0,数据帧;1,远程帧),IDE位为标识符选择位(0,使用标准标识符;1,使用扩展标识符),SRR位为代替远程请求位,为隐性位,它代替了标准帧中的RTR位。
控制段,由6个位构成,表示数据段的字节数。标准帧和扩展帧的控制段稍有不同,如图30.1.4所示:
图30.1.4 数据帧控制段构成
   上图中,r0和r1为保留位,必须全部以显性电平发送,但是接收端可以接收显性、隐性及任意组合的电平。DLC段为数据长度表示段,高位在前,DLC段有效值为0~8,但是接收方接收到9~15的时候并不认为是错误。
数据段,该段可包含0~8个字节的数据。从最高位(MSB)开始输出,标准帧和扩展帧在这个段的定义都是一样的。如图30.1.5所示:
图30.1.5 数据帧数据段构成
   CRC段,该段用于检查帧传输错误。由15个位的CRC顺序和1个位的CRC界定符(用于分隔的位)组成,标准帧和扩展帧在这个段的格式也是相同的。如图30.1.6所示:

图30.1.6 数据帧CRC段构成完整版请下载附件
CAN总线.pdf (2.66 MB)

2151663f5fd1131b81.png (107.03 KB )

2151663f5fd1131b81.png

使用特权

评论回复
沙发
heisexingqisi| | 2023-2-22 21:41 | 只看该作者
说时候,我没用过。

使用特权

评论回复
板凳
小夏天的大西瓜| | 2023-2-23 15:20 | 只看该作者
他有俩ISO11898标准和ISO11519-2标准

使用特权

评论回复
地板
小小蚂蚁举千斤| | 2023-2-23 15:38 | 只看该作者
最早应该是汽车行业的应用,德国吧

使用特权

评论回复
5
kmzuaz| | 2023-4-16 22:15 | 只看该作者
CAN(Controller Area Network)是一种串行通信总线协议,主要用于工业领域和汽车电子等应用中的数据传输。

使用特权

评论回复
6
kmzuaz| | 2023-4-18 10:39 | 只看该作者
一些 MCU 内置了 CAN 控制器,具有 DMA、FIFO 缓存等功能,可以进一步提高 CAN 通信效率。

使用特权

评论回复
7
geraldbetty| | 2023-4-18 10:47 | 只看该作者
CAN 总线支持自动重复发送机制,即当数据帧未被确认时,会自动重新发送,以保证数据的可靠传输。

使用特权

评论回复
8
averyleigh| | 2023-4-18 11:01 | 只看该作者
CAN 总线支持多种通信速率,可以根据具体应用场景选择不同的速率来平衡传输效率和可靠性。

使用特权

评论回复
9
kkzz| | 2023-4-18 13:21 | 只看该作者
需要根据实际需求选择适当的硬件和软件组件,进行系统设计和优化,以达到最优的通信效率和可靠性。

使用特权

评论回复
10
jackcat| | 2023-4-18 15:20 | 只看该作者
可以根据不同的应用需求进行配置和优化。

使用特权

评论回复
11
alvpeg| | 2023-4-18 17:43 | 只看该作者
在使用 CAN 进行数据通信时,还需要考虑到总线负载、信号传输质量、数据处理能力等因素对通信效率的影响。

使用特权

评论回复
12
albertaabbot| | 2023-4-18 19:08 | 只看该作者
CAN 总线支持广播和点对点两种数据传输方式,可以同时传输多个节点之间的数据。

使用特权

评论回复
13
rosemoore| | 2023-4-18 19:26 | 只看该作者
根据具体应用场景和硬件平台选择适当的 CAN 控制器和外设,以确保数据传输的稳定性和可靠性。

使用特权

评论回复
14
uytyu| | 2023-4-18 20:22 | 只看该作者
CAN 数据帧长度可以从 08 字节的标准帧到 964 字节的扩展帧进行配置,可以根据实际需求选择合适的帧长度来提高通信效率。

使用特权

评论回复
15
jonas222| | 2023-4-18 21:06 | 只看该作者
CAN 通信协议具有高度灵活性和可扩展性

使用特权

评论回复
16
bartonalfred| | 2023-4-18 21:36 | 只看该作者
CAN 总线的物理层采用差分传输方式,即将信号分为两个相反的电平来传输。

使用特权

评论回复
17
geraldbetty| | 2023-4-18 21:42 | 只看该作者
CAN 具有高效的数据传输能力,可以实现低延迟、高带宽和可靠性强的数据通信。

使用特权

评论回复
18
wengh2016| | 2023-4-18 22:22 | 只看该作者
CAN 总线使用了很多错误处理机制,例如错误帧的自动删除、错误计数器等,以保证数据传输的可靠性。

使用特权

评论回复
19
Jacquetry| | 2023-4-18 22:42 | 只看该作者
最近看报导说目前CAN都是明文通讯

使用特权

评论回复
20
lzbf| | 2023-4-18 22:43 | 只看该作者
在使用 CAN 总线时,还应该对误码率进行监测和分析,及时识别和处理可能存在的问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

197

主题

3451

帖子

14

粉丝