CAN(Controller Area Network) Protocol
CAN 프로토콜 특징
- 멀티마스터 프로토콜
- 확장 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)
- 멀티캐스트 프로토콜
- 우선순위 부여 메세지
- 문제 억제
멀티마스터 프로토콜
멀티마스터 프로토콜이란 버스가 사용되지 않을 때(=프리 상태일때)에는 어느 노드든 데이터를 네트워크에 송신할 수 있다는 것이다.
확장 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)
버스가 프리상태 일 때, 복수의 노드가 동시에 네트워크에 데이터를 송신한다는 상황, 즉 경합이 발생할 가능성이 있다. 또한 송신 데이터의 충돌이 발생할 위험성도 있다. 이 문제를 해결하기 위해 CAN의 액세스 방식의 바탕이 되는 CSMA/CD는 복수의 메세지가 경합하여 충돌이 발생할 경우 즉시 송신을 중단하게 된다. 그리고 임의의 시간만큼 기다린 다음 이 동안에 다른 노드에서의 송신이 없는 경우 송신을 재개하게 되어 있다. 그러나 이 CSMA/CD를 그대로 자동차의 제어용 액세스 방식으로 이용하는 데에는 문제가 있다. 그 문제란 '무작위 대기 시간'이며 실시간성을 중시하는 자동차용 창치에는 적절하지 않다. 이 점을 개량한 것이 CAN의 액세스 방식이다.
(또한 경합자체를 없애는 액세스 방법의 하나로 TDM이 있는데 그 대표적인 예로는 FlexRay 프로토콜이 있다
멀티캐스트 프로토콜
멀티캐스트 프로토콜이란 네트워크에 연결되어 있는 모든 노드가 같은 메세지를 수신하고 그 메세지에 대해 각 노드가 조치를 취하는 것을 말한다.
1) 프레임의 시작(SOF : Start Of Frame) : 송신측은 자신이 메세지를 보낼 것을 다른 수신측들에게 알린다.
2) ID(식별자) : 송신측은 반드시 자신의 ID를 말한다.
3) 컨트롤 필드의 데이터 길이 코드(DLC : Data Length Code) : 보낼 것의 길이(시간)을 말한다.
4) 데이터 필드 : DLC에서 정한 크기로 데이터를 송신한다.
5) 인지(ACK : ACKnowledgement) : 송신측에서 보낸 데이터를 수신측이 알아들었고, 그 데이터에 에러가 없을 때 이상이 없다는 대답을 받는다.
6) 프레임 종료(EOF : End Of Frame) : 송신측은 자신이 데이터를 다 보내고 송신을 종료할 것을 알리고 종료한다.
멀티캐스트 프로토콜에서는 위와같은 단계의 과정들을 거치게 되고, 수신측에서는 송신측에서 보낸 데이터프레임을 올바르게 수신하려면 에러를 검출하는 단계도 거쳐야한다.
- 메세지 레벨 : CRC 에러, ACK 에러, 프레임 에러
- 비트 레벨 : 비트 에러, 스태프 에러
이러한 에러가 발생 시 수신측은 송신측에 재송신을 요구할 수 있다.
우선순위 부여 메세지
CAN은 멀티마스터 프로토콜이므로 버스가 프리 상태이면 경합이 발생하고 충돌이 일어날 수도 있다. 그래서 우선순위를 부여함으로써 경합이나 충돌을 방지한다.
CAN에서는 두 개 이상의 노드가 동시에 메세지 송신을 개시했을 때 ID를 사용한 비트마다 우선순위를 나타냄으로써(= 조정, arbitration) 버스 액세스의 충돌을 해결할 수가 있다. 조정 중에 모든 송신기는 송신된 비트의 레벨과 버스를 모니터링한 레벨을 비교한다. 만약 두 레벨이 같으면 송신을 계속 진행하고, 반대로 송신 레벨과 버스 레벨이 다르다면 즉시 송신을 중지한다.
- 메시지의 우선순위에 따라 할당된 유일한 식별자(ID)를 이용해 메시지를 구별함
- CAN BUS 네트워크에 두 개의 노드에서 메시지가 동시에 전송되려고 할 때, 더 높은 우선순위(더 낮은 ID번호)를 가진 노드의 메시지가 먼저 전송됨
문제 억제
노드에 대해 짧은 시간의 장애와 영구적인 문제를 식별하고 결함 노드에 대해 스위치 OFF(이탈)하는 기능이 CAN에는 있다. 이는 CAN 프로토콜의 특징중에 하나인 문제 억제에 해당한다.