CAN数据通信机制
下面将围绕构成CAN数据通信基础的帧与格式结构及其作用进行说明。
CAN通信的基础“显性”与“隐性”
以汽车为中心的工业机械或FA(工厂自动化)等领域广泛应用的串行通信协议“CAN”。在CAN通信中,将信息转换为由“0”与“1”构成的数字信号进行发送。此时将“0”称为“显性(优势)”,将“1”称为“隐性(劣势)”,同时发送显性与隐性时,优先发送显性的机制。另外CAN通过在各种通信协议中采用的NRZ(Non-Return-to-Zero)方式进行数据转换并发送。
关于CAN通信的单位“帧”
CAN通信的数字信号总称为“帧”,包括“数据帧”、“远程帧”、“过载帧”、“错误帧”共4种。
数据帧
发送数据时的格式称为“数据帧”。数据帧包括“标准格式”与“扩展格式”两种。
标准格式的帧结构
下面介绍主要用于乘用车的CAN通信的“标准格式”帧结构。
记载的数字分别表示可使用的位长度。上侧线表示隐性,下侧线表示显性,只有显性(或隐性)带线时显性(或隐性)为固定,上下都带线时随着发送数据变化。
- SOF
- 优先从节点发送的部分。因表示开始位置而被称为“SOF(Start Of Frame)”,也用于节点间的同步。
- ID
- 决定数据内容或发送节点的识别、通信调停优先顺序等。标准格式时为11位,扩展格式时为11位+18位共计29位。
- RTR
- 用于识别数据帧与远程帧的“RTR(Remote Transmission Request)”在数据帧时为显性,在远程帧时为隐性。另外,与ID一样,也用于通信调停。
- 控制字段
- 由1位长的“IDE(Identifier Extension)”与保留位“r”、4位长的“数据长度码(DLC)”构成。
- 数据字段
- 发送数据部分称为“数据字段”。依据DLC设定,长度为0到8字节(0到64位长度),分配的数据由设计者决定。
- CRC序列
- 由发送节点运算“SOF”、“ID”、“控制字段”、“数据字段”的发送值,并将结果作为CRC(Cyclic Redundancy Check)序列进行发送。通过接收节点也进行相同运算,判断是否可正常接收。
- CRC分隔符
- 表示CRC序列终止。CRC序列与CRC分隔符统称为“CRC字段”。
- ACK间隙
- 判断是否可正常接收包括发送的CRC字段在内的数据。
- ACK分隔符
- 表示ACK间隙终止。ACK间隙与ACK分隔符统称为“ACK字段”。
- EOF
- 数据帧终止时发送“EOF(End Of Frame)”。
- ITM
- 不包括在数据帧范围内,标记为“ITM(Intermission)”,在ITM后进入总线怠速。在ITM仅能发送“过载帧”。
扩展格式的帧结构
扩展格式与标准格式区别在从ID到RTR的部分。主要用于巴士或卡车等大型车CAN通信的格式。
- 基本ID
- 标准格式的ID在扩展格式中标记为“基本ID”。内容遵照标准格式。
- SRR
- “SRR(Substitute Remote Request Bit)”是1位长度的隐性位。
- IDE
- “IDE(Identifier Extension Bit)”是1位长度的隐性位。
- 扩展ID
- 标准ID11位与扩展ID18位合计为29位长度。关于可识别种类,标准格式为2048种,扩展格式为约540万种。
远程帧
在CAN通信中,以从需要数据的节点发送远程帧后,由持有数据的节点回发数据帧的方式进行通信。远程帧的基本结构为从数据帧删除数据字段(或DLC及数据字段为0字节)的结构,且用于识别的RTR为隐性(在数据帧为显性)。但是,近年来为降低数据占有率,几乎不使用远程帧,而采取定期向各节点发送数据帧的方式。
过载帧
CAN刚出现时针对微型控制器或CAN控制器的处理能力不足的情况,而开发了“过载帧”。主要向来不及处理数据帧的节点发送,发挥延迟发送下一数据帧的作用。
错误帧
是在发生各种通信错误时发送的帧,具有通知CAN网络异常的作用。