FlexRay — CAN의 우선순위 경쟁으로 인한 지연 문제와 대역폭 한계를 극복하기 위해 개발된 시결정적(deterministic) 차량 네트워크 프로토콜. X-by-Wire 등 고신뢰성 애플리케이션을 목표로 TDMA 기반의 시간 트리거 방식을 채택했다.
개요
- FlexRay 컨소시엄에 의해 2002년 발표 (Freescale, Bosch, NXP, BMW, 폭스바겐 등).
- 최대 10 Mbps 전송률, 최대 254 Byte 페이로드 (CAN은 최대 8 Byte / 500 Kbps).
- TDMA (Time Division Multiple Access) 기반 시결정적 통신.
- CAN의 우선순위 경쟁으로 인한 통신 지연 문제를 해결.
- X-by-Wire 등 안전 중요 기능을 위한 이중화 지원 (2개 채널).
적용 사례
- BMW X5 (2006): FlexRay를 최초로 적용한 양산 차량. Active damping control system에 사용.
- 이후 고급 차량군(AUDI, Bentley, Mercedes-Benz, Rolls-Royce, Land Rover, Volvo XC90 등)에 확산.
시장 한계
FlexRay는 초기 차세대 차량 네트워크로 대두되었으나 일부 OEM에 제한적으로 활용되는 데 그쳤다.
- 기존 CAN과 통신 메커니즘이 달라 SW 개선 부담이 큼 → 개발·검증 비용 증가.
- 주요 OEM 미채택으로 FlexRay 트랜시버 IC 가격 하락이 지연 → 반도체 단가 높음.
- 대안으로 CAN FD가 개발됨 (CAN과 거의 동일한 방식을 유지하면서 속도·페이로드만 확장).
HW 가격 비교 (2500개 기준, 자세한 내용은 자동차 버스 시스템 참조): FlexRay 트랜시버 0.65.
통신 방식: Event Triggered vs Time Triggered
| 구분 | Event Triggered (CAN) | Time Triggered (FlexRay Static) |
|---|---|---|
| 전송 시점 | 원하는 시점에 송신 | 정해진 시간 slot에만 송신 |
| 충돌 해결 | 우선순위 경쟁 (CAN 중재) | 충돌 없음 (슬롯 사전 배정) |
| 지연 시간 | 비결정적 (경쟁 지연) | Deterministic latency (다음 사이클 내) |
| Hard real-time | 제한적 | 지원 |
| 대역폭 활용 | 효율적 | Slot 미전송 시 대역폭 낭비 |
Time Triggered의 단점은 시간 slot 내 전송 마진 확보 필요성으로, 대역폭 낭비가 발생할 수 있다는 점.
Communication Cycle
FlexRay는 통신 사이클을 반복 (일반적으로 2.5~5 ms).
| Segment | 동작 |
|---|---|
| Static segment | Time Triggered. 각 slot은 동일 길이, 특정 ID의 프레임이 전용. Slot N = Frame ID N. |
| Dynamic segment | Event Triggered. 여러 mini-slot로 구성, slot ID가 컨트롤러 ID와 일치하면 송신 가능. Slot 길이 가변. |
| Symbol segment | 네트워크 진단·동기화용 심볼 전송. |
| NIT (Network Idle Time) | 사이클 간 동기 정렬 및 idle 구간. |
Static segment는 우선순위 경쟁이 없어 결정적, Dynamic segment는 CAN과 유사한 Event 기반으로 유연성 제공.
노드 구성
FlexRay ECU는 4개 주요 컴포넌트로 구성된다.
| 컴포넌트 | 역할 |
|---|---|
| Host Controller | CPU (애플리케이션 SW 실행) |
| Communication Controller | 통신 프로토콜 처리, 보통 MCU에 내장 |
| Bus Guardian (Optional) | Time Slot 위배 방지 (오동작 노드의 슬롯 외 전송 차단) |
| Bus Driver | FlexRay 트랜시버, 차동 신호 전송으로 변환 |
Bus Guardian은 ASIL 요구 수준에 따라 선택적으로 탑재 — fail-silent 보장 용도.
Frame Format
FlexRay 프레임은 3개 세그먼트로 구성된다.
- Header segment: 11 + 7 + 11 + 6 bits (프레임 ID, 페이로드 길이, 헤더 CRC, 사이클 카운트 등).
- Payload segment: 0~254 bytes.
- Trailer segment: 24 bits (CRC-24).
총 크기: 5 + (0~254) + 3 Bytes.
Topology
- 2개 채널을 각각 다른 용도로 사용 가능 (예: 이중화, 혹은 별도 네트워크).
- 지원 토폴로지: Passive Bus, Active Star, 두 토폴로지 혼합.
자세한 토폴로지 특성은 네트워크 토폴로지 참조.