yoncho`s blog
FlexRay, 자동차 통신 프로토콜 FlexRay 본문
1.0 FlexRay
차량에서 많은 장치들끼리 통신은 주로 CAN을 통해서 이루어지며,
간단한 통신이 필요한 장치들은 LIN을 통해 이루어진다.
차량 안에 들어가는 장치들간 이루어지는 통신에서 데이터의 양들이
점점 증가하고 한정된 시간에 전송해야할 데이터가 증가하면서
시간 결정과 오류 한계등 관련 수요를 해결해야하는데.
이를 해결하기위해 FlexRay프로토콜이 나타났다.
FlexRay는 내고장성 고속 버스 시스템이다.
x-by-wire App을 위한 오류 허용과 시간 확정 성능을 제공한다.
FlexRay는 Drive-by-Wire, 액티브 서스펜션, 적응 크루즈 컨트롤에 사용된다.
1.1 특징
- X-by-Wire를 위한 LAN 통신차량의 고속 제어를 위한 통신 인프라 제공, 타임 트리거 프로토콜로 주기적 전송되는 데이터 전송 방식을 제공, 최대 10Mbps속도다.
- 고신뢰성 프로토콜완전한 이중화 네트워크 구축 가능, 하드웨어에 의한 스케줄 감시 가능
- 유연한 토폴로지 지원버스형, 스타형, 하이브리드형의 토폴로지 지원
1.2 FlexRay 토폴로지
차량의 레이아웃과 FlexRay사용 정도에 따라 적합한 토폴로지를
선택해서 성능과 안정성을 최적화 할 수 있다.
- 멀티드롭 버스
CAN, LIN과 동일한 토폴로지이다.
여러 ECU들이 단일 네트워크 케이블에 연결되어있다.
네트워크 끝엔 터미네이션 저항기가 있어서, 신호반향 문제를 해결한다.
- 스타 네트워크
FlexRay 표준은 중앙 활성 노드에 개별 연결되는 스타구성을 지원한다.
장거리 실행이 가능하며, 네트워크 한 부분에서 오류가 발생해도 신뢰할 수 있다.
- 하이브리드 네트워크
멀티드롭 버스와 스타 네트워크가 합쳐진 것으로,
편리한 사용과 버스 비용 절감을 위해 하이브리드를
주로 사용할 것이다.
1.3 FlexRay 버스 동작 원리
CAN프로토콜은 CSMA윈칙에 따라 작동한다.
즉, 노드가 버스 상태를 보다가 버스가 유휴(사용가능한)상태면
메시지를 즉시 전송한다.
이렇게되면, 메시지는 우선순위에 의해 충돌은 방지되지만
메시지가 버스 상에 있는 시간은 알 수 없다.
FlexRay는 TDMA(Time Division Multiple Access)원치에 따라
동작한다. 즉, 노드들이 정해진 시간에 메시지를 전송할 수 있는 것이다.
메시지간 충돌은 당연히 예방되며, 메시지가 버스상에 있는 시간 또한
알 수 있게된다.
FlexRay는 시간 결정성과 메시지의 일관성을 보장해준다.
1.4 FlexRay 통신 사이클
FlexRay 통신 사이클(주기)는 Flex통신의 근본이된다.
각 사이클의 시간은 초기 설계 단계에서 정해진다.
일반적으로 1~5ms로, 4개의 필드의 구성된다.
고정된 시간 슬롯에 대한 버스 대역폭의 엄격한 할당은
대역폭을 최대 활용을 할 수 없다는 단점이 있다.
이를 해결하기위해 FlexRay에는
사이클을 정적 세그먼트와 동적 세그먼트로 나눈다.
정적(Static) 세그먼트는 타임 트리거 프레임을 스케줄링하기 위한 영역이다.
여러 슬롯으로 나눠지고, 각 슬롯을 수행할 시점마다 미리 할당된
ECU가 해당 슬롯에 메시지를 전송할 기회를 가진다.
이걸 놓치면 다음 사이클에 기회를 잡아야한다.
즉, 사이클마다 정확하게 어떤 시점에 메시지를 전송할지
정해져있어서 시간 결정적 메시지 전송이 가능한 것이다.
동적(Dynamic) 세그먼트는 시간 슬롯이 역동적으로 할당된다.
여기에는 데이터 우선순위를 정하기 위한 미니슬롯 개념이 들어간다.
미니슬롯은 동적 세그먼트에서 전송 가능한 각 데이터 프레임에
미리 지정되어있으며, 높은 수선순위의 데이터는
동적 세그먼트 시작 가까이에서 미니슬롯을 받는다.
미니슬롯이 발생하면 ECU는 프레임을 브로드캐스트할 수 있는 기회가 생긴다.
여기서 놓치면, 다음 우선 순위 ECU로 기회가 넘어간다.
결국, 동적 세그먼트에서 대역폭은 실제로 필요할 때만 사용된다.
심볼 윈도우(Symbol Window)는 네트워크 유지와 시작을 위한 시그널링에서 사용된다.
네트워크의 정교한 동기화를 위해 네트워크 유휴(IDLE)시간을 측정해
사이클 간 시간을 조정한다.
1.5 FlexRay 프레임 구성
정적 또는 동적 세그먼트 각 슬롯에는 FlexRay프레임이 있다.
프레임은 Header, Payload, Trailer 세그먼트로 구성되어있다.
헤더는 5Bytes(40bits)이다.
- 상태 비트(5bits)
- 프레임 ID (11bits)
- 페이로드 길이 (7bits)
- 헤더 CRC (11bits)
- 주기 카운트 (6bits)
프레임 ID는 정적 세그먼트에서는 전송해야하는 패킷의 슬롯을 나타내며,
동적 세그먼트에서는 해당 패킷의 우선순위를 나타냅니다.
페이로드 길이는 프레임에서 전송되는 문자 개수를 의미하며,
최고 127자 (254Bytes)까지 전송이 가능하다.
CAN에 30배 이상 되는 수치이다.
헤더 CRC는 전송 중 에러를 감지하는데 사용된다.
주기 카운트는 카운트 값이 포함되며, 통신 주기가 시작하는 매 클럭마다 증가한다.
참고
[CAN, LIN, FLEXRAY] fescaro_blog
'기술, 나의 공부를 공유합니다. > [Vehicle] Etc' 카테고리의 다른 글
AutoPi | SaltStack이란? (0) | 2024.09.28 |
---|---|
LIN, 자동차 통신 프로토콜 Local Interconnect Network (0) | 2024.09.28 |