데이터 전송 방법
CAN 통신은 우선순위를 통해 효율적인 통신을 돕는다.
어떻게 우선순위를 결정할까?
CAN 통신에는 우성(dominant) 비트와 열성(recessive) 비트가 있다.
우성 비트 : 논리적인 비트 값 0을 가진다. 예를 들어 전기적으로 신호 값을 강제로 low로 내린다.
열성 비트 : 논리적인 비트 값 1을 가진다. 예를 들어 전기적으로 high 상태에 머물러 있는다.
데이터를 전송하는 노드가 2개 이상일 경우 충돌이 발생할 수 있다.
둘이 동시에 보내는 비트 값이 같으면 문제가 되지 않는다.
두 노드가 서로 동시에 0을 보내면 네트워크상에서 0이 지나가며, 둘 다 1이면 1이 지나간다.
그러나 두 노드가 동시에 보내는 비트가 다르다면 네트워크 상에는 우성 비트인 0이 지나가게 된다.
낮은 CAN ID를 갖는 프레임에게 오류나 지연 없이 데이터를 전송하게 된다.
경쟁에서 진 높은 CAN ID를 갖는 프레임은 우성 메시지의 전송이 끝난 후 6 비트를 전송할 수 있는 시간을 추가로 기다린 후 재전송을 자동으로 시작한다.
위와 같은 방식 덕분에 자동화 시스템에서 CAN 버스는 실시간 우선순위 기반 통신 시스템으로 사랑받고 있다.
아래 예시를 보자.
11 비트 ID CAN 네트워크에 노드 ID 15(00000001111)와 16(00000010000)이 있다.
두 노드가 동시에 메시지를 전송한다고 하자.
두 노드는 먼저 시작 비트를 전송한 후, 노드 ID의 첫 번째 0 여섯 개를 충돌 없이 전송한다.
7번째 비트를 전송할 때, 노드 16은 열성 비트 1을 전송하고 노드 15는 우성 비트 0을 전송한다.
이때 노드 16은 자신이 1을 전송한 것을 알고 있으나, 자신이 CAN 네트워크에서 읽은 값은 0이 된다.
자신이 보낸 값과 네트워크에 있는 값이 다르니 충돌을 감지하고 노드 16은 나머지 메시지들을 더 이상 전송하지 않는다.
반면 노드 15는 아무런 문제 없이 다음 비트들을 전송할 수 있다.
CAN 버스는 40m 이하의 네트워크 길이에서 1Mbps까지 전송할 수 있다.
거리가 멀어지면 전송률은 낮아져서, 500m에서는 125kbps로 전송할 수 있다.
향상된 CAN FD 표준에서는 충돌 해결 이후 즉 노드 ID를 전송한 이후에 데이터 부분은 노드 ID 전송 속도의 10배 정도까지 빠르게 전송할 수 있다.
'프로젝트 > CAN_OBDII' 카테고리의 다른 글
Can Controller, CAN Transceiver (0) | 2022.01.25 |
---|---|
CAN 통신 프레임(Frame) 타입 (0) | 2022.01.25 |
CAN 통신 동작 원리 (0) | 2022.01.25 |
CAN 통신 메시지 구조 (0) | 2022.01.25 |
CAN 규격에 따른 종류 (0) | 2022.01.25 |
댓글