机制与特点
CAN 用一对差分线传送信号,总线上的节点都能收到每一帧,但报文里没有站点地址,而是用标识符表示内容,因此同一帧可以被多个节点同时使用。标识符还承担优先级:多个节点同时发送时,数值较小的标识符优先占用总线,冲突无需重试即可判定。这种非破坏性仲裁让高优先级报文始终能及时上总线。CAN 只定义到帧这一层,不规定报文的含义,所以工业系统通常还会在其上叠加一层应用层协议,把数据组织成参数与过程变量。
基本信息
| 物理层 | 差分双绞线,两端需终端电阻 |
|---|---|
| 帧格式 | 标准格式使用较短的标识符,扩展格式使用较长的标识符 |
| 仲裁方式 | 按标识符优先级逐位仲裁,高优先级获胜 |
| 帧类型 | 数据帧、远程帧、错误帧、过载帧 |
| 速率与长度 | 速率越高可用长度越短,属此消彼长关系 |
| 上层协议 | 由应用层定义报文含义与数据组织方式 |
| 诊断 | 总线负载率、错误计数、节点主动上报的状态 |
典型使用场景
- 移动机械与工程车辆:线束简单、抗干扰要求高
- 分布式 I/O:把输入输出模块沿设备布置,减少长距离接线
- 电机与驱动器控制:周期性下发指令并回读状态
- 多节点协同:一个节点发出的数据被多个节点同时使用
- 故障诊断:读取错误计数与总线负载,判断线缆与终端问题
- 系统集成:两种上层协议并存时用网关或不共享同一段总线
帧类型速查
| 帧类型 | 作用 | 特点 |
|---|---|---|
| 数据帧 | 携带实际数据 | 由标识符决定优先级与含义 |
| 远程帧 | 请求对端发送数据 | 现代实现中较少使用 |
| 错误帧 | 节点检测到错误后通知总线 | 错误累积到一定程度会使节点退出总线 |
| 过载帧 | 请求延迟下一帧 | 用于缓解接收压力 |
| 状态上报类报文 | 节点自报状态或故障 | 由上层协议定义 |
诊断与设计要点
诊断与设计要点
# 网络长度与速率成反比:低速可拉长,高速必须缩短
# - 具体数值以 ISO 11898 与器件手册为准,不要凭经验硬套
# 总线负载率留出余量:突发报文与错误重传都需要额外带宽
# 终端电阻:两端各一,中间节点不接
# 支线要短:长支线在高速率下会引起反射与误码
# 错误计数上升说明物理层有问题:先查线缆、终端与接地,再查负载率总线负载率长期接近上限时,偶发报文会因为争用而延迟,表现为偶发超时而非明确故障,设计阶段就应留出带宽余量。
把两套不同上层协议的系统直接接到同一段总线上,会让标识符含义冲突,可能出现误动作,必须用网关隔离。