CAN 통신
CAN 통신이란?
Controller Area Network의 약자로, 이는 마이크로컨트롤러와 장비 간 통신이 어떠한 주 컴퓨터 없이 가능하도록 설계되어있다. 해당 프로토콜을 보쉬사에서 1986년에 처음 제안하고 개발됐다. 다른 통신과의 차이점은 버스 타입의 브로드캐스트 형식이라는 것이다. 여기서, 브로드캐스트 형식이라는 것은 정보를 모든 노드에 전달한다는 것이다. 정보를 받는 노드들은 센서가 될 수도 있고 마이크로컨트롤러 혹은 게이트웨이(이더넷이나 USB 케이블을 통해 외부 네트워크와 통신하는 할 수 있는)가 될 수 있다. CAN은 메시지 기반 프로토콜로서, 메시지는 메시지 식별자를 포함하고 이를 통해 우선순위를 결정한다. CAN 네트워크에서는 노드 식별을 할 필요는 없지만, 이것을 네트워크에 삽입하거나 제거하는 것을 아주 쉽게 해준다. 형태는 직렬 반이중 비동기식 형식의 통신 프로토콜이다. 모든 선은 양 끝에 120Ω의 특성 임피던스가 연결된 트위스트 페어이다. 초기에는, 주로 차량 내부 통신에 설계 되어졌는데 현재는 다양한 섹터에서 사용된다. CAN 또한 on-board 진단이 가능하다.
왜 CAN통신인가?
차량에 전자장치가 증가하게 되면서 이를 통제하기 위한 중앙화된 기준 통신 프로토콜의 필요성이 대두되었다. 전자장치의 증가를 일대일 대응, 전선의 증가 다양한 장비가 들어가게 되면서 각 통신 간 호환성에 대한 문제가 발생했고 이를 해결하기 위한 목적으로 만들어진 것 같다.
CAN architecture layer
모두가 알고 있듯이 OSI 계층 모델은 7계층이다. 그러나 CAN architecture layer 같은 경우는 date-link 계층과 물리계층 두개의 계층으로만 이루어져있다.
date-link 계층
해당 layer는 노드 간 통신을 담당한다. 또한, 물리계층에서 발생한 에러를 탐지하고 이를 수정하는 역할을 담당하기도 한다. Data-link layer는 두 개의 Sub-layer로 나뉘어진다.
- MAC: Media Access Control의 약자로 네트워크 내 장치가 어떻게 미디어에 접속하는지 정의하는 것이다. 데이터 캡슐화와 디캡슐화, 오류 감지 및 시그널링을 제공
- LLC: Logical Link Control의 약자로 frame acceptance 필터링, 괴부화 알림, 복구 관리를 담당
CAN Framing
- SOF: Start Of Frame으로 네트워크에 새로운 프레임이 들어왔다는 것을 알려주는 것으로, 1-bit이다.
- Identifier: CAN 2.0A 규격을 바탕으로 11-bits의 메세지 식별자를 사용한다. 일반적으로 메세지 식별자는 데이터 프레임의 우선순위를 설정한다.
- RTR: Remote Transmission Request의 약자로 data frame인지 remote frame 인지 타입을 정의하는 것이고 1-bit이다.
- Control Field
- IDE: Identifier Extension의 약자로 우성 IDE는 11-bit 기본 식별자로 정의하고 열성 IDE는 29-bits 확장 식별자로 정의한다.
- DLC: Data Length Code의 약자로 데이터 필드의 데이터 길이를 정의하고 4-bits이다.
- Data Field: 최대 8 bytes까지의 데이터를 담는 곳이다.
- CRC Field: 데이터 프레임 또한 15-bits의 전송시간 동안 발생하는 붕괴를 보호하는 순환 중복 검사 필드를 포함하고 있다. 전달자는 아마 데이터 프레임을 전송하기 전에 CRC를 계산할 것이다. 수신자 또한 CRC를 생성하여 발신자에게서 받은 CRC와 비교하고 만약 매칭이 안된느 경우, 에러를 발생시킨다.
- ACK Field: 이것은 수신자의 확인 영역이다. 다른 프로토콜들에서 전송된 모든 패킷을 수신한 이ㅎ에 확인을 위한 분리된 패킷을 수신하는데 CAN 프로토콜의 경우에는 확인을 위한 별도의 패킷이 존재하지 않는다.
- EOF: End Of Field의 약자로서, 프레임의 끝으로 알려진 7개의 연속적인 열성 비트를 포함한다.
우리는 이제 CAN 통신을 통해 데이터가 어떻게 전송되는지 확인할 것이다.
CAN 네트워크는 여러개의 CAN 노드들을 구성하고 있다. 위 경우에는 , 우리는 3개의 CAN node를 구성하고 각각 A, B, C로 지정했다. 그리고 각 노드는 Host, Controller, Transceiver로 했다.
- Host: host는 microcontroller 혹은 microprocessor특정한 작업을 하기 위한 어떠한 애플리케이션을 돌리는 것이다. 호스트는 받은 메세지가 무슨 의미를 가지는 지, 다음 메세지를 수신할지 결정한다.
- Controller: CAN 프로토콜에 의해 명시된 커뮤니케이션 기능을 다룬다. 이것은 CAN 메세지들의 전송 및 수신을 트리거한다.
- Transceiver: transceiver는 CAN 버스에 있는 데이터의 송수신을 담당한다. 이는 CAN 버스으로부터 수집된 데이터 스트림을 CAN controller가 이해할 수 있는 데이터 신호로 변환한다.
CAN Topology
CAN Topology는 여러 방면으로 구성되는데, 일반적으로 3개의 topology 형태로 구성된다.
- Line / Bus
- Star
- Ring
위 모든 topology는 각각의 장단점을 가지는데 예를 들어, dual-ring networks를 가진 Ring 형태는 통신 중 하나가 단락되거나 끊어져도 모든 모듈 혹은 노드들이 통신을 지속해 할 수 있다. 그러나 단점으로는 폐쇄적 구성 형태로서 노드 확장에 있어 어려움이 있다.
Line / Bus
모든 노드가 각각의 선으로 연결이 되어 있고 노드 묶음의 양 끝에 Master와 Terminator가 존재한다. 이러한 형태의 네트워크는 topology의 선형 특성으로 공장 바닥에 설치하기 쉬워 조립 설비 공장 같은 산업용 애플리케이션에 있어 적합하다.
또한, 이러한 종류의 네트워크는 일반적으로 길어 (1MBPS 네트워크당 40m, 50KBPS 네트워크당 1,000m) 통신의 품질을 보장하기 위해 양 끝단에 종단 저항기가 필요하다. (제 생각에 종단 저항이기는 역전파를 방지하기 위함이라 생각됩니다)해당 형태의 단점은 어떠한 통신선이 끊어지거나 했을 때, 모든 노드의 통신을 찍어보면서 통신이 고장 난 곳을 찾아내야 한다. 또한, topology를 구성한 이후에 새로운 노드를 추가하는 데 어려움이 있다.
Star
모든 노드가 하나의 Hub에 연결된 형태로 이루어져 있다. Master와 Terminator도 해당 Hub에 연결되어 있어 중앙제어를 하는 데 좋아 자동차나 로봇 애플리케이션에 적합한 네트워크이다.
장점은 topology가 완성된 이후에 노드를 추가 혹은 제거할 때, Hub과 연결만 시켜주면 되기 때문에 확장성에 있어 유리하고 각 노드의 고장이 다른 노드에 영향을 주지 않는다.
단점으로는 Hub에 대한 의존성이 강력해서 Hub에 있어서 문제가 발생하거나 최적화되지 않으면 사용에 있어 문제가 발생할 수 있다.
Ring
해당 topology는 높은 신뢰성과 내구성을 요구하는 위성 산업에 주로 사용되는 형태이다. 내구성에 있어서 dual-ring을 사용하기 때문에 양쪽이 두 개로 연결되어 있다. 또한, 데이터 전송에 있어 전송 속도가 매우 빠르므로 과부하로 인한 중단 같은 성능에 영향을 미치지 않는다.
단점으로는 확장성에 있어 무리가 있고 설치 비용도 많이 든다. 또한, 모든 노드와 통신을 하는 방식으로 연결이 되어있어 민감 정보에 대한 유출 우려가 존재한다.
출처
'IT 톺아보기 > 이런저런 공부' 카테고리의 다른 글
CAN Message (0) | 2023.04.19 |
---|---|
memcpy 사용법 (0) | 2023.04.18 |
멀티 프로세스(Multi Process)란? (0) | 2023.02.01 |
한글 오토마타 만들기 - 3 (0) | 2023.01.18 |
한글 오토마타 만들기 - 2 (0) | 2023.01.18 |