КиберТроникс
Разработка устройств на микроконтроллерах в Туле
О нас
Услуги
Статьи
Контакты


Повышение надёжности микропроцессорных систем


Рассмотрены наиболее перспективные направления повышения надёжности микропроцессорных систем с учётом принципа функционирования каждой составляющей части.

С момента появления первых процессоров помимо очевидных преимуществ их применения в системах автоматизации, параллельно возникали проблемы создания надёжных устройств на их основе. Любая микропроцессорная система состоит из двух взаимосвязанных частей:

  • Аппаратная часть.
  • Программная часть.

    Следовательно, при рассмотрении задачи повышения надёжности микропроцессорной системы, следует отдельно учитывать надёжность аппаратной, программной частей, а также комплексную надёжность всего устройства. Аппаратная и программная части микропроцессорного устройства имеют различную природу. Аппаратная часть состоит из ряда специализированных микросхем или электронных компонентов, а также печатной платы, на которой располагаются эти компоненты. Если какая-либо микросхема выходит из строя, в зависимости от её функций, это может отказать большое или малое влияние на работу всего устройства. В крайнем случае, устройство выходит из строя. Главная особенность функционирования аппаратной части заключается в том, что она работает с ограниченным набором входных параметров:

  • напряжение питания,
  • диапазон входного напряжения,
  • частота входного напряжения,
  • шумовые характеристики входной и выходной частей устройства.

    Разумеется, у разного типа устройств эти параметры могут быть дополнены новыми, характерными для их работы. В любом случае, при проектировании аппаратной части инженер способен просчитать, в каких условиях система сохранит свою работоспособность. Вывод: главный источник сбоев электронной части - неисправность какого-либо её элемента или группы элементов вследствие старения, брака или неправильных условий эксплуатации. На рисунке 1 показана зависимость отказов аппаратуры от времени. Характерны три участка:

  • приработка, когда устройство только собрано, наблюдается большое количество отказов;
  • нормальная работа, после приработки разного рода компонентов аппаратной части, наблюдается довольно продолжительный промежуток времени бессбойной работы;
  • старение, когда в устройстве начинают выходить из строя разного рода электронные компоненты, что в большей или меньшей степени влияет на правильность его работы.

    JetDevice - Различие между надёжностью аппаратуры и программного обеспечения


    Рисунок 1. - Различие между надёжностью аппаратуры и программного обеспечения.


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

    Простейшим менеджером может быть "сторожевой таймер". Это устройство, назначение которого следить за временем. У него есть вход и выход. Если на вход приходит логическая единица, таймер сбрасывается, когда таймер досчитает до заданного пользователем промежутка времени, он формирует управляющий сигнал в виде логической единицы. Сторожевой таймер подключается к блоку, который необходимо контролировать. Сам блок во время своей работы посылает импульсы для сброса таймера. Если блок отказывает, импульсы не приходят на сторожевой таймер, и он формирует сигнал управления для замены повреждённого блока на новый.

    Очевидный недостаток - замена происходит по факту отказа, описанный менеджер не способен определить скорый отказ оборудования. Существуют менеджеры, которые оценивают более комплексно функциональность контролируемого блока. В последнее время начинает развиваться теория определения функциональности различных электронных блоков по уровню их розового шума. Доказано, что уровень розового шума электронного компонента напрямую зависит от количества внутренних дефектов. Главной особенностью розового шума является то, что его спектральная плотность увеличивается с уменьшением частоты [1]. Спектр розового шума изображён на рисунке 2.

    JetDevice - Спектр розового шума


    Рисунок 2. - Спектр розового шума.


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

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

    Авторами статьи ведутся исследования в области однопроводной передачи энергии. Этой проблемой занимался инженер С.В.Авраменко. Он успешно передавал электрическую мощность на довольно большие расстояния по одному проводу (без заземления) [4]. По сути дела, он использовал провод в качестве волновода, по которому бежала электромагнитная волна [2]. Это работы вполне можно применить для создания гальванической развязки по питанию. Если электрическая энергия будет поступать разным блокам устройства не напрямую от блока питания, а в качестве электромагнитной волны и переводиться в разность потенциалов внутри блока-потребителя. При этом информационные связи между блоками можно организовать по той же технологии, только передаваться будет не электрическая мощность, а информация (аналоговая или цифровая). Из-за отсутствия общей шины заземления, помехи, созданные различными узлами аппаратуры, не будут влиять на остальные блоки схемы.

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

    Главная особенность работы программного обеспечения состоит в том, что работа происходит с практически бесконечным набором входных параметров. Это является главным источником ошибок (учесть всё невозможно). Например, простейшая программа, которая складывает два целых числа. Входные параметры - два целых числа. Но программист должен побеспокоиться, как именно пользователь будет вводить эти числа, что будет, если пользователь введёт дробные числа, что будет, если пользователь поставит знак "+" перед числом и т.д. Ряд можно продолжать ещё. Но это простейшая программа. А если речь идёт о серьёзном проекте, предусмотреть всё, что может произойти во время исполнения программы, просто не представляется возможным.

    На современном этапе существует ряд способов отладки программного обеспечения. Рассмотрим их на примере микроконтроллеров семейства AVR. Если программа мала по объёму, то очень действенной представляется пошаговая отладка программы. Программист запускает написанную программу в эмуляции и имеет возможность посмотреть, что происходит при выполнении любой инструкции его программы. В таком режиме программист может исправить значительное количество ошибок, но только если программа не большая по объёму или программист тщательно продумал её структуру и организовал всё с учётом возможности отладки различных её частей без участия остального кода программы. Так организовать код не всегда представляется возможным. Однако если программа должна тесно сотрудничать с внешними электронными узлами, такой метод не удобен. Применяют ещё один подход: отладочный интерфейс JTAG [3]. С помощью него можно отлаживать программу непосредственно внутри работающего микроконтроллера. Это довольно удобно, но опять же, мало подходит для отладки серьёзных по объёму программных продуктов.

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

    В настоящее время стоит актуальная задача нахождения стратегий комплексной отладки программного обеспечения. Ситуация усугубляется тем, что программное обеспечение с каждым годом становится всё сложнее, а предприятия, которые занимаются созданием программных продуктов пошли по пути автоматизации процесса их создания. То есть, современная программа - это совокупность блоков, написанных сторонними разработчиками, программист просто соединил их в нужном ему порядке. Опасность в том, что программист не знает как работает его программа. Он не может предугадать, где и когда она даст сбой (это при условии, что он сам не наделал ошибок при её создании). С другой стороны, автоматизация даёт возможность быстро разработать более или менее надёжную программу, что очень важно в современном мире.

    Перспективным кажется процесс перехода (или параллельного использования) от автоматизации создания программ к процессу упрощения их создания. По своей сути, процесс программирования - ни что иное как перевод одного типа информации в другой. На входе программист получает задачу или информацию о функционировании устройства, на выходе он должен описать своё понимание задачи на языке программирования. Как уже отмечалось, из-за огромного количества нюансов, которые должен учесть программист, программа может неверно обрабатывать некоторые входные данные, что может повлечь за собой выход из строя оборудования. Для упрощения программирования необходимо разработать ряд программных продуктов для комплексного анализа кода. В настоящее время существуют отладчики, но они не могут в автоматическом порядке искать ситуации, которые программист не учёл.

    Копирование, размещение или любое другое использование информации с данного сайта без разрешения автора строго запрещено!

  • Copyright © 2008 - 2024, Кибертроникс, E-mail: