目录
1 Classic CAN/CANFD帧长度
2 Interframe space帧间空间的介绍
2.1 Intermission间歇
2.2 Bus idle总线空闲
2.3 Suspend transmission
3 CANFD总线网络“负载率”计算
3.1 单个帧的“负载率”
3.2 通过CAN DBC/Arxml来计算一个CAN网络的理论“负载率”
4 拓展
END
推荐阅读(单击下方文字即可跳转至对应博文):
【图解CAN总线】-1-CANFD和经典CAN2.0帧结构对比
【图解CAN总线】-2-详述CAN总线电平
【图解CAN总线】-3-详述波特率(Raud Rate)和比特率(Bit Rate)二者的差异
【图解CAN总线】-4-详述CANFD和Classic CAN的Frame帧结构差异
【图解CAN总线】-5-详述Bit Stuffing位填充在CANFD和Classic CAN中的差异
【图解CAN总线】-6-classic CAN 2.0总线网络“负载率”计算
【图解CAN总线】-7-Classic CAN 2.0总线网络“负载率”计算(方法二)
1 Classic CAN/CANFD帧长度
不管是Classic CAN还是CANFD,其帧结构都由以下7个段组成:
— SOF帧起始;
— arbitration field仲裁段;
— control field控制段;
— data field数据段;
— CRC field;
— ACK field;
— EOF.
Classic CAN Standard Frame标准帧(不考虑位填充)共:108Bit
帧起始(1bit)、仲裁段(12bit)、控制段(6bit)、数据段(8×8bit)、循环冗余码段(16bit)、应答段(2bit)和帧结束(7bit)
Classic CAN Extended Frame扩展帧(不考虑位填充)共:128Bit
帧起始(1bit)、仲裁段(32bit)、控制段(6bit)、数据段(8×8bit)、循环冗余码段(16bit)、应答段(2bit)和帧结束(7bit)
CANFD Standard Frame标准帧(不考虑位填充;DLC = 8)共:117Bit
帧起始(1bit)、仲裁段(12bit)、控制段(9bit)、数据段(8×8bit)、循环冗余码段(22bit)、应答段(2bit)和帧结束(7bit)
CANFD Standard Frame标准帧(不考虑位填充;DLC = 64)共:569Bit
帧起始(1bit)、仲裁段(12bit)、控制段(9bit)、数据段(64×8bit)、循环冗余码段(26bit)、应答段(2bit)和帧结束(7bit)
CANFD CAN Extended Frame扩展帧(不考虑位填充;DLC = 8)共:136Bit
帧起始(1bit)、仲裁段(32bit)、控制段(8bit)、数据段(8×8bit)、循环冗余码段(22bit)、应答段(2bit)和帧结束(7bit)
CANFD CAN Extended Frame扩展帧(不考虑位填充;DLC = 64)共:588Bit
帧起始(1bit)、仲裁段(32bit)、控制段(8bit)、数据段(64×8bit)、循环冗余码段(26bit)、应答段(2bit)和帧结束(7bit)
2 Interframe space帧间空间的介绍
Data frame数据帧和remote frame远程帧应通过一个称为interframe space帧间空间的bit field与前面的帧分开,不管是什么类型的帧(data frame数据帧、remote frame远程帧、error frame错误帧、overload frame过载帧)。
注意:
- overload frame过载帧和error frame错误帧的前面不应有interframe space帧间空间;
- 多个overload frame过载帧之间也不应有interframe space帧间空间。
inter-frame space帧间空间应包含bit field:intermission和bus idle time。 对于已经是前一帧的发送方的error-passive node,inter-frame space帧间空间还应包含该节点的suspend transmission time(参见图9和图10)。
图2-1 非前一帧的error-passive或receiver的节点的帧间空间
图2-2 作为前一帧发送方的error-passive node的Interframe space
2.1 Intermission间歇
intermission field应包括三个隐性位。在intermission期间,任何节点不得开始发送data frame数据帧或remote frame远程帧。只允许发出overload条件的信号。
在intermission期间的第三位检测到总线上的显性位应解释为SOF。
2.2 Bus idle总线空闲
bus idle总线空闲期间可以是任意长度。当intermission的第3位被认为是隐性的时,receiver和error active transmitter应将总线识别为空闲。当suspend transmission time的第8位是隐性的时,由error passive transmitter应识别为空闲;或当离开bus integrating state时。当总线处于空闲状态时,任何节点都可以访问总线进行发送。
在发送另一帧的过程中,等待发送的帧,应在intermission后的第1位开始。
在总线空闲时间内检测到总线上的显性位,应解释为SOF。
2.3 Suspend transmission
一个error-passive node,如果是前一帧的发送方,应在intermission后发送8个隐性位后,开始发送另一帧。如果另一个节点在该suspend transmission time内开始发送,则该节点将成为该Data Frame数据帧或Remote Frame远程帧的接收方。
3 CANFD总线网络“负载率”计算
通过第2章我们可以知悉,CAN总线网络正常的发送过程中,帧与帧之间至少有3个隐性位。
根据这些信息,来介绍一种“CANFD总线网络“负载率”计算”的方法。
3.1 单个帧的“负载率”
对Classic CAN Standard Frame标准帧来说,发送一帧实际长度(不考虑位填充;帧间隔3Bit;DLC = 8):
108+3=111Bit;
比特率/波特率 | 一个Bit的位时间 | 单个帧的“负载率” |
250 Kbps | 4000纳秒 | ((111 * 4000纳秒) / 1秒) *100%= 0.0444 % |
500 Kbps | 2000纳秒 | ((111 * 2000纳秒) / 1秒) *100%= 0.0222 % |
1 Mbps | 1000纳秒 | ((111 * 1000纳秒) / 1秒) *100%= 0.0111 % |
对Classic CAN Extended Frame扩展帧来说,发送一帧实际长度(不考虑位填充;帧间隔3Bit;DLC = 8):
128+3=131Bit;
比特率/波特率 | 一个Bit的位时间 | 单个帧的“负载率” |
250 Kbps | 4000纳秒 | ((131 * 4000纳秒) / 1秒) *100%= 0.0524 % |
500 Kbps | 2000纳秒 | ((131 * 2000纳秒) / 1秒) *100%= 0.0262 % |
1 Mbps | 1000纳秒 | ((131 * 1000纳秒) / 1秒) *100%= 0.0131 % |
对CANFD Standard Frame标准帧来说,发送一帧实际长度(不考虑位填充;帧间隔3Bit;DLC = 8;启用BRS位加速):117+3=120Bit
其中:
- 29Bit使用仲裁段波特率:1位SOF段,12位仲裁段,1位IDE,1位FDF,1位R0,1位BRS,2位ACK段,7位EOF段,3位帧间隔;
- 91Bit使用数据段波特率;1位ESI,4位DLC,64位数据段,22位CRC段。
比特率/波特率 | 一个Bit的位时间 | 单个帧内对应段的负载率 |
仲裁段500 Kbps | 2000纳秒 | ((29 * 2000纳秒) / 1秒) *100%= 0.0058 % |
数据段2 Mbps | 500纳秒 | ((91 * 500纳秒) / 1秒) *100%= 0.00455 % |
单个帧的“负载率” | 0.01035% |
对CANFD Standard Frame标准帧来说,发送一帧实际长度(不考虑位填充;帧间隔3Bit;DLC = 64;启用BRS位加速):569+3=572Bit;
其中:
- 29Bit使用仲裁段波特率:1位SOF段,12位仲裁段,1位IDE,1位FDF,1位R0,1位BRS,2位ACK段,7位EOF段,3位帧间隔;
- 543Bit使用数据段波特率;1位ESI,4位DLC,512位数据段,26位CRC段。
比特率/波特率 | 一个Bit的位时间 | 单个帧内对应段的负载率 |
仲裁段500 Kbps | 2000纳秒 | ((29 * 2000纳秒) / 1秒) *100%= 0.0058 % |
数据段2 Mbps | 500纳秒 | ((543 * 500纳秒) / 1秒) *100%= 0.02715 % |
单个帧的“负载率” | 0.03295% |
对CANFD Extended Frame扩展帧来说,发送一帧实际长度(不考虑位填充;帧间隔3Bit;DLC = 8;启用BRS位加速):136+3=139Bit;
其中:
- 48Bit使用仲裁段波特率:1位SOF段,32位仲裁段,1位FDF,1位R0,1位BRS,2位ACK段,7位EOF段,3位帧间隔;
- 91Bit使用数据段波特率;1位ESI,4位DLC,64位数据段,22位CRC段。
比特率/波特率 | 一个Bit的位时间 | 单个帧内对应段的负载率 |
仲裁段500 Kbps | 2000纳秒 | ((48 * 2000纳秒) / 1秒) *100%= 0.0096 % |
数据段2 Mbps | 500纳秒 | ((91 * 500纳秒) / 1秒) *100%= 0.00455 % |
单个帧的“负载率” | 0.01415% |
对CANFD Extended Frame扩展帧来说,发送一帧实际长度(不考虑位填充;帧间隔3Bit;DLC = 64;启用BRS位加速):588+3=591Bit;
其中:
- 48Bit使用仲裁段波特率:1位SOF段,32位仲裁段,1位FDF,1位R0,1位BRS,2位ACK段,7位EOF段,3位帧间隔;
- 543Bit使用数据段波特率;1位ESI,4位DLC,512位数据段,26位CRC段。
比特率/波特率 | 一个Bit的位时间 | 单个帧内对应段的负载率 |
仲裁段500 Kbps | 2000纳秒 | ((48 * 2000纳秒) / 1秒) *100%= 0.0096 % |
数据段2 Mbps | 500纳秒 | ((543 * 500纳秒) / 1秒) *100%= 0.02715 % |
单个帧的“负载率” | 0.03675% |
3.2 通过CAN DBC/Arxml来计算一个CAN网络的理论“负载率”
如果已知一个CAN总线网络所有CAN ID的DBC/Arxml,并且知道它们的发送方式,我们可以粗略地估算出CANFD总线网络的“负载率”:CANFD总线负载率是各个帧占用总线带宽百分比之和。
下面以比特率/波特率:仲裁段500kbps,数据段2Mbps为例(不考虑位填充;帧间隔3Bit):
Num | CAN ID | 发送周期 | 帧类型 | DLC | 对应帧一秒内的负载率 |
1 | 0x115 | 10ms | 经典CAN标准帧 | 8 | (1000ms / 10ms)* 0.0222 % = 2.22% |
2 | 0x217 | 20ms | 经典CAN扩展帧 | 8 | (1000ms / 20ms)* 0.0262 % = 1.31% |
3 | 0x3B4 | 10ms | CANFD标准帧 | 8 | (1000ms / 10ms)* 0.01035% = 1.035% |
4 | 0x475 | 20ms | CANFD扩展帧 | 64 | (1000ms / 20ms)* 0.03295% = 1.6475% |
5 | 0x211 | 10ms | CANFD标准帧 | 8 | (1000ms / 10ms)* 0.01415% = 1.415% |
6 | 0x311 | 20ms | CANFD扩展帧 | 64 | (1000ms / 20ms)* 0.03675% = 1.8375% |
… | … | … | … | … | |
CANFD总线网络的理论“负载率” | 9.465 % +… |
4 拓展
如果有一个已知的CAN Trace Log,我们也可以按照上述的方法,统计1秒以内发送的帧数,来粗略计算该1秒以内的CANFD总线网络负载率。
推荐阅读(单击下方文字即可跳转至对应博文):
《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...
《Autosar_BSW高阶配置》总目录_培训教程持续更新中...
《Autosar_MCAL高阶配置》总目录_培训教程持续更新中...
END
获取更多“汽车电子资讯”和“工具链使用”,
请关注“汽车电子助手”,做您的好助手。