FlexRay — это протокол автомобильной сетевой связи , разработанный консорциумом FlexRay для управления бортовыми автомобильными вычислениями. Он разработан, чтобы быть быстрее и надежнее, чем CAN и TTP , но он также более дорогой. Консорциум FlexRay распался в 2009 году, но стандарт FlexRay теперь представляет собой набор стандартов ISO, ISO 17458-1 [1] по 17458-5. [2] [3]
FlexRay — это коммуникационная шина, разработанная для обеспечения высокой скорости передачи данных, отказоустойчивости, работающая по временному циклу, разделенная на статические и динамические сегменты для событийно- и временно-активируемых коммуникаций. В основном используется в авиационной и автомобильной промышленности.
FlexRay поддерживает скорость передачи данных до 10 Мбит/с , явно поддерживает как звездообразную, так и шинную физические топологии и может иметь два независимых канала данных для отказоустойчивости (связь может продолжаться с уменьшенной полосой пропускания, если один канал не работает). Шина работает по временному циклу, разделенному на две части: статический сегмент и динамический сегмент. Статический сегмент предварительно выделяется на срезы для отдельных типов связи, обеспечивая более сильный детерминизм, чем его предшественник CAN . Динамический сегмент работает больше как CAN, с узлами, берущими под контроль шину по мере ее доступности, что позволяет поведение, запускаемое событиями. [4]
Консорциум FlexRay состоял из следующих основных членов:
Были также Premium Associate и Associate-члены консорциума FlexRay. К сентябрю 2009 года было 28 premium associated-членов и более 60 associated-членов. В конце 2009 года консорциум распался.
Первый серийный автомобиль с FlexRay появился в конце 2006 года в BMW X5 (E70) [5] , что позволило использовать новую и быструю адаптивную систему демпфирования. Полное использование FlexRay было введено в 2008 году в новом BMW 7 серии (F01) .
Система FlexRay состоит из шины и электронных блоков управления (ЭБУ). Каждый ЭБУ имеет независимые часы. Дрейф часов должен быть не более 0,15% от опорных часов, поэтому разница между самыми медленными и самыми быстрыми часами в системе не должна превышать 0,3%.
Это означает, что если ECU-s является отправителем, а ECU-r является получателем, то на каждые 300 циклов отправителя будет приходиться от 299 до 301 цикла получателя. Часы ресинхронизируются достаточно часто, чтобы гарантировать, что это не вызовет проблем. Часы отправляются в статическом сегменте. [15]
Корректное усреднение в случае отсутствия ошибок. Сигнал просто задерживается на 2 цикла. | ||||||||||||||||||||||||||||||||||||
Ошибки около середины 8-цикловой области аннулируются. | ||||||||||||||||||||||||||||||||||||
Ошибки вблизи границы 8-тактовой области могут повлиять на граничный бит. |
В каждый момент времени только один ECU записывает данные на шину . Каждый бит, который должен быть отправлен, удерживается на шине в течение 8 циклов тактовой частоты выборки. Приемник сохраняет буфер из последних 5 выборок и использует большинство из последних 5 выборок в качестве входного сигнала.
Ошибки передачи одного цикла могут повлиять на результаты вблизи границы битов, но не повлияют на циклы в середине 8-цикловой области.
Значение бита выбирается в середине 8-битной области. Ошибки перемещаются в крайние циклы, а часы синхронизируются достаточно часто, чтобы дрейф был небольшим. (Дрейф меньше 1 цикла на 300 циклов, а во время передачи часы синхронизируются чаще, чем один раз на 300 циклов.)
Вся коммуникация отправляется в виде кадров. Сообщение состоит из байтов , упакованных следующим образом:
Если передача данных не осуществляется, шина удерживается в состоянии 1 (высокое напряжение), поэтому каждый приемник знает, что передача данных началась, когда напряжение падает до 0.
Получатель узнает, когда сообщение завершено, проверив, получено ли BSS0 (1) или FES (0).
Обратите внимание, что 8 циклов на бит не имеют ничего общего с байтами. Для передачи каждого байта требуется 80 циклов. 16 для BSS0 и BSS1 и 64 для его битов. Также обратите внимание, что BSS0 имеет значение 1, а BSS1 имеет значение 0.
Синхронизация часов выполняется повторно, когда голосующий сигнал изменяется с 1 на 0, если приемник находился в состоянии ожидания или ожидал BSS1.
Поскольку синхронизация выполняется по голосуемому сигналу, небольшие ошибки передачи во время синхронизации, которые влияют на граничные биты, могут исказить синхронизацию не более чем на 1 цикл. Поскольку между синхронизацией (BSS1, 8 бит последнего байта, FES и TES - 11 бит по 8 циклов каждый) не более 88 циклов, а дрейф часов не превышает 1 на 300 циклов, дрейф может исказить часы не более чем на 1 цикл. Небольшие ошибки передачи во время приема могут повлиять только на граничные биты. Таким образом, в худшем случае два средних бита верны, и, следовательно, выборочное значение верно.
Вот пример особенно плохого случая — ошибка во время синхронизации, потерянный цикл из-за дрейфа часов и ошибка при передаче.
Ошибки, которые произошли в примере:
Несмотря на множество ошибок, сообщение было получено правильно.
Зеленые ячейки — это точки выборки. Все, кроме первой, синхронизированы краем 1->0 в показанном фрагменте передачи.
Сигнал для отправки | 1 | 0 | 1 | 0 | 1 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Сигнал отправлен | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
В автобусе | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
Полученный | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | Х | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
5-мажор проголосовал | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | Х | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
При разработке и/или устранении неполадок шины FlexRay проверка аппаратных сигналов может быть очень важна. Логические анализаторы и анализаторы шин — это инструменты, которые собирают, анализируют, декодируют, сохраняют сигналы, чтобы люди могли просматривать высокоскоростные формы сигналов в свободное время.
Ethernet может заменить FlexRay для приложений, требующих большой пропускной способности, но не имеющих критических требований к безопасности. [16]