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

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

1. яхе - 16 Апреля, 2011 - 22:20:10 - перейти к сообщению
здравствуйте. требуется резервирование управляющего МК. atmega8 выполняет программу, если происходит зависание или отказ в работе, то данный МК отключается от управление и управление переходит на резервный МК. какие идеи предложите, как можно реализовать синхронизацию программной части в таком случае ?
с уважением
2. -dead- - 16 Апреля, 2011 - 22:22:15 - перейти к сообщению
Методология резервирования систем не связана с конкретным МК и вообще достаточно развесистая отдельная от робототехники область знаний.
3. nest - 16 Апреля, 2011 - 22:40:31 - перейти к сообщению
яхе пишет:
здравствуйте. требуется резервирование управляющего МК. atmega8 выполняет программу, если происходит зависание или отказ в работе, то данный МК отключается от управление и управление переходит на резервный МК. какие идеи предложите, как можно реализовать синхронизацию программной части в таком случае ?
в простейшем случае можно так:
берём три МК, тактируем их от одного источника (синхронизацию при старте не забыть), выходные ноги объеденяем мажоритарными элементами и имеем счастье.

яхе, а в чём проблема? Вы в космической или военной отрасли?
Практически все МК при правильной разводке, питании и программисте - вещи достаточно устойчивые.
4. яхе - 16 Апреля, 2011 - 23:20:25 - перейти к сообщению
да, читал про мажоритарный клапан, но в схеме должно быть 2 контроллера
задание по диплому это такое у меня
да и самому стало интересно по данной теме - примеров реализации не нашел, только упоминания про сферы применения - атомная энергетика, авиация и тд. многократное резервирование + ПО от разных производителей. а там устройства гораздо сложнее
5. -dead- - 16 Апреля, 2011 - 23:24:21 - перейти к сообщению
Сдается мне, что при не стабилизирующихся алгоритмах управления мажоритарный клапан пролетит мгновенно при любых граничных состояниях на входах системы. Когда один МК примет этот вход за 0, а другой за 1 - тут у них алгоритмы и разойдутся, а через некоторое время еще и у третьего так же образуется "свой путь" и куда они так уведут в итоге систему - думаю никто не знает.
6. nest - 16 Апреля, 2011 - 23:40:18 - перейти к сообщению
-dead- пишет:
Когда один МК примет этот вход за 0, а другой за 1 - тут у них алгоритмы и разойдутся, а через некоторое время еще и у третьего так же образуется "свой путь"
не разойдутся. Возмётся наибольшее число. А если и третий врёт - то всё равно киллотонны летят не туда куда надо Улыбка

яхе пишет:
в схеме должно быть 2 контроллера
задание по диплому это такое у меня
а спросите у преподавателя, откуда появляются и как опознаются "зависание или отказ в работе". Он, как источник ТЗ должен предоставить вам эту информацию. А исходя из неё уже и резервирование можно придумать Улыбка
7. яхе - 17 Апреля, 2011 - 00:18:10 - перейти к сообщению
ну ведь не зря придумали сторожевой таймер, и помехи внешние никто не отменял.
чтоб работу исполнительного устройства не прерывать
p.s. у нас экспериментировали как-то с магнитным полем высокой частоты, дак ноутбук рядом стоял и 30 одинаковых вай-фай сетей определил , а в мак-адресе присутствовала цифра 257 Улыбка
8. mihail - 17 Апреля, 2011 - 00:57:20 - перейти к сообщению
яхе пишет:
в мак-адресе присутствовала цифра 257
Полагаю, если поставить рядом еще один ноутбук, то это не сильно улучшит ситуацию Помираю со смеху
9. cjA - 17 Апреля, 2011 - 01:03:06 - перейти к сообщению
слышал звон, да не знаю где он,
можноли одновеменно програмить два МК?

у меня вот не получаетя, может какую стабилизацию...
10. -dead- - 17 Апреля, 2011 - 10:26:06 - перейти к сообщению
nest пишет:
А если и третий врёт - то всё равно киллотонны летят не туда куда надо

Не обязательно. Я же говорю - сходящиеся алгоритмы могут так работать. А допустим у нас есть на пути 2 сосны - из-за небольшой разности в восприятии датчиков 1 алгоритм решает пролететь между ними, второй - слева, а третий справа - если слушать любого из них в отдельности - всё будет окей. А вот если перемешать их управляющие сигналы через какой-то фильтр - скорее всего соберём какую-нибудь сосну Улыбка
11. killgur - 17 Апреля, 2011 - 16:37:31 - перейти к сообщению
А узнать у препода критерии отказа неужели тяжело? И всем бы с тало легче.

А вдруг критерий отказа просто пропавшее в связи с близким разрывом ядерного фугаса питание одного из контроллеров.

И ничего там сложного нет в резервировании ... в каждом блоке достаточно предусмотреть самодиагностику ... и если она решает что для блока все кончено то соответственно выдает (куда то наверх) сигнал "писец пришел" и код ошибки.... а уж там что то вроде мультиплексора переключается на резерв.
12. -dead- - 17 Апреля, 2011 - 17:48:27 - перейти к сообщению
Кстати, да, вполне можно даже в самом МК поставить защиту от зависания - выдаваемый наружу сигнал "я жив" с некоторой частотой из основного цикла программы, если он прекратился - считаем, что контроллер "залип" Улыбка
13. nestandart - 17 Апреля, 2011 - 18:35:42 - перейти к сообщению
В основной программе установить программный блок , который (так же как и основная программа) будет "крутиться в цикле" , но не будет мешать основной программе.

В начале цикла генерировать некую последовательность импульсов ,
передавать ее на другой МК , "от ноги к ноге"
а тот будет принимать ее , сравнивать с оригиналом и генерировать ответ (другую последовательность) , которая будет приниматься первым МК и далее по кругу.

Такую систему даже не нужно синхронизировать
(Кто первый поймал сигнал , тот и ведущий).

Если сигнал не пришел или не был опознан , резервный МК переключает
управление на себя посредством : транзисторов , реле и т.д.


Если сигнал не опознан и резервный МК перевел управление на себя
то помимо всего прочего он может провести некие реанимационные действия
(например перезагрузку другого МК)

Можно навешать датчиков на каждый МК и отслеживать состояние другого.
Много чего можно.
14. killgur - 17 Апреля, 2011 - 20:48:05 - перейти к сообщению
-dead- пишет:
Кстати, да, вполне можно даже в самом МК поставить защиту от зависания - выдаваемый наружу сигнал "я жив" с некоторой частотой из основного цикла программы, если он прекратился - считаем, что контроллер "залип" Улыбка


Я б так сказал это решение наверно круто на бытовом уровне, но скорей всего для уровня ВУЗа нужно хотя бы пытаться придерживаться общепринятых стандартных схем резервирования ... например с голосованием 2 из 3, что видимо и написано где то в задании ... к тому же схемы с голосованием не нуждаются в постоянной синхронизации (только при вводе резерва) или скоростной переброски данных поскольку сидят на одной шине, что сильно упрощает жизнь студента.
15. яхе - 17 Апреля, 2011 - 21:02:24 - перейти к сообщению
да, была идея реализовать то, что описал nestandart - подавать сигнал состояния на резервный мк, используя таймер, но если резервный мк в какой-то момент не получит этот сигнал, то должен начать выполнение программы с точки останова основного контроллера. вот как реализовать это последнее действие я не знаю ...