자동차가 지속적으로 안전을 개선하고 성능을 증대하며 환경 영향을 줄이고 승차감을 향상시키기 위해서는 반드시 자동차 ECU간 통신되는 데이터의 속도, 양 그리고 안정성이 증대되어야 합니다. 고급 컨트롤 및 안전 시스템 (여러 개의 센서, 액추에이터, ECU 통합)은 기존의 표준인 CAN이 제공하는 것보다 월등한 동기화와 성능을 요구합니다. 5개의 개별 CAN 버스를 활용하는 고급 차량에서 더욱 높은 대역폭이 요구됨에 따라 차세대 임베디드 네트워크가 필요하게 되었습니다. OEM 업체, 툴 공급업체, 최종 사용자들과 수 년간의 협력을 통해 FlexRay 표준은 차세대 차량의 새로운 문제점을 처리할 수 있는 in-vehicle 통신 버스로 부상하였습니다.
자동차와 같은 복합 임베디드 디자인에 새로운 네트워크 표준을 채택되기 위해서는 많은 시간이 소요됩니다. FlexRay가 현재의 고급 in-vehicle 네트워크 문제와 미래의 주요 in-vehicle 네트워크 문제를 해결하게 되겠지만, 다른 두 가지 지배적인 in-vehicle 표준인 CAN과 LIN을 대체하지는 못할 것입니다. 비용을 최적화하고 전환시 문제를 줄이기 위해 차세대 자동차는 고급 어플리케이션을 위한 FlexRay, 주요 파워트레인 통신을 위한 CAN 그리고 저가형 차체 전자기기를 위한 LIN을 포함하게 될 것입니다.
버스 | LIN | CAN | FlexRay |
속도 | 40 kbit/s | 1 Mbit/s | 10 Mbit/s |
비용 | $ | $$ | $$$ |
와이어 | 1 | 2 | 2 또는 4 |
일반 어플리케이션 | 차체 전자기기 (미러, 파워 시트, 액세서리) | 파워트레인 (엔진, 변속기, ABS) | 고성능 파워트레인, 안전 (Drive-by-wire, 액티브 서스펜션, 적응 크루즈 컨트롤) |
FlexRay 작동 방식을 이해하는 것은 차량 디자인과 제조의 모든 과정에 있어 중요합니다. 본 문서는 FlexRay의 주요 개념을 설명합니다.
FlexRay는 비용을 낮추고 견고한 환경에서 최상의 성능을 구현하도록 제작되었습니다. FlexRay는 차폐되지 않은 트위스트 쌍 케이블을 사용하여 노드를 연결합니다. FlexRay는 각각 하나 또는 두 개의 쌍으로 구성된 단일 및 듀얼 채널 구성을 지원합니다. 각 와이어 쌍에 대한 차동 신호는 많은 비용이 드는 차폐 없이도 네트워크 외부 노이즈의 영향을 줄입니다. 또한 대부분의 FlexRay 노드에는 일반적으로 트랜시버와 마이크로프로세서에 전원을 공급하기 위해 전원과 접지 와이어가 있습니다.
듀얼 채널 구성은 향상된 내고장성 (fault-tolerance)과/또는 개선된 대역폭을 제공합니다. 대부분의 1세대 FlexRay 네트워크는 케이블 연결 비용을 줄이기 위해 단 하나의 채널만을 활용하지만, 어플리케이션의 복합성과 안전 조건이 까다로워짐에 따라 미래의 네트워크는 두 개 채널을 사용해야 합니다.
FlexRay 버스는 끝 부분에 터미네이션 (신호 와이어 쌍간 연결된 저항기의 형태)이 필요합니다. 멀티드롭 버스의 끝 노드만이 터미네이션이 필요합니다. 너무 과도하거나 충분하지 않은 터미네이션은 FlexRay 네트워크에 손상을 줍니다. 특정한 네트워크 실행이 각각 다양하지만, 일반적인 FlexRay 네트워크에는 80 ~ 110 ohms의 케이블 연결 임피던스가 있으며 끝 노드는 임피던스 매치를 위해 터미네이트됩니다. 터미네이션으로 인해 흔히 FlexRay 노드를 테스트 설정에 연결할 때 차질이 생기는 경우가 발생합니다. 현대의 PC 기반 FlexRay 인터페이스는 케이블 연결을 간소화하기 위해 온보드 터미네이션 저항기를 포함하기도 합니다.
FlexRay, CAN, LIN이 기존의 이더넷 네트워크와 차별되는 요소는 바로 토폴로지, 즉 네트워크 레이아웃입니다. FlexRay는 간단한 멀티드롭 수동 연결과 더욱 복합적인 네트워크를 위한 액티브 스타 연결을 지원합니다. 차량의 레이아웃과 FlexRay 사용 레벨 정도에 따라 적합한 토폴로지를 선택하면 설계자들이 디자인의 비용과 성능 그리고 안정성을 최적화하는 데 도움이 됩니다.
FlexRay는 여러 ECU를 연결하는 단일 네트워크 케이블 길이를 갖춘 간단한 멀티드롭 버스 토폴로지에 일반적으로 사용됩니다. 이것은 CAN과 LIN에 사용되는 동일한 토폴로지이며 OEM 업체에 익숙한 형태이므로 1세대 FlexRay 차량에 보편적인 토폴로지입니다. 각 ECU는 버스의 코어 "줄기"로부터 단거리 정도로 "분기"할 수 있습니다. 네트워크의 끝에는 설치된 터미네이션 저항기가 있으므로 신호 반향 문제를 없애줍니다. CAN의 1 Mbit와 비교하여 FlexRay는 최고 10 Mbit/s의 고주파수에서 작동하므로, FlexRay 설계자들은 정확하게 터미네이션하고 네트워크를 레이아웃하여 신호 무결성 문제를 극복하는 데에 더욱 신경을 쓰게 됩니다. 그리고 멀티드롭 포맷은 유사한 레이아웃 유형을 공유하는 차량 하네스에 적합하므로, 설치가 간단할 뿐 아니라 케이블 연결을 줄일 수 있습니다.
FlexRay 표준은 중앙 활성 노드에 연결되는 개별 링크로 구성된 "스타" 구성을 지원합니다. 본 노드는 PC 이더넷 네트워크에서 볼 수 있는 허브와 기능적으로 유사합니다. 능동 스타 구성을 통해 장거리에서 FlexRay 네트워크의 실행이 가능하며, 또한 네트워크 분할이 가능하므로 네트워크 한 부분이 오작동할 경우에도 신뢰할 수 있습니다. 스타의 브랜치 중 하나가 절단되거나 짧아질 경우에도 다른 브랜치는 기능을 지속합니다. 와이어가 길게 뻗은 곳에서는 대형 전기 모터로부터의 전자기 방출 등 더욱 많은 환경 노이즈가 발생되므로, 여러 개의 브랜치를 사용하면 각 부분에 노출된 케이블 양을 줄이고 노이즈 면역을 증대할 수 있습니다.
버스 및 스타 토폴로지가 통합되어 하이브리드 토폴로지를 형성합니다.
미래의 FlexRay 네트워크는 편리한 사용과 버스 토폴로지의 비용 장점을 위해 하이브리드 네트워크로 구성될 것이며, 또한 차량에서 필요시에 스타 네트워크의 성능과 안정성을 적용하게 될 것입니다.
FlexRay 프로토콜은 데이터가 예측가능한 시간 프레임 (마이크로초)에 도달하는 결정성있는 데이터를 위한 옵션을 제공할 뿐 아니라, 대형의 다양한 프레임을 처리하기 위해 CAN 방식의 다이나믹 이벤트 구동 데이터에 대한 옵션을 제공하는 고유한 time-triggered 프로토콜입니다. FlexRay는 정적 및 동적 데이터를 위해 미리 정의된 공간을 제공하는 미리 설정된 통신 주기를 통해 코어 정적 프레임과 동적 프레임의 하이브리드 (혼합)를 구현합니다. 이같은 공간은 네트워크 설계자가 구성합니다. CAN 노드는 통신을 위해 정확한 전송 (baud) 속도만 알면 되었지만, FlexRay 네트워크의 노드는 통신을 위해 네트워크의 모든 부분이 어떻게 구성되는지 반드시 알아야 합니다.
모든 멀티드롭 버스에서와 마찬가지로, 단 하나의 노드만이 한번에 데이터를 전기적으로 버스에 작성할 수 있습니다. 두 개의 노드가 동시에 작성되면 버스에 경쟁이 발생하고 데이터가 손상됩니다. 버스에서 경쟁을 방지하기 위한 다양한 구조가 있습니다. 예를 들어, CAN은 중재 구조하에서 높은 우선순위의 메시지가 버스에 보내지면 노드는 다른 노드에 양보합니다. 본 기술은 유연성있고 확장이 편리하지만 매우 높은 데이터 속도가 가능하지 않으며 데이터의 시간 내 도착여부를 보장할 수 없습니다. FlexRay는 시분할 다중 접속 (TDMA) 구조로 여러 노드를 관리합니다. 모든 FlexRay 노드는 동일 클럭에 동기화되며 각 노드는 버스에 작성하는 순서를 기다립니다. 타이밍은 TDMA 구조에서 일관적이므로, FlexRay는 결정성 또는 네트워크의 노드에 제공되는 데이터의 일관성을 보장합니다. 이는 노드간 최신 데이터에 의존하는 시스템을 위해 여러가지 장점을 제공합니다.
임베디드 네트워크는 폐쇄 구성이 있고 생산 제품에서 한번 조립되면 변경되지 않는다는 점에서 PC 기반 네트워크와 다릅니다. 이 같은 이유로 런타임의 디바이스를 자동 탐색하고 구성하는 데 추가적인 매커니즘이 필요하지 않습니다. 이는 마치 PC가 새로운 유무선 네트워크에 연결되었을 때와 유사합니다. 네트워크 구성을 예상 일정보다 빠르게 설계하게 되면, 네트워크 설계자들은 막대한 비용을 절감할 수 있고 네트워크의 안정성을 증대할 수 있습니다.
FlexRay와 같은 TDMA 네트워크가 적절히 작동하기 위해서는 모든 노드가 반드시 정확하게 구성되어야 합니다. FlexRay 표준은 다른 유형의 네트워크에 적용 가능하고, 네트워크 설계자들은 네트워크 업데이트 속도, 결정성있는 데이터 양 그리고 다른 파라미터 중 동적 데이터의 양 사이에 절충이 필요합니다. 모든 FlexRay 네트워크가 다를 수 있으므로 각 노드는 반드시 버스 이전에 적합한 네트워크 파라미터로 프로그래밍되어야 합니다.
노드간 네트워크 구성을 원활하게 유지하기 위해서 FlexRay 위원회는 엔지니어링 과정에서 이 같은 파라미터의 저장 및 전송 포맷을 표준화하였습니다. FIBEX (Field Bus Exchange Format) 파일은 ASAM 정의된 표준이며, 네트워크 설계자, 프로토타이핑, 검증 및 테스터들이 네트워크 파라미터를 편리하게 공유하고 ECU, 테스트 툴, HIL (hardware-in-the-loop) 시뮬레이션 시스템 등을 신속하게 구성하여 버스에 편리하게 액세스할 수 있습니다.
FlexRay 통신 주기는 FlexRay 내에서 미디어 액세스 구조의 근본적인 요소입니다. 네트워크가 설계되었을 때 주기의 기간은 고정되었지만, 일반적으로 1-5 ms 정도입니다. 통신 주기에는 4가지 주요 부분이 있습니다.
그림 1: 통신 주기
그림 2: FlexRay 매크로틱 (macrotick)의 세부사항
FlexRay 네트워크의 가장 작은 실용성있는 시간 단위는 매크로틱(macrotick)입니다. FlexRay 컨트롤러는 스스로 능동적으로 동기화하며 로컬 클럭을 조정하므로 매크로틱이 네트워크에서 모든 노드에 대해 동일 지점에서 발생합니다. 매크로틱이 특정 네트워크에 대해 구성 가능하지만, 보통은 1 마이크로초입니다. 매크로틱이 동기화되므로 매크로틱에 의존하는 데이터 또한 동기화됩니다.
그림 3: 데이터를 4개의 확보된 슬롯으로 전송하는 3개의 ECU가 있는 정적 세그먼트
프레임의 파란색 부분으로 표시된 정적 세그먼트는 여러 time-triggered 프레임 스케쥴링에 전용인 주기의 공간입니다. 세그먼트는 슬롯으로 나누어지며 각 슬롯은 확보된 데이터 프레임을 보유합니다. 각 슬롯이 시간 내에 발생하면 확보된 ECU는 본 슬롯으로 데이터를 전송할 기회를 가집니다. 일단 그 시간이 지나면 ECU는 반드시 슬롯에서 데이터를 전송하기 위해 다음 주기까지 기다려야 합니다. 주기에서 시간 내의 정확한 포인트가 알려져 있으므로 데이터는 결정성있으며 프로그램은 데이터가 얼마나 오래된 것인지 정확하게 파악합니다. 이는 일관성있는 공간 데이터에 의존하는 컨트롤 루프를 계산할 때 매우 유용합니다. 그림 3은 3개의 ECU가 사용하는 4개의 정적 슬롯이 있는 간단한 네트워크입니다. 실제 FlexRay 네트워크는 최대 수십 개의 정적 슬롯을 포함할 수 있습니다.
그림 4: ECU #2가 없는 정적 슬롯
ECU가 오프라인이거나 데이터를 전송하지 않게 되면, 슬롯은 개방된 채로 유지되며 다른 ECU가 사용하지 않습니다. (그림 4 참고)
그림 5: 데이터를 전송하는 하나의 ECU가 있는 FlexRay 다이나믹 슬롯
대부분의 임베디드 네트워크는 적은 수의 고속 메시지와 다량의 저속이면서 중요도가 떨어지는 네트워크를 보유합니다. 과도한 수의 정적 슬롯에서 FlexRay 주기의 속도를 떨어뜨리지 않은 채 광범위한 데이터를 수용하기 위해서 동적 세그먼트는 전송된 데이터를 허용할 때도 있습니다. 세그먼트는 고정된 길이이므로, 주기당 동적 세그먼트에 배치되는 고정된 데이터량에 대한 제한이 있습니다. 데이터의 우선순위를 정하기 위해, 미니슬롯 (minislot)은 동적 세그먼트에서 전송 가능한 각 데이터 프레임에 미리 지정되어 있습니다. 미니슬롯은 일반적으로 매크로틱 (마이크로초) 길이입니다. 높은 우선순위의 데이터는 동적 프레임의 시작 가까이에서 미니슬롯을 받습니다.
미니슬롯이 발생하면 ECU는 프레임을 브로드캐스트하는 간략한 기회가 있습니다. 브로드캐스트를 하지 않을 경우 동적 프레임의 공간을 잃게 되고 다음 미니슬롯이 발생합니다. 본 과정은 ECU가 데이터를 브로드캐스트 하도록 선택할 때까지 미니슬롯을 따라 이동합니다. 데이터가 브로드캐스트되면, 미래의 미니슬롯은 ECU가 데이터 브로드캐스트를 완료할 때까지 반드시 기다려야 합니다. 동적 프레임 윈도우가 종료되면, 그 후 낮은 우선순위의 미니슬롯은 다음 주기의 브로드캐스트 기회까지 반드시 기다려야 합니다.
그림 6: 미니슬롯에서 ECU 2 및 3 브로드캐스팅을 나타내며, 낮은 우선순위 미니슬롯에 대한 시간을 남기지 않습니다.
그림 5는 첫 번째 7개 미니슬롯이 브로드캐스트하지 않도록 선택되었으므로 미니슬롯에서 ECU #1 브로드캐스팅을 나타냅니다. 그림 6은 첫 번째 두 개의 미니슬롯을 사용한 ECU #2와 #3이며, ECU#1이 브로드캐스트할 시간을 남기지 않습니다. ECU #1은 반드시 다음 주기까지 기다려야 합니다.
동적 세그먼트의 최종 결과는 CAN에서 사용되는 중재 구조와 유사합니다.
심볼 윈도우는 cold-start 주기와 같은 특수 주기의 유지와 파악에 주로 사용됩니다. 대부분의 하이 레벨 어플리케이션은 심볼 윈도우와 연동하지 않습니다.
네트워크 비작동 시간은 미리 정의된 ECU가 알고 있는 길이입니다. ECU는 이전 주기 중에 일어났을 수도 있는 드리프트에 대해 조정을 가할 수 있도록 본 비작동 시간을 사용합니다.
FlexRay 네트워크는 단일 또는 듀얼 채널 통신을 허용함으로써 확장가능한 내고장성 (fault-tolerance) 기능을 제공합니다. 보안이 중요한 어플리케이션의 경우, 버스에 연결된 디바이스는 데이터 전송을 위해 두 개의 채널을 모두 사용할 수 있습니다. 그러나, 중복이 필요하지 않을 경우 단 하나의 채널에만 연결할 수도 있으며 또는 비중복 데이터를 전송하기 위해 두 개의 채널을 사용하여 대역폭을 늘리는 방법도 있습니다.
물리 레이어 내에서, FlexRay는 신속한 에러 탐지와 시그널링을 제공하며, 또한 독립 Bus Guardian을 통해 에러 봉쇄 기능을 제공합니다. Bus Guardian은 물리 계층의 매커니즘으로 클러스터의 통신 스케쥴과 정렬되지 않은 통신이 야기하는 방해로부터 채널을 보호합니다.
그림 7: FlexRay 프레임의 세부사항
정적 또는 동적 세그먼트의 각 슬롯에는 FlexRay 프레임이 있습니다. 프레임은 Header, Payload, Trailer의 세 가지 세그먼트로 나뉘어집니다.
그림 8: FlexRay 프레임을 비트 레벨로 나눔
헤더는 5 바이트 (40 비트) 길이이며 다음과 같은 필드를 포함합니다.
프레임 ID는 프레임이 전송되어야 하는 슬롯이며, 이벤트 트리거 프레임을 우선순위화하는 데 사용됩니다. 페이로드 길이는 프레임에서 전송되는 문자 개수를 포함합니다. 헤더 CRC는 전송 중 에러를 감지하는 데 사용됩니다. 주기 카운트에는 카운터의 값이 포함되며, 통신 주기가 시작하는 각 시간마다 증가합니다.
그림 9: FlexRay 프레임의 페이로드
페이로드에는 프레임이 전송하는 실제 데이터가 포함됩니다. FlexRay 페이로드 또는 데이터 프레임의 길이는 최고 127자 (254 바이트)이며 이는 CAN과 비교하여 30배 이상의 수치입니다.
그림 10: FlexRay 프레임의 트레일러
트레일러에는 에러 감지를 위한 세 개의 8-비트 CRC가 있습니다.
그림 11: 프레임-신호 변환
FlexRay 데이터는 바이트로 표현됩니다. 대부분의 어플리케이션은 데이터가 유닛, 스케일링, 리미트 등으로 실제 10진 값으로 표현되어야 합니다. FlexRay 프레임으로부터 하나 또는 그 이상의 비트/바이트를 채택하고, 스케일링 및 오프셋을 적용하면 ECU간 실제 파라미터 통신에 유용한 신호를 얻을 수 있습니다. 대부분의 ECU 프로그램은 FlexRay 데이터를 신호로 작동하며, 원시 프레임 데이터로의 신호 변환을 드라이버 또는 로우 레벨 통신 프로토콜에 맡깁니다.
일반 차량에는 수 백에서 수 천개의 신호가 있습니다. 이 같은 신호의 스케일링, 오프셋, 정의, 위치가 바뀔 수 있으므로, FlexRay 네트워크는 네트워크를 정의하는 FIBEX 데이터베이스에 본 정의를 저장합니다. 이를 통해 FlexRay 네트워크에 대한 프로그램을 작성하는 것이 편리해집니다. 설계자들이 코드에서 신호명을 간단하게 참조할 수 있기 때문입니다. 그 후 컴파일러나 드라이버는 프로그램이 ECU 또는 테스트 시스템에 대해 업데이트될 때 가장 최신 스케일링 및 오프셋 정보를 추출합니다.
그림 12: FlexRay 네트워크의 간략한 동기화 과정
FlexRay에는 외부 동기화 클럭 신호 없이 네트워크에서 노드를 동기화하는 고유한 기능이 있습니다. 이를 위해 스타트업 프레임 및 동기 프레임의 두 가지 특수 프레임 유형을 사용합니다. FlexRay 클러스터를 시작하기 위해 최소 2개의 다른 노드를 스타트업 프레임에 보내야 합니다. FlexRay 버스를 시작하는 동작은 cold-start로 알려져 있으며 스타트업 프레임을 보내는 노드는 cold-start 노드입니다. 스타트업 프레임은 네트워크의 모든 노드가 시작하도록 지시하는 시작 트리거와 유사합니다.
일단 네트워크가 시작되면 모든 노드는 네트워크의 매크로틱에 대해 반드시 내부 오실레이터를 동기화해야 합니다. 이는 두 개 이상의 동기화 노드를 사용하여 진행됩니다. 이는 특수 동기화 프레임이 최초로 켜졌을 때 브로드캐스트하도록 미리 설계된 네트워크의 모든 두 개의 개별 노드가 될 수 있습니다. 네트워크의 다른 노드는 동기화 프레임이 브로드캐스트되도록 대기하고, FlexRay 시간에 대한 내부 클럭을 교정하기 위해 연속적인 브로드캐스트간 시간을 측정할 수 있습니다. 동기화 프레임은 네트워크를 위한 FIBEX 구성에서 설계됩니다.
네트워크가 동기화되고 온라인일 때, 네트워크 비작동 시간 (다이어그램의 흰색 부분)은 cycle-to-cycle의 클럭을 조정하기 위해 측정되고 사용되어 긴밀한 동기화를 구현합니다.
그림 13: 단일 FlexRay 주기에서 4개 바퀴의 위치를 읽고 차량 컨트롤 출력을 업데이트하는 In-cycle 컨트롤
FlexRay의 고급 기능은 in-cycle 컨트롤 기능입니다. 그림 13은 프레임의 정적 슬롯에서 4개 바퀴 위치가 브로드캐스트되는 예입니다. 바퀴 위치는 중앙 컨트롤러 #5의 최종 명령 이전에 발생하므로, 컨트롤러에는 동일한 통신 주기 내에서 처리할 시간과 신속한 출력을 할 시간이 있습니다. 이를 통해 매우 고속인 컨트롤 속도가 FlexRay 네트워크에서 실현됩니다.
ASAM 컨소시엄에서 정의된 XML 기반 표준화된 파일 포맷인 FIeld Bus EXchange (FIBEX) 포맷은 자동차 네트워크를 설명하는 데 사용됩니다. FlexRay 네트워크를 위한 표준 포맷인 FIBEX 데이터베이스 포맷은 여러 자동차 프로토콜과 호환되므로 유연성있는 표준이 됩니다. FIBEX 데이터베이스는 일반적으로 차량 네트워크 설계자들이 생성하며 차량의 측정 부분을 작업하는 엔지니어들과 공유됩니다. FIBEX 파일과 PC 인터페이스 또는 ECU로 인터페이스와 신호 정의를 수작업으로 구성할 필요없이 차량 네트워크와 편리하게 연동할 수 있습니다.
FIBEX에는 다음과 같은 특정 네트워크의 여러 요소가 포함됩니다.
FIBEX에 대한 자세한 정보는 FIBEX 소개 문서를 참조하십시오.
내쇼날인스트루먼트는 PC를 FlexRay 네트워크에 연결하기 위한 고성능 PCI 및 PXI FlexRay 인터페이스를 제공합니다. PC 기반 인터페이스를 이용하여 FlexRay 활성화된 ECU에서 다음과 같은 여러 엔지니어링 태스크를 수행할 수 있습니다.
NI FlexRay 인터페이스에 대한 자세한 정보는 NI-XNET FlexRay 플랫폼 소개를 참조하십시오.
FlexRay 통신 네트워크는 차세대 자동차를 위한 결정성있는 내고장성 및 고속 버스 시스템 성능 요구를 만족합니다.
관련 링크: