자동차의 전자화가 계속되면서 차량 내부의 다양한 센서, 액추에이터, ECU 등을 연결하는 네트워크 기술의 중요성이 커지고 있다. In-Vehicle Network (IVN)는 차량 내부 통신의 핵심 기술로, 각종 장치가 원활히 통신하도록 한다.
In-Vehicle Network 기술
차량 내부 통신은 속도와 비용, 용도에 따라 다양한 네트워크 기술을 활용한다.
Local Interconnect Network (LIN)
- 특징: 말단의 저속 네트워크 (~20 Kbit/s)
- Single Wire, Single Master(데이터 전송 타이밍을 중앙에서 관리)
- 장점: 단순한 구조와 저비용
- 용도: 창문 제어, 조명 제어 등 자동차 움직임과 상관없는 비핵심 장치
Controller Area Network (CAN)
- 특징: 멀티마스터 기반 고속 네트워크 (~1 Mbit/s)
- Master: Gateway
- CAN에 적용된 Dual Wires는 무게에 영향을 준다
- 장점: 안정적인 실시간 성능과 외부 노이즈에 강한 내성
- 데이터 전달에 시간이 얼마나 소요되는지 계산이 가능하다.
- 하나의 Node는 반드시 전송한다.
- 용도: 차량 제어 시스템의 표준 네트워크
FlexRay
- 특징: CAN보다 고속 (~10 Mbit/s)
- 2006년 BMW X5에 처음 사용되고 2008년 BMW 7 시리즈에 본격 사용
- 전세계적으로 활발하게 사용되지 않고 Automotive Ethernet으로 대체되는 추세
- Automotive Ethernet은 자동차에 최적은 아니지만 속도가 100Mbit/s에 이른다.
- 용도: 고속 제어 응용 (섀시 제어, 에어백 시스템 등)
- 특징: 멀티미디어 데이터 (infortainment) 전송 전용 네트워크
- Automotive Ethernet으로 대체되는 추세
- 용도: 차량의 오디오 및 비디오 데이터 전송
Automotive Ethernet
- 특징: 고속 네트워크 (~100 Mbit/s)
- 기존 이더넷을 차량용으로 개선한 것으로, 2 twisted pairs(와이어 4개)에서 Single twisted pair(와이어 2개)로 변형되어 무게가 절감되었다.
- 장점: 기속 Ethernet 기술의 차량 적용 버전으로, 대용량 데이터를 처리할 수 있다.
- 단점: 대역폭은 크지만 노이즈에 취약하고 예측 가능성이 낮다.
- 모든 Node가 데이터 전송에 실패할 수 있다.
CAN vs Ethernet
CAN | Ethernet |
---|
Topic-based | Address-based |
Node에 주소가 없다. | 각 Node는 MAC Address를 갖는다. |
각 Message는 식별자(topic)를 갖는다. | Packet은 목적지 주소를 가지고 있다. |
모든 Message는 모든 Node에 전달된다. | Packet은 목적한 Node에 전달된다. |
Deterministic Message Arbitration | Non-deterministic random backoff |
CAN의 작동 원리와 구조
CAN의 기본 개념
- 1980년대 BOSCH에서 개발한 serial 통신 기술
- 한 시점에 한 bit만 전송 가능한 직렬 통신
- 멀티마스터 & 멀티캐스팅(모든 노드 간 통신)
- 와이어 길이에 따라 최대 1 Mbit/s 대역폭
- 1초에 1M개의 bit를 구분하는 민감성(bandwidth)를 가져야 한다.
- 100m, 500kbit/s bus가 가장 많이 사용된다.
- 외부 EMI 노이즈에 강하다.
- 실시간 성능(예측 가능성)이 좋다.
- 노드에는 주소가 없고 메시지에 ID(topic)가 있다.
- Pub/Sub 통신 구조를 지원한다.
- CAN 이전에는 중앙 관리 없는 Point-to-Point 통신으로, Bus Arbitration이 필요 없었다.
- CAN은 Bus 기반 통신으로, 중앙 관리가 있고 Bus Arbitration이 필요하다.
CAN 메시지 포맷
- CAN Node Configuration
![](https://velog.velcdn.com/images/hyeon-ii/post/ba902a12-ba15-45a7-a33e-76c85df6aa0d/image.png)
- CAN Node: CAN 통신을 수행하는 단위
- Microcontroller (MCU): 시스템의 중심으로, 데이터를 처리하고 CAN 통신을 관리한다.
- CAN Controller: 데이터를 CAN 통신 형식에 맞게 송신하거나 수신한다.
- MCU가 CAN 통신을 이해하도록 돕는 중간 관리자
- CAN Transceiver
- TX(송신): CAN Controller에서 나온 데이터를 물리적인 CAN 신호(CANH 1, CANL 0)로 변환
- RX(수신): 물리적인 CAN 신호를 다시 데이터로 변환하여 CAN Controller에 전달
- CAN Controller와 실제 물리적인 네트워크 사이의 실시간 통역사
- CAN Controller에서 데이터가 나오면 CAN Transceiver가 이를 변환하여 CAN H와 CAN L을 통해 내보낸다. 이때 수신 측에서는 CAN Transceiver가 CAN H와 CAN L의 신호를 다시 디지털 데이터로 변환한다.
- CAN Wiring
- CAN H와 CAN L은 항상 쌍으로 동작하기 때문에 데이터의 안정성이 향상된다.
- CAN H와 CAN L은 Differential Signaling을 사용한다.
- 입력된 값이 튀면 H와 L 모두 영향을 받으므로 difference는 유지된다.
- 두 voltage의 차이가 없으면 0, 전압 차이가 있으면 1
- CAN Message Format
- 메시지 ID (Arbitration Field): 우선순위를 결정하는 11 Bits
- Data: 최대 8 Bytes
- Signal: 메시지에 포함된 하나의 값으로 factor와 offset고려가 필요하다.
- CAN Bus Arbitration
- 메시지 충돌 시 ID 우선순위에 따라 전송한다.
- ID를 나타내는 11 bits에 1을 보냈는데 다른 노드에서 0이 실리면 해당 노드는 전송을 포기한다.
- Node가 전송을 몇번 실패할 것인지 수학적으로 계산 가능하다.
- 11 bits 모두 0이면 무조건 전송을 성공한다.
- 작은 메시지 ID이면 높은 우선순위를 가진다.
CAN Standards
- CAN 2.0A: 현재 사용하는 포맷
- 11-bit ID로, 전송 가능한 메시지 종류는 2048개
- CAN 2.0B
- 29-bit ID로 전송 가능한 메시지 종류가 매우 많다.
- 트럭이나 버스에서 사용한다.
- CAN FD 1.0
- 메시지 당 64 Bytes의 데이터를 지원한다. (현재의 8배)
- 스펙상 8 Mbit/s를 지원하지만 안정되지 않아 실제 2~5 Mbit/s의 성능을 가진다.
CAN Message & Signal Example
- Steering torque 시그널
- Name: CF_Mdps_StrTq
- Length: 12 Bits
- Byte Order: Intel(Little Endian)
- Factor: 0.01
- 입력값×Factor=0∼40.95
- Offset: -20.48
- 입력값×Factor+Offset=−20.48∼20.47
Vector
Vector
- CAN 설계 및 분석을 전문으로 하는 솔루션 기업
- IVN 구현과 개발 과정에서 널리 사용되는 표준 도구를 제공한다.
- CANoe(시스템 설계 및 시뮬레이션), CANalyzer(네트워크 분석), CANape(ECU 소프트웨어 개발 및 테스트) 등
- ECU에 설치하는 용도가 아닌 테스트, 분석을 위한 tools
CANdb
- Vector에서 개발한 CAN 메시지 구조 정의 파일 포맷
- OEM별로 고유한 CANDB를 정의해서 사용한다.
- 노출되면 해킹에 취약하기 때문에 극비이나 역공학으로 많이 노출된다.
- CANdb++는 CANdb 파일 편집을 위한 소프트웨어로, CANdb를 시각화하는 데 쓰인다.
CAN Access Programming Language (CAPL)
- CAN 프로그래밍을 위한 이벤트 기반 프로그래밍 언어
- C 언어와 유사하지만 사용하기 쉽다.
- ECU 테스트 코드 작성에 사용된다.
- Vector Tools에서 지원한다.