Форум myROBOT.ru » Лаборатория » Микроконтроллеры » дублирование контроллера

Страниц (2): « 1 [2]
 

16. nestandart - 17 Апреля, 2011 - 21:26:19 - перейти к сообщению
Можно еще проще .

Два мк одновременно отрабатывают одну и ту же "программу полета" (Ноги основного МК
подключены к исполнительному устройству а ноги резервного к GND).
Каждый из них передает другому постоянный сигнал и каждый из них
одновременно принимает сигнал другого.
Если сигнал пропал то тот МК который не нашел сигнал , сначала
определяп : кто он (основной , резервный).Например если на всех его входах
будет лог0 ,значит он резервный. И переключает управление исполнительным
устройством на себя (релюшки, транзисторы и т.д.).
Если другой МК "оживет " то резервным станет он (это логично т.к. глючащий МК
нельзя ставить основным).
(Добавление)
Цитата:
Два мк одновременно отрабатывают одну и ту же "программу полета"

МК синхронизированы и выполняют программу одновременно .
18. яхе - 18 Апреля, 2011 - 14:50:01 - перейти к сообщению
nestandart, если первоначально
Цитата:
МК синхронизированы и выполняют программу одновременно .

то после зависания как синхронизировать параметры управления
Цитата:
Если другой МК "оживет " то резервным станет он (это логично т.к. глючащий МК
нельзя ставить основным).

у одного мк же будет "программу полета" действительная, а у того, что после глюка отошел - просроченная.
и тут он снова "оживает" ...

killgur, спасибо, информативный ресурс
19. nestandart - 18 Апреля, 2011 - 15:08:35 - перейти к сообщению
Цитата:
то после зависания как синхронизировать параметры управления


Резервный МК включится в работу сразу же после потери сигнала.
Единственная возможная задержка это скорость переключения исполнительного механизма.

Цитата:
у одного мк же будет "программу полета" действительная, а у того, что после глюка отошел - просроченная.
и тут он снова "оживает" ...


Резервный , МК после перевода управления на себя , в конце каждого цикла
"нажимает" reset основного МК и если он включиться , то начала циклов обоих МК
будут синхронизированными (или будет некоторая разница во времени которую не сложно
подогнать программно).
20. lamakazzz - 18 Апреля, 2011 - 15:16:05 - перейти к сообщению
Пусть есть два МК: PRIMARY и BACKUP.
PRIMARY после старта инициализируется и если всё хорошо, то берет управление на себя, делает программу и заполняет собственную диагностику и передаёт её в BACKUP.
BACKUP после старта инициализируется и если всё хорошо,начинает выполнять такую же программу как и PRIMARY, но не управлять, и еще прослушивать диагностику PRIMARY.

Соответственно, если диагностика не была принята, то BACKUP становится PRIMARY, это значит что первый МК завис и его нужно сбросить.

Выбор между PRIMARY и BACKUP по первому старту, например, сделать с помощью задержки, а аппаратно (с помощью перемычки на ножках) определить это первый МК или второй.

А если МК взлетел после сброса, то нужно прослушать, есть ли диагностика. Если есть, то мы BACKUP, если нет - PRIMARY.

Синхронизация двух МК получится за два цикла основной программы.
ПО в обоих МК будет одинаковое.
21. nestandart - 18 Апреля, 2011 - 15:20:42 - перейти к сообщению
Основной МК вначале каждого цикла будет посылать резервному
команду на интерацию (обновление) цикла.

В этом случае резервный МК будет синхронизироваться с основным постоянно , а не в только при включении.

В аварийной ситуации они просто поменяются ролями.

В любом случае все резервные МК должны отрабатывать одну и ту же программу
и постоянно синхронизироваться . Отталкивайтесь от этого.
22. lamakazzz - 18 Апреля, 2011 - 15:30:31 - перейти к сообщению
Если делать по примеру, как я описал выше, то синхронизация будет происходить во время приёма диагностики, поэтому еще один сигнал можно не подавать.
Если диагностика не предусмотрена, тогда конечно можно использовать такой сигнал и если он не получен, то сбрасывать оппонента.
23. troll - 18 Апреля, 2011 - 23:07:50 - перейти к сообщению
Возник вопрос: предположим, есть резервирование голосованием "2 из 3". Как быть в том случае, если по "программе полета" надо сгенерировать случайное число?
24. nest - 19 Апреля, 2011 - 00:37:46 - перейти к сообщению
troll пишет:
вопрос: предположим, есть резервирование голосованием "2 из 3". Как быть в том случае, если по "программе полета" надо сгенерировать случайное число?
А что смущает?
25. -dead- - 19 Апреля, 2011 - 07:54:45 - перейти к сообщению
Видимо он не предполагает, что генератор может быть внешним Улыбка
26. Белый Волк - 19 Апреля, 2011 - 09:38:57 - перейти к сообщению
Необходимо озвучить критерии выхода из строя главного микроконтроллера, иначе возможно придумать случай, который неверно обработается в любом из решений.
При этом необходимы некоторые допущения относительно системы в целом. Например, допущение, что поломка микроконтроллеров возможна только в порядке иерархии и выход из строя одновременно двух микроконтроллеров невозможен (или, хотя бы, такой вариант не рассматривается).
27. яхе - 24 Апреля, 2011 - 23:27:49 - перейти к сообщению
всем спасибо за ответы и предложения, буду разбирать