Резервирование для передачи по шине данных

Я собираюсь начать проект в моем университете через несколько недель. Поскольку это сотрудничество между моим университетом и очень важной компанией, я не могу сказать слишком много о самом проекте. Поэтому я пытаюсь дать здесь только необходимое количество информации, описывающей проблему. Надеюсь, я смогу описать это достаточно хорошо, чтобы вы поняли.

Проблема: Микроконтроллер отправляет данные по шине (это может быть RS485 или CAN. Это пока не уточняется) до 12 устройств:

Вариант 1

Было небольшое разочарование по поводу этой конструкции, потому что кому-то, участвующему в проекте, не нравится представленное решение (некоторые люди хотят напрямую подключить микроконтроллер к каждому устройству) из-за избыточности . Причина такой конструкции в том, что мы можем написать и реализовать протокол для передачи данных на каждое устройство. Это приятно и чрезвычайно эффективно, так как я могу отправлять данные через пакет информации.

Некоторым из моих колледжей не нравится это решение из-за отсутствия избыточности. Если по какой-либо причине шина будет прервана (обрыв одного провода, механическое движение по кабелю и т. д.), какое-то устройство не сможет получить свою информацию (что жизненно важно для жизни системы) и действительно много повреждения может произойти. Худший случай — разрыв соединения между мастером и первым устройством. Тогда все устройства будут потеряны. Этого случая следует избегать любой ценой.

Я хочу избежать этого. Поэтому я подумал о решении, в котором есть как минимум две шины для связи, чтобы устройства могли обмениваться данными в случае, если одна шина больше не работает. Итак, я имею в виду следующую конструкцию:

Вариант 2

Но у меня проблема: я хочу отправить по каждой строке одну и ту же информацию. Устройство должно уметь читать только один. Таким образом, обе линии должны сливаться в один канал, прежде чем устройство будет считано.

Вопросы:

  1. Приемлема ли такая форма резервирования? Или я должен пересмотреть свой дизайн?
  2. Есть ли смысл сливать обе строки в одну перед тем, как зайти в устройство? Или устройство должно иметь как минимум два отдельных порта RS485 или CAN, а затем программно объединять информацию?

Ответы (2)

Это очень широкая тема, известная как «анализ дерева отказов» — вероятно, слишком широкая, чтобы рассматривать ее здесь в формате вопросов и ответов.

Вопрос о вашей последовательной шине необходимо оценивать в контексте более крупной системы. Вам необходимо рассмотреть, какие виды ошибок вероятны, и стоимость устранения каждого типа ошибок. Вам необходимо учитывать как электрические неисправности в самих ведущих и ведомых устройствах, так и физические неисправности проводки и разъемов.

Иногда избыточность является правильным ответом; в других случаях достаточно перехода подсистемы в «безопасное состояние» (до тех пор, пока не будет выполнен ремонт) при обнаружении неисправности.

Существуют различные промышленные подходы к созданию резервных систем, обычно все удваивается, включая основной модуль ЦП, распределенный ввод-вывод и, конечно же, две шины, затем приложение состоит в проверке или фальсификации неисправной системы. У многих компаний есть собственное фирменное решение. Вы можете посмотреть пример системы резервирования Siemens, просто для информации: https://www.youtube.com/watch?v=K3AXkW2Dp3M

Но я хотел бы сообщить вам, что есть два типа этих сложных систем: отказоустойчивые и резервированные. Отказоустойчивость — это система, которая безопасно останавливает машину/установку, в то время как резервирование заставляет машину/установку продолжать работу при обнаружении неисправности. Очевидно, что отказоустойчивость намного проще и дешевле. Вы должны проанализировать, что вы действительно хотите, поскольку резервные системы используются для действительно серьезных установок, таких как атомная электростанция, судовые системы и т. д.