본문 바로가기
DSP, MCU/펌웨어

CAN Bus Load 계산

by eteo 2023. 3. 20.

 

Bus load = used capacity / Max capcity 로 계산된다.

 

먼저 worst case의 프레임 bit 수를 알아야하는데, 예를들어 11 bit identifier를 CAN frame을 예시로 계산해보자.

 

Field Name Sub Field Length (bit)
Start of Frame SOF 1
Arbitration Field Identifier 11
RTR 1
Control Field IDE 1
R0 1
DLC 4
Data Field D0-D8 8n
CRC Field CRC 15
CRC Delimiter 1
Ack Field Ack 1
Ack Delimiter 1
End of Frame EOF 7

 

여기에다 추가해야 할 것이 있다.

프레임 사이의 intermission 3 bit 가 있고, SOF부터 CRC(CRC delimiter 제외)까지는 bit stuffing 적용되어서 최악의 경우 (34+8n-1)/4 개의 stuff bits가 붙을 수 있는데 말 그대로 worst case일 뿐이라 보통 20%라고 보면 무방하다.

 

Data를 8byte로 하고, stuff bits를 19로 계산했을 때 worst case의 프레임은 130 bit이다.

 

 

 

 

 

Case 1. bit rate는 500kbps를 사용하고 해당 프레임을 every 100ms 간격으로 전송한다고 가정해보자.

 

500kbps는 한 bit를 전송하는데 2us가 걸린다.

130 bit를 전송하는데 걸리는 시간은 260us이다.

그럼 100ms 시간동안 bus 는 260us동안만 차지될 것이고

260 / 100,000 = 0.0026, 즉 bus load는 0.26%로 계산된다.

 

 

 

 

Case 2. bit rate는 500kbps를 사용하고 해당 프레임을 10ms 간격으로 1프레임, 100ms 간격으로 1프레임, 1000ms 간격으로 1 프레임을 송신한다고 해보자.

 

1초에 111 프레임을 송신한다. bus가 사용되는 시간은 111 * 260us 이다.

28,860 / 1,000,000 = 0.02886, 즉 bus load는 2.886%로 계산된다.

 

 

 

 

Case 3. bit rate는 250kbps를 사용하고, 해당 프레임을 1ms 간격으로 전송한다면 bus load는?

 

1초에 250,000 bit를 전송할 수 있는 capacity를 가지고 있는데 1초에 130,000 bit(130*1000)를 전송한다.

130,000/250,000 = 0.52, 즉 bus load는 52%로 계산된다.

 

 

 

 

공식으로 하면 다음과 같다.

 

worst case transmission time = worst case bits / bandwidth

 

bus load = worst case trasmission time / given period for each message

 

 

 

Extended CAN Frame

 

Stand Classic CAN보다 Arbitration Field에서 20 bit가 더 붙는다고 보면 된다.

 

 

 

 

 

 

CAN FD Frame

 

참고로 CAN FD에선 payload 16 byte 까지는 CRC가 17 bit 사용되고 그보다 큰 20, 24, 32, 48, 64 byte 일 땐 CRC가 21 bit 사용된다.

 

BRS가 사용되는 경우 계산이 조금 더 복잡하다.

 

 

 

 

 

 

 

Reference :

https://en.wikipedia.org/wiki/CAN_bus

https://ieeexplore.ieee.org/document/8338047

https://support.vector.com/