Обеспечение надежности микропроцессорных систем управления программно-аппаратными методами Часть 2 Астапкович А.М., Востриков А.А. Введение В первой части настоящей статьи рассмотрены теоретические вопросы обеспечения надежности. Суть предлагаемого подхода заключается в необходимости применения комплексного анализа надежности системы управления с обязательным учетом взаимодействия аппаратной части и программного обеспечения на всех стадиях : от проектирования до эксплуатации и ремонта. В силу этого, базовым принципом обеспечения надежности современных микропроцессорных систем управления является применение аппаратно-программных методов. Фактическая реализация этого принципа закладывается на этапе разработки как взаимосвязанный комплекс схемотехнических и программных решений. Данная работа носит обзорный характер и посвящена рассмотрению конкретных вариантов реализации аппаратно-программных методов, которые по мнению авторов могут оказаться полезными на этапе разработки широкого круга высоконадежных систем управления. При этом рассматриваются как традиционные методы, так и концептуально решения, выработанные инженерами дизайн центра ASK Lab. При этом первая группа методов, по причине своей распространенности в настоящее время, поддержана существующей номенклатурой чипов многих электронных компаний (Microchip Technology Inc., MAXIM, Analog Devices), наименования и основные характеристики которых будут также представлены в статье. С целью конкретизации предлагаемых решений использована традиционная для ASK Lab микропроцессорная платформа PIC16/17 фирмы Microchip, однако изложения и рекомендации носят самый общий характер и применимы практически к любым микропроцессорным системам управления. При конкретной реализации возникает ряд специфических проблем, от успешного решения которых критическим образом зависит надежность функционирования системы управления в реальных условиях эксплуатации. Следует отметить, что повышение надежности всегда требует неких дополнительных затрат в виде усложнения применяемых схемотехнических решений и затрат ресурсов микропроцессора по производительности и используемым ножкам, увеличении длинны программы . В силу этого, повышение надежности системы управления естественно сказывается на цене конечного изделия и требует оптимизации соотношения качество/затраты, что предопределяет необходимость рассмотрения широкого спектра конкретных рекомендаций. 1 . Обеспечение стабильности питающего напряжения www.ask-lab.com Обязательным условием начала функционирования любой электронной системы является подача и поддержание в допустимых пределах питающего напряжения. Естественно, что выход напряжения на рабочее значение занимает определенное время, ввиду возникновения переходных процессов в цепях питания, а величина этого временного промежутка зависит как от параметров электрической схемы, так и от параметров источника питания. Так как современные микропроцессоры потребляют ток от единиц микроампер до сотен миллиампер и работают в диапазоне питающих напряжений 36 В , то незначительные в абсолютном значении изменения параметров системы питания могут привести к фатальным последствиям для системы управления в целом. Особо подчеркнем, что микропроцессор собственно как программное устройство управления может рассматриваться лишь при обеспечении стабильных характеристик системы питания как в начальной фазе, так и в режиме реализации алгоритма управления, описанного программным путем. 1.1 Стадия подачи питающего напряжения Современные микроконтроллеры обеспечивают выход системы питания на уровень допустимого напряжения с помощью реализации некоторой задержки с момента подачи напряжения. В большинстве случаев этого оказывается достаточно, а наличие встроенных цепей сброса по питанию (POR – Power On Reset) с собственным генератором для измерения величины задержки не требует дополнительных затрат. Однако понятно, что из-за фиксированной величины задержки данный способ оказывается неэффективным, если скорость нарастания напряжения питания меньше специфицированного граничного значения. Укажем для определенности, что для микроконтроллеров фирмы Microchip Inc. специфицированная минимальная скорость подъема – 0.05 В/мсек, а встроенный таймер задержки запуска обеспечивает задержку 72 мсек. Таким образом, если система питания не обеспечивает данной минимальной скорости подъема питания, что может происходить в системах с батарейным или аккумуляторным питанием в конце срока службы или из-за пиковых воздействий других потребителей, то для обеспечения устойчивых условий запуска требуется использовать внешние схемы задержки. Простейший вариант реализации такой задержки заключается в использовании RC цепочки заведенные на внешние схемы сброса, как это показано на рис.1. Ножка сброса процессора будет находиться в активном состоянии до появления на шине питания специфицированного напряжения, а время задержки регулируется выбором значений RC цепочки, рассчитанным на самые неблагоприятные условия. 1.2 «Провалы» по питанию www.ask-lab.com Промышленные и бытовые системы управления работает, как правило, в условиях наличия воздействий от внешней среды по цепям питания. Одна из часто встречающихся проблем такого плана заключается в наличии кратковременных снижений уровня питающего напряжения. Если не принять соответствующих мер то, провал питающего напряжения приведет к автоматическому рестарту программы, что на некоторое время выведет систему управления из работы. Для ряда ответственных применений это может привести к фатальным последствиям с точки зрения реализации заданного алгоритма управления. В качестве простейшего примера можно указать любой современный электронный прибор учета: электросчетчики, кассовые аппараты, дискретные регистраторы количества и т.п. Потеря текущей информации приводит, фактически, к фатальным последствиям, делающим невозможным дальнейшее функционирование данного устройства из-за потери или искажении интегральной информации о контролируемом ресурсе. При этом возможен целый ряд и других неблагоприятных, с точки зрения надежности системы, эффектов. При приближении к нижней границе допустимого питающего напряжения резко увеличивается вероятность неверного чтения из энергонезависимой памяти обрабатываемой команды и последующего сбоя в ходе выполнения программы. Если система управления не критична к эффектам последействия, то все проблемы решаются последующим рестартом программы. Однако для систем с последействием, по крайней мере, необходимо обеспечить корректные условия для рестарта, что требует уже применения комбинированных программно-схемотехнических решений. Таким образом, проблема провалов по питанию должна решаться применительно к конкретным условиям эксплуатации и способы ее решения зависят, в частности, от: необходимости сохранения критически важных данных; глубины падения напряжения питания микроконтроллера; длительности времени нахождения напряжения питания ниже минимального критического уровня; возможности применения батарейного питания или аккумуляторного питания. Длительность провала питающего напряжения, конечно же, является условной характеристикой, зависящей от конкретной специфики использования системы управления. Характерный масштаб времени с этой точки зрения определяется минимально необходимым временем для сохранения критически важных данных, обеспечивающих корректный рестарт. Как правило, речь идет о сохранении данных в энергонезависимой памяти программ, и это время определяется объемом сохраняемой информации, длительностью записи и потребляемой при этом мощности. Для этого необходимо сообщить микроконтроллеру о возникновении критической по питанию ситуации и, поддерживая в течение необходимого времени рабочее значение напряжения , обеспечить возможность записи информации. Необходимое для записи время рассчитывается как произведение длительности записи единицы информации (байт, страница – 8 байт) на количество данных единиц. Типичное время записи в электрически перепрограммируемую память составляет от 1 мсек до 10 мсек, количество записываемой информации зависит от конкретной реализации, хотя понятно, что разработчик должен стремиться к минимизации данного объема, выбирая при этом наиболее быстрые режимы записи. Полное же время можно рассчитать как: t полн t прер t обм t зап (1) где tполн – полное время, необходимое для сохранения необходимых данных в энергонезависимой памяти; tпрер – время реакции на прерывание и перехода на процедуру сохранения; tобм – время обмена с энергонезависимой памятью (зависит от скорости обмена и объема передаваемой информации); tзап – время записи в энергонезависимую память (зависит от характеристик памяти). Потребляемую мощность во время выполнения процедуры сохранения необходимо также минимизировать, сохраняя на это время напряжение питания только на микроконтроллере и схеме памяти. Таким образом, для приложений критичных к потере данных в результате сбоя по питанию возникает необходимость реализации схем, подобных источникам бесперебойного питания (UPS), только со значительно уменьшенными параметрами, которые в дальнейшем будем называть микроUPS и обозначать mUPS. www.ask-lab.com Рис. 4 . Схема к обеспечению внутреннего сохранения содержимого памяти данных при падении напряжения питания ниже значения Vdd = 0.7 (R1+R2) / R1. 1.2.1 Схемы mUPS Обеспечение надежности за счет применения mUPS требует комплексного подхода связанного с выбором конкретных схемотехнических решений, методом обработки сигнала о пропадании питания, а также распознаванием режима рестарта: первое включение, рестарт после провала по питанию и т.п. Укажем два наиболее употребительных похода : перевод микроконтроллера в режим пониженного энергопотребления и продолжение питания его, например, от заряженной емкости (метод внутреннего сохранения памяти данных); срочная запись необходимых данных в энергонезависимую память (метод внешнего сохранения памяти данных). Первый метод применим в случаях, когда период отсутствия напряжения питания не превышает единиц, нескольких десятков минут. Схемотехнически необходимо обеспечить выдачу сигнала микроконтроллеру об исчезновении напряжения питания, сохраняя при этом на его выводах питания напряжение не ниже заданного (например, для микроконтроллеров среднего семейства фирмы Microchip Technology Inc. для сохранения содержимого памяти данных достаточно обеспечить напряжение на выводах питания не менее 1.5 В). Сигнал с mUPS о появлении провала по питанию в виду его критической важности представляется целесообразным обрабатывать через систему прерывания Пример такой схемы приведен на рис. 4. Обработчик прерывания, помимо кода, распознающего источник прерывания, будет содержать следующий код: POWER_FAIL: BSF OPTION, INTEDG ; Выход из SLEEP (режим энергосбережения) – высокий уровень на RB0/INT BCF INTCON, RBIF ; Очистка флага прерывания BCF INTCON, GIE ; После возвращения из SLEEP-режима не переходить на обработку прерывания SLEEP ; Переход в SLEEP-режим BCF OPTION, INTEDG ; Теперь событие для выхода из SLEEP-режима – низкий уровень на RB0/INT BCF INTCON, RBIF ; Очистка флага прерывания RETFIE ; Вернуться из прерывания и установить бит разрешения прерываний детектирования наличия высокого напряжения первичного источника. www.ask-lab.com Если взять за его основу схему, приведенную выше (рис. 4), то для обеспечения, например, тока в 15 мА в течение 0.2 сек (изменение напряжения от 5 В до 4 В) потребуется конденсатор (C1) емкостью порядка 2.7 мФ. Другим способом реализации схемы mUPS является использование в качестве вторичного источника питания импульсного стабилизатора напряжения. Известно, что данный тип вторичных источников способен поддерживать рабочее напряжение на нагрузке в течение десятков миллисекунд после пропадания напряжения первичного источника. Единственное аппаратно-программное дополнение, которое необходимо ввести в схему – это контроль над наличием напряжения на входе импульсного преобразователя. Пример аппаратной части этого дополнения для микроконтроллеров фирмы Microchip Technologies Inc. приведен на рис. 5. А программная часть будет включать выполнение необходимых действий при возникновении аппаратного прерывания в связи с изменением уровня на выбранном порте. В данном случае в качестве входного порта необходимо Рис. 5. Электрическая цепь для обеспечения выбрать любой из ряда RB4-RB7, Рис.1. Схема сброса по питанию. На выходе Reset# низкий уровень устанавливается при напряжении Vdd = 0.7 (R1+R2) / R1. изменение уровня на входе которых вызывает выработку сигнала прерывания. Для широкого круга применений крайне желательным является применение внешней схемы стабилизации провалов по питанию с выработкой предупреждающих сигналов для системы управления. Такие схемы могут быть либо реализованы самим разработчиком системы, либо выбраны из существующей на рынке номенклатуры. Пример простого схемотехнического решения внешней схемы сброса по питанию приведен на рис. 2. В настоящее время ряд ведущих фирм серийно выпускает mUPS, которые могут быть рекомендованы для ответственных применений. Краткое описание серийно выпускаемые чипы, обеспечивающие защиту системы управления в подобных ситуациях, приведено в табл. 1. Таблица 1. Готовые схемы управления сбросом по питанию MAXIM Microchip Analog Devices Наименование чипов DS1233 Краткое описание функций Выработка и удержание сигнала сброса при падении напряжения питания ниже некоторого уровня MAX801, MAX808 Генерация сигнала падения напряжения с переключением на батарейное питание, сторожевой таймер. MAX821, MAX822 Реализация сброса по питанию с программируемой длительностью сигнала сброса, защита от скачков напряжения. MAX6315 Аналогично, низкое потребление, открытый коллектор сигнала RESET. MCP100, 101, 120, 130, Выработка и удержание сигнала сброса 809, 810 при нахождении величины напряжения питания в определенных узких пределах. Верхняя граница этого значения зависит от буквенного индекса в названии чипа и меняется от 2.70 В до 4.85 В. ADM811, ADM812, Вырабатывают кратковременный импульс ADM181X положительной или отрицательной полярности при прохождении значения питающего напряжения через определенное значение (в зависимости от буквенного индекса микросхемы – от 2.63 В до 4.63 В) или при подаче на отдельный вход низкого уровня. www.ask-lab.com Фирма Dallas Semiconductor ADM6315 ADM9268 ADM9240 Аналогично, за исключением открытого коллектора на выходе сброса и программируемой длительностью выходного сигнала. Позволяет контролировать 4 различных источника питания, вырабатывая при этом раздельные сигналы критического уровня питания, а также общий сигнал нормального питания по всем каналам (PWROK) Предназначены скорее для материнских плат современных персональных компьютеров и обладают следующими возможностями: 1) Отслеживают значения напряжения шести различных источников (включая +12 В и –12 В); 2) Управляют выработкой сигнала аппаратного сброса; 3) Отслеживают температуру корпуса и управляют микровентилятором; 4) Всю имеющуюся информацию могут передавать по последовательному интерфейсу. 1.2.2 Защита от паразитных емкостей www.ask-lab.com Рассмотрим еще одну неблагоприятную ситуацию, связанную с кратковременными провалами питающего напряжения. При падении напряжения питания ниже минимального уровня и затем нарастании его до рабочего значения, несмотря на все прочие корректные условия запуска микроконтроллера, все же возможна ситуация, когда нормальный рестарт может не произойти. Это происходит, когда при снятии напряжения с цепей питания системы хотя бы на одном из выводов порта микроконтроллера присутствует некоторый потенциал, например, из-за наличия (в контексте данного изложения) паразитных емкостей на портах микропроцессора. В результате этого, внутренняя логика микроконтроллера будет продолжать получать питание через защитный диод порта, и микропроцессор будет работать в неконтролируемом режиме. Надежное же срабатывание внутренней схемы сброса возможно лишь при нарастании напряжения питания микроконтроллера от потенциала на выводе ‘Земля’ микроконтроллера. При возможности возникновения такой ситуации возможно использование схему защиты входа, имеющего независимое от Рис. 3. Защита входа, имеющего основного питание, с диодом Шотки (рис. 3). независимое от основного питание 1.2.3 Использование резервных источников питания При возможности использования наряду с основным батарейного или аккумуляторного питания, проблема пропадания основного питания решается методом дублирующего источника: оба источника подключаются к шине питания с помощью двух диодов, включаемых, например (при общем нулевом потенциале), анодами к положительным потенциалам источников, а катодами к «плюсу» шины питания, как это показано на рис. В результате основной и дополнительный источники дублируют друг друга, а время переключения определяется только временем перехода примененного диода в режим прямого смещения. 1. 3 «Скачки» напряжения питания До сих пор рассматривались способы решения проблемы падения питающего напряжения ниже критического уровня. И на первый взгляд кажется, что если использовать достаточно мощный источник питания, то перечисленные выше проблемы, по крайней мере, для стационарных применений могут быть решены. При ближайшем рассмотрении оказывается, однако, что гораздо более печальные последствия для системы управления могут нести внезапные выбросы напряжения (чаще всего с этой проблемой сталкиваются именно на шине питания). Причиной возникновения таких выбросов служат переходные электромагнитные процессы в электрических цепях. При этом обязательными условиями возникновения выброса является резкое изменение параметров цепи и наличие накопленной энергии в подключенной к этой цепи индуктивности и/или емкости. Подчеркнем, что в этом случае речь идет об электрическом повреждении элементов микропроцессора. Рассмотрим некоторые реальные ситуации, способные стать причиной возникновения выбросов напряжения [ ] . 1. Если в одной из подключенных к выходу вторичного источника питания (рис. ) нагрузке (пусть это нагрузка 2) внезапно падает сопротивление, что приводит, например, к перегоранию плавкого предохранителя, то такое короткое по времени и значительное по величине изменение тока в цепи приведет к возникновению выброса. Возникший скачок напряжения будет приложен к другой – не отключенной – нагрузке 1. Рис. . Пример причины возникновения выброса напряжения при индуктивном характере источника питания. www.ask-lab.com 2. Причиной выброса в другом случае может стать определенный момент включения вторичного трансформаторного источника (а именно, во время максимальной амплитуды напряжения) и наличие значительных величин индуктивности и емкости вторичной обмотки трансформатора (рис. ). Амплитуда выброса может в два раза превышать допустимую амплитуду напряжения, снимаемую со вторичной обмотки. Рис. . Возникновение выброса при определенном моменте подключения источника. 3. Наконец распространенной причиной возникновения выброса считается отключение трансформатора от первичного источника во время перехода напряжения через ноль. Это приводит к резкому уменьшению магнитного потока и, как результат, к наведению значительного напряжения на вторичной обмотке (рис. ). Рис. . Возникновение выброса в связи с отключением трансформатора от первичного источника во время перехода переменного напряжения через ноль. www.ask-lab.com Как показывают лабораторные измерения и математические расчеты, возникающие выбросы напряжения чаще всего имеют форму затухающих колебаний. Хотя, в общем случае, все зависит от параметров электрической цепи. С учетом этого опасность представляет не только превышение напряжением выброса допустимого порога, но сходного по знаку с разностью потенциалов нормального питающего напряжения, а также обратная волна выброса, когда знак напряжения выброса и напряжения питания не совпадают. Основным методом борьбы с возникающими выбросами напряжения является применение различных электронных приборов с резко уменьшающимся с увеличением напряжения сопротивлением. Подключая такой прибор параллельно защищаемой нагрузке можно добиться значительного подавления больших импульсов напряжения за счет "закорачивания" цепи. При выборе конкретного типа элемента разработчику приходится находить компромисс между уровнем защиты электронной схемы и увеличением ее себестоимости. Основными типами применяемых в настоящее время приборов с подобной характеристикой являются: - Варисторы на основе оксида металла; - Диоды Зенера. Варисторы обладают немного худшей подавляющей способностью и, кроме того, их жизненный цикл напрямую зависит от количества подавленных выбросов. Например, если предельным током для варистора на основе оксида металла является 1000 А (ток, протекающий через варистор при подавлении выброса), то такой варистор сможет пережить только один выброс при максимальном токе, 100 выбросов при 100 А и порядка 1000 при 65 А. Диоды Зенера лишены данного недостатка, хотя для них существуют ограничения на длительность превышения импульса напряжения при определенной температуре. Если данные ограничения не соблюдаются, то это приводит к разрушению перехода диода. В остальном эта разновидность диодов является наилучшим способом защиты электрических цепей от выбросов напряжения. Поскольку обладают практически идеальной для выполнения заданных функций зависимостью сопротивления от напряжения: при приложении напряжения ниже зенеровского их сопротивление при обратном смещении чрезвычайно высоко, при превышении этого напряжения сопротивление падает до единицдесятков Ом. Кроме того, емкость диода обычно не превышает одной нанофарады. Включая последовательно два диода Зенера, можно защитить схему от разнополярных выбросов (рис. а). Общие же рекомендации по подключению диода Зенера для защиты от выбросов напряжения следующие: диод устанавливается по возможности ближе к защищаемой нагрузке, полярность включения – обратная (см. рис. б). а) б) или Рис. . Способы включения диодов Зенера: а – последовательное включение двух диодов для защиты от разнополярных выбросов; б – способ включения в защищаемую цепь. 1.4. Нелинейный эффект с обратной связью по питанию www.ask-lab.com По определению, микропроцессорная система управления является достаточно сложными устройствами, и надо со всей внимательностью подходить к задаче обеспечения значения питающего напряжения в рабочих пределах. Для систем управления критичным к уровню потребляемой мощности могут начать сказываться системные эффекты из-за обратных связей по системе питания. В качестве примера последствий присутствия на шине питания системы управления критически низкого напряжения рассмотрим любопытный нелинейный эффект, приводящий к возникновению автоколебаний, фактически блокирующих работу микропроцессорной системы управления. Предположим, что система управления включена и выполняет необходимые функции. При плавном снижение напряжения питания микроконтроллера ниже минимального значения останавливается тактовый генератор и прекращается выполнение командного кода, в результате чего потребление всей схемы в целом резко снижается. Даже при хорошо стабилизированном источнике питания это приводит к некоторому (на десятые доли вольта) увеличению напряжения питания и запуску микроконтроллера. Последнее вызывает увеличение потребления всей схемой и, следовательно, небольшому падению напряжения на шине питания. В результате имеет место нелинейный эффект возникновения автоколебаний, так как описанная ситуация повторяется. Внешнее проявление этого эффекта заключается в самопроизвольном периодическом запуске и остановке микроконтроллера по причине наличия обратной связи по цепям питания. Такой эффект был получен и наблюдался при проведении экспериментов на макетных платах в ASK Lab. Задачей выполнения программы имитированной системы управления являлось конфигурирование контроллера и зажигание светодиода, подключенного к порту RB0 микроконтроллера PIC16C71. На рис. 2. показан график изменения потенциала на выводе этого порта микроконтроллера при возникновении описанного нелинейного эффекта. В данном случае эффект проявлялся при нахождении напряжения питания в районе 2.9 В. Период между запусками микроконтроллера и скважность зависят от очень многих факторов: потребления работающей схемы управления, стабильности источника, емкости шины питания и т.д. Основной причиной возникновения этого эффекта является крайне высокие требования современных микропроцессорных устройств к параметрам питающего напряжения. А способами борьбы – применение все тех же схем сброса по питанию, не допускающих функционирование микропроцессоров (микроконтроллеров) в «опасной» по напряжению питания зоне. U, В 2.9 0.2-0.3 0.2-0.3 0.2-0.3 t, мсек Рис. 2. Иллюстрация возникновения самопроизвольных периодических запусков микроконтроллера (состояние порта RB0 микроконтроллера PIC16C64) 2. Выход тактового генератора на режим www.ask-lab.com Вторым обязательным условием функционирования микропроцессора как программного устройства управления является выход генератора тактирующих импульсов на стационарный режим работы. В современных микроконтроллерах существуют встроенные аппаратные средства, решающие проблему вывода тактового генератора на режим до того, как сгенерированные им импульсы станут источниками синхронизирующих импульсов для всей внутренней логики микроконтроллера. Как правило, используются те или иные схемы стабилизации частоты или схемы задержки на определенное количество тактов. Рассмотрим в качестве примера схемотехнические решения, применяемые фирмой Microchip . Импульс тактового генератора начинают поступать на внутреннюю логику микроконтроллера лишь после переполнения 10-ти разрядного счетчика (в том числе и при выходе из режима пониженного энергопотребления). Это дает нормированную величину задержку на 1024 такта генератора, которая должна обеспечить выход на стационарный режим генерации. Кроме того, микроконтроллеры этой фирмы при «прошивке» могут быть сконфигурированы под четыре разных типа резонаторов для оптимального подбора параметров активной части генератора (рис. ). а) б) Рис. . Внешние и внутренние части задающих генераторов микроконтроллеров PIC16CXX: а) с кварцевых резонатором (LP, XT, HS - типы); б) с RC – цепочкой (RC – тип). Можно также отметить, что специалисты Microchip решили в старшем семействе микроконтроллеров (PIC17) сделать факт выхода генератора на режим критерием наличия достаточного и стабильного уровня питающего напряжения. Начало подсчета импульсов тактового генератора до переполнения 10-ти разрядного счетчика начинается сразу, без ожидания завершения периода задержки «по питанию». Переполнение же этого счетчика считается достаточным условием для начала тактирования ядра микропроцессора, тогда как в младшем и среднем семействах счет запускался лишь по окончанию этого периода. Разработчики микроконтроллеров серии M16C (фирма Mitsubishi Electric) подошли к проблеме ожидания выхода генератора на режим несколько иным путем. Выполнение программы начинается сразу после перехода сигнала сброса в неактивное состояние, а процесс «раскачки» генератора контролируется программно, причем на этом этапе и до начала стабильной генерации тактовая частота делится на 8. Как правило, производитель микропроцессоров дает рекомендации по применению резонаторов тех или иных фирм. Кроме того, предлагается проверять работу генераторов с выбранными резонаторами при самой низкой из допустимых температур и максимальном напряжении, а также при самой высокой температуре и предельно низком напряжении, т.е. в самых неблагоприятных для запуска генератора режимах. Тем не менее, очевидно, что для высоконадежных систем управления самым кардинальным решением этой проблемы является использование автономных тактовых генераторов. Современные автономные генераторы часто обеспечивают и термостатирование схемы. Как правило, эти генераторы выпускаются в металлических корпусах, которые увеличивают защищенность генератора от внешних электромагнитных воздействий. Следует помнить, что при заземлении корпуса генератора может возникнуть временная задержка при его запуске масштаба 2-5 мсек. 3. Конфигурирование микропроцессора и инициализация задач www.ask-lab.com Так как современный микропроцессор является многофункциональным устройствам, то для его конфигурирования на конкретные условия работы требуется начальная установка регистров управления конфигурацией соответствующая конкретному использованию микропроцессора. В соответствии со сложившейся терминологией регистры конфигурирования и регистры, закрепленные за периферийными устройствами микропроцессора, принято называть регистрами специального назначения. Конфигурирование под конкретное применение осуществляется как на этапе “прошивки" программы микропроцессора, так и установкой конфигурационных битов программным путем. В процессе конфигурирования определяются конкретные варианты использования ножек универсальных портов (вход/выход), определяются назначения ножек периферийных модулей (АЦП, коммуникаций и т.п.). Под инициализацией задач в контексте данного изложения понимается установка начальных значений регистров специального и общего назначения применительно к конкретным условиям и в соответствии с заданным алгоритмом управления. Для современных технологий разработки программного обеспечения встроенных систем упарвления характерным является применение программноинструментальных сред, использующих в качестве базовой структуры ту или иную версию микрооперационной системы реального времени. Для таких систем управления под инициализацией должна пониматься записей начальных значений в регистры управления соответствующей микропоперационной системой. Одной из наиболее распространенных причин неправильного функционирования микропроцессорной системы управления является некорректная установка значений регистров специального назначения или их непреднамеренное изменение в процессе работы. Так как ряд регистров специального назначения может выполнять несколько разных функций в зависимости от соответствующих управляющих битов, то необходимо обеспечить, во-первых, их корректную установку при старте программы, а, во-вторых, контроль за их состоянием в процессе эксплуатации системы управления. Не следует уповать на установку управляющих регистров по умолчанию, так на их значение могут оказывать различные условия рестарта программы или некорректная работа ядра микропроцессора в последний момент перед выключением из-за пульсаций питания. Хорошим стилем программирования следует считать явное описание состояния регистров конфигурации. Для ряда регистров представляется необходимым использовать контроль за выполнением корректной реализации предписанных алгоритмов функционирования начальных установок. В качестве содержательного примера можно указать любое прикладное программное обеспечение, работающее с системой прерываний. В нижеследующем примере использована ассемблер для семейств микропроцессора PIC16CX, фирмы Microchip (США). Принципиальная важность блокировки прерываний при запуске заключается в том, что если прерывание придет в начальный момент, когда микропроцессор не сконфигурирован, микрооперационная система не проинициализирована, , то управление будет передано на адрес четыре, в результате чего будет запущен обработчик прерываний, который быдет иметь дело с несконфигурированным микропроцессором и случайными данными в регистрах общего назначения. При стандартном рестарте программы по включению питания, бит GIE очищается аппаратно и стадия инициализации защищена от прихода несанкционированного прерывания с точностью до срабатывания схемы очистки бита GIE. Ситуация меняется, когда рестарт программы осуществляется по сторожевому таймеру, выходу из режима энергосбережения или из-за внутренней логики программы. В примере 2 все еще возможно наличие сбойной ситуации, но для этого необходимо чтобы: прерывание пришло в момент выполнения команды clrf INTCON,GIE в процессе работы была непреднамеренно изменена установка бита BC в регистре CONTROL ; Пример 2. ; Блокирование системы прерываний с проверкой обеспечивающая большую степень защиты ; стадии инициализации от прерывания. Очистка бита GIE (Global Interrupt Enable) в ; регистре специального назначения INTCON блокирцет систему прерываний . ; При старте программы при включении питания значение бита GIE = 0 www.ask-lab.com ; ________________________________________________________________________ ORG 0 ;адрес старта программы, START clrf INTCON ; очистка регистра управления прерываниями btfss INTCON,GIE ; проверка состояния бита блокирования goto INIT ; передача управления на инициализацию goto START ; повторение попытки блокирования ....... ORG 4 ; адрес прерывания btfss CONTROL, Bit ; проверка корректности инициализации goto START ............. INIT bsf, CONTROL, Bit ; установка флага о корректном прохождении ; стадии инициализации в регистре общего назначения ;__________________________________________________________________ Пример 2 фактически представляет собой иллюстрацию применения техники робастного программирования для повышения надежности функционирования микропроцессорной системы управления, использующей систему прерывания. Сразу и выявляется и плата за увеличение надежности, которая в данном случае увеличивает время обработки прерываний на один командный цикл. 3.1. Проверка фаз конфигурирования и инициализации www.ask-lab.com Как следует из вышеизложенного критерием возможности функционирования системы в соответствии с предписанным алгоритмом после выполнения фазы конфигурирования и инициализации является наличие требуемых значений в регистрах конфигурирующих микропроцессор и конкретные задачи. Как правило, загружаемые в регистры значения не меняются от включения к включению. В соответствии с этим, контроль выполненния фазы конфигурации и инициализации может быть организован следующим способом. По окончанию этой фазы инициализации производится контрольное суммирование всех задействованных специальных регистров, результат сравнивается с эталонным и делается вывод о правильности или неправильности прохождения фазы инициализации. Такой способ фактически представляет собой процедуру автотестирования и фактически имеет ряд недостатков принципиального свойства, разобранных в первой части данной статьи. К примеру, если во время выполнения фазы инициализации происходит сбой в ходе выполнения программы и переход в другую область памяти программ, то фактически фаза инициализации не будет корректно выполнена и как до таковой проверки дело не дойдет. В соответствии с принципом, сформулированным в первой части данной работы “Брадобрея бреют другие брадобреи” существенно повысить надежность проверки может лишь применение внешних тестирующих цепей. В качестве достаточно простого способа можно предложить метод контроля длительности фазы конфигурирования и инициализации, заключающийся в выдаче по специально выделенному порту сигнала о корректном прохождении фазы инициализации. Этот сигнал должен появиться не позже, чем через некоторый фиксированный промежуток времени (который не трудно рассчитать в процессе разработки) после включения устройства. Простейшая реализация подразумевает использование внешнего сторожевого таймера. Могут быть предложены и более сложные варианты как, например, на рис. 6. Для надежности фиксации проверяемого факта за «сигнал» в данном случае принимается появление в течение заданного времени не одного (поскольку это может произойти в результате сбоя в ходе выполнения программы), а множества импульсов (в данном случае, шестнадцати). Соответственно, на программную часть реализуемого способа ложиться генерация по окончанию фазы инициализации данного количества импульсов на соответствующих ножках портов, используемых для контроля. Рис. 6. Схема отслеживания корректного прохождения фазы инициализации. Сигнал «Инициализация не пройдена» появляется при переполнении восьмиразрядного счетчика в случае, если на четырехразрядный счетчик (на схеме слева) поступит после сброса менее 16 импульсов. 3.2. Способ проверки прохождения корректной инициализации с использованием стандарта внутрисхемной эмуляции Гораздо более широкие возможности по проверке правильности прохождения фазы инициализации предоставляет интенсивно распространяющийся в настоящее время стандарт внутрикристальной эмуляции (или отладки) OnCETM. OnCE обеспечивает простой недорогой и быстрый инструмент независимого доступа к внутренним регистрам процессора и периферии. OnCE сообщает программисту (в процессе отладки) или на верхний уровень управления (в процессе работы) статус регистров, ячеек памяти, шин и нескольких инструкций, выполненных последними. Доступ к аппаратуре OnCE осуществляется посредством известного четырехпроводного интерфейса. Таким образом, система управления более высокого уровня по прошествию некоторого времени, необходимого для проведения конфигурации подчиненной системой, проводит считывание определенного набора регистров и проверку их содержимого. В случае несовпадения значений система верхнего уровня выставляет сигнал неисправности и удерживает все подчиненные системы в состоянии аппаратного сброса для предотвращения выдачи неверных управляющих воздействий. Использование OnCE может быть полезным и при целевой работе системы управления для контроля над ходом выполнения программы. Единственным ограничением в применении этого стандарта с целью контроля является необходимость использования (при отсутствии иерархии систем) контролирующего устройства, по сложности соизмеримого с контролируемой системой. Кроме того, данный стандарт применяется пока лишь в микропроцессорах определенного уровня сложности. 4. Фаза реализации алгоритма управления 4.1. Условия надежного функционирования микропроцессорной системы www.ask-lab.com Для надежной работы микропроцессора в составе системы и, соответственно, системы управления в целом в течение длительного времени необходимо непрерывное выполнение следующего ряда условий: 1. Питающее напряжение находится в допустимых для каждой конкретной системы, а также для примененного микропроцессора, пределах. 2. Генератор тактовых импульсов дает стабильную по частоте и амплитуде последовательность импульсов. 3. Из памяти программ выбираются заданные битовые строки (команды) и при этом априори считается, что формально алгоритм верен и проверен на функционально полном наборе тестовых примеров. 4. Управляющий и операционный автоматы ядра микропроцессора функционируют в соответствии с заданным графом переходов. 5. Арифметическое устройство микропроцессора производит корректные вычисления (включая формирование макропризнаков). 6. Без ошибок производятся операции записи и чтения из памяти данных, в процессе хранения не происходит искажения записанных данных. 7. Встроенная периферия микроконтроллера без ошибок выполняет свои функциональные задачи. Пункты 1и 2 будем считать выполненными с помощью необходимого набора аппаратных средств. Реализовать контроль над выполнением пункта 3 разработчик системы управления в состоянии только в тех случаях, когда память программ находится вне кристалла микропроцессора либо за счет использования специальных архитектур микропроцессоров. Контроль за правильность выполнения остальные пункты, как правило, требуют использования комбинированных программно-аппаратных решений, и как правило могут использованы лишь косвенные способы контроля. 4.2 Тестирование ядра микропроцессора Конкретный варианты автотестирования ядра микропроцессора применительно к микропроцессорам фирмы Microchip приведен в работе [ ]. Одним из признаков работоспособности ядра может служить корректное прохождение фазы конфигурирования и инициализации, если контроль за ее прохождением осуществляется внешними тестирующими цепями. По отношению к ядру микропроцессора может быть сформулирован своебразный принцип “презумции неисправности”, подразумевающий наличие сигналов, генерируемых микропроцессором для подтверждения своей готовности к работе. Простейший вариант индикации неготовности к работе приведен на рис. 4.3 Тестирование целостности кода www.ask-lab.com В связи с подходом, предложенным в первой части данной работы, программу для микропроцессорной системы управления в контексте данной статьи следует рассматривать как совокупность пространственно распределенных зарядов. Понятно, что всегда имеется вероятность повреждения этой системы зарядов за счет внешних электромагнитных воздействий, которые являются достаточно распространненным явлениям для промышленных применений , не говоря уже о ядерных технологиях, военных применениях встроенных систем программного управления. Современные стандарты на встроенные системы управления предъявляют жесткие требования к контролю за целостностью кода в процессе реализации алгоритма управления. Для этого предлагается использовать ряд способов: от подсчета контрольных сумм всех битовых строк, составляющих программу до контроля конкретных команд В простейших реализациях это может быть тривиальный контроль четности (нечетности), а в лучшем – применение каких-либо обнаруживающих ошибки кодов (задача исправления ошибки в этом случае требует чрезмерной аппаратной избыточности). Для анализа правильности выборки 16-битного слова достаточно применения 3-х битной последовательности с порождающим полиномом, например, x3+x+1. В случае обнаружения ошибки возможно: повторное чтение ошибочного слова (если это позволяет принцип выборки микропроцессором из памяти программ); остановка микроконтроллера (например, путем удержания в состоянии аппаратного сброса); кратковременный аппаратный сброс микроконтроллера. Выбор того или иного принципа работы подобной контролирующей схемы зависит от особенностей конкретной разработки. Наличие же такой схемы позволяет разработчику программного обеспечения для встроенной системы управления не отвлекаться на рассмотрение ситуации выборки неверной команды и существенно сократить набор применяемых приемов робастного программирования. В настоящее время существует ряд микроконтроллеров, имеющих аппаратные решения не только обнаруживающие нарушения в памяти программ, но и позволяющие скорректировать нарушенную часть. Примером таких микроконтроллеров является серия M16C фирмы Mitsubishi Electric. В них применен следующий оригинальный прием. Если в «прошитой» памяти программ (имеется в виду масочная прошивка) обнаруживается нарушение содержимого ячейки (все равно, по какой причине), то, используя специальный регистр, можно автоматически перейти от выборки сбойного участка из энергонезависимой внутренней памяти к выборке корректирующего участка программы из внешней энергозависимой памяти. Во внешнюю же память необходимый код загружается после запуска системы управления, во время инициализации. Отметим, что использование в старшем семействе микропроцессоров фирмы Microchip PIC17Cxx модифицированной гарвардской архитектуры был обусловлен необходимостью обеспечить возможность контроля за целостностью кода. 4.4 Программно-аппаратные методы динамического контроля алгоритма Под динамическим контролем алгоритма будем понимать косвенный метод контроля посредством измерения внешними схемами контроля динамических параметров, формируемых программным обеспечением микропроцессора в ходе реализации предписанного алгоритма функционирования. 4.4.1 Использование сторожевого таймера www.ask-lab.com Одним из широко используемых приемов увеличения надежности программного обеспечения данного класса является контроль с использованием временных интервалов. Суть этого способа увеличения надежности функционирования заключается в параллельной работе программы и независимого таймера, который при переполнении его собственного регистра счетчика приводит к прерыванию. Этот таймер носит название сторожевого, (английское его название - WATCH DOG) и увеличение значения его регистра производится в каждом командном цикле выполнения команд. При таком методе контроля структура программы должна быть организована таким образом, чтобы при корректном ходе выполнении алгоритма программными средствами производилась очистка регистра счетчика за время меньшее, чем количество тактов необходимое для переполнения регистра сторожевого таймера. При ненормальном ходе выполнения регистр сторожевого таймера будет вовремя не очищен, и это приведет к прерыванию. Обработчик прерываний может распознать причину и в случае необходимости произвести рестарт программы с соответствующими параметрами инициализации задач. Для увеличения надежности систем управления часто используется внешний таймер (внешний WATCH DOG), который при переполнении принудительно производит рестарт программы, запуская тем самым цикл тестирования ядра, начальную установку регистров инициализацию задач и т.п. Фактически применение этой техники контроля приводит к квантованию процесса выполнения программы и требует четкого расчета и синхронизации всех процессов. При наличии в системе нескольких источников асинхронных сигналов и сложных алгоритмов их обработки с переходами по условию может оказаться затруднительным проверка всех цепочек ветвлений при всех возможных значениях обрабатываемых параметров и сторожевой таймер сам может стать источником понижения надежности системы управления, так как ряд режимов могут блокироваться циклами рестарта инициированными сторожевым таймером. С другой стороны, следует отметить, что применение сторожевого таймера стало стандартом де факто для встроенных систем управления. 4.4.2 Аппаратно-программный метод контроля процессограммы Функционирование микроконтроллера, основу программного обеспечения которого составляет микрооперационная система реального времени, связано с понятием процессограммы (в ряде случаев термин “циклограмма” может адекватнее отражать суть). Однако данное понятие используется для формального описания алгоритма функционирования систем управления и в чистом виде не проявляет себя для «внешнего наблюдателя». Но несложно сделать так, чтобы изменение процессограммы с течением времени приводило к соответствующему изменению, например, логических уровней на портах вывода. Идея метода, заключается в генерировании на выходе (выходах) порта информационного импульса диспетчером очереди задач либо ядром микрооперационной системы тестового импульса для системы верхнего уровня либо дублирующего микропроцессора. Метод предназначен для организации косвенного контроля за функционированием программно-аппаратного ядра микрооперационной системы в рамках реализации принципа “презумпции неисправности” системы управления. Такой подход требует некоторых ресурсов микропроцесоора на организацию контроля, но позволяет существенно расширить возможности по диагностике состояния системы управления. В сложных многопроцессорных комплексах реализующих многоуровневые системы управления возможно использование специальных тестирующих входных последовательностей и контроля за предписанной выходной последовательностью. Эта возможность позволяет обеспечить тестирование изделий на стадии производства системы, пуска и сервисного обслуживания. Пример 2 Простейшие варианты реализации метода контроля прцессограммы для диспетчера FIFO Вариант 1 ; Контроль начала очереди LINE CALL PULSE CALL TASK_1 .............................. CALL TASK_K GOTO LINE Вариант 2 ; Контроль каждого вызова LINE CALL PULSE CALL TASK_1 CALL PULSE CALL TASK_2 ...................... GOTO LINE www.ask-lab.com ;Подпрограмма формирования выходного контрольного сигнала PULSE BSF PORTB, 0 ; установка сигнального бита DELAY ; макрос задержки BCF PORTB,0 ; очистка сигнального бита RETURN В случае использование диспетчеризации c квантованием времени, по другому называемой дисциплиной RR (Round Robin) [ ] естественно использовать тактирующие отсчеты разбиения на кванты по времени для генрации сигнального импульса, и возложить эти функции на ядро микрооперационной системы. Этот метод может использоваться не только для контроля программноаппаратного ядра , но и при соответствующем усложнении позволяет проводить диагностику отказавших узлов. Причем, отслеживанием процессограммы покрывается значительная часть всего множества возможных неисправностей. Другими словами, делая выводы о корректном виде процессограммы, мы можем утверждать, что внутри микроконтроллера отсутствуют какиелибо отказавшие или сбойные элементы и непредусмотренные алгоритмом изменения в ходе работы программы, способные нарушить целевую работу системы управления. Ведение истории изменения процессограммы позволяет системе управления более высокого уровня иерархии определить причины возникшего сбоя. На рис. 8а. приведен пример реализации такого метода контроля. Работа приведенной схемы основана на обнаружении любого из указанных в табл. 2. сбоев в ходе работы программного обеспечения микроконтроллера. Кроме того, если схему дополнить частью изображенной на рис. 8б., то с некоторой глубиной будет сохраняться последовательность изменения процессограммы. Поэтому после получения сигнала о сбое, система более высокого уровня иерархии имеет возможность обратиться к истории работы программного обеспечения микроконтроллера и вынести диагноз. Зависание в процессе выполнения кода МОСРВ. www.ask-lab.com Нарушение в процессограмме Вид процессограммы говорит о запуске двух задач одновременно (рис. б). Время выполнения одной из задач больше допустимого (рис. в). Промежуток времени между окончанием последней задачи и запуском следующей превысило допустимое (рис. г). Табл. 2. Соотв. нарушение в работе ПО Непредусмотренное алгоритмом изменение последовательности выполнения команд. Зависание при выполнении одной из задач. а) б) в) г) www.ask-lab.com Рис. 7. Примеры процессограмм при (случай асинхронного запуска четырех задач): а) нормальной работе; б) непредусмотренном алгоритмом изменении последовательности выполнения команд; в) зависании при выполнении одной из задач; г) зависании в процессе выполнения кода МОСРВ. Рис. 8а. Схема контроля над изменением процессограммы www.ask-lab.com Рис. 8б. Схема сохранения истории изменения процессограммы с глубиной 3. 4.5. Тестирование периферийных модулей Сложнее дело обстоит с организацией процедур тестирования периферийных модулей микропроцессора и внешних по отношению к микропроцессору устройств, необходимых для реализации предписанного алгоритма управления. Следует понимать, что введение специальных аппаратных средств с целью своевременного обнаружения сбоев целесообразно не для всех приложений. Цена отказа системы управления детской игрушки и системы управления беспилотным летательным аппаратом различаются весьма значительно и во втором случае стоимость системы контроля ограничивается лишь функционально-технологической возможностью реализации системы контроля, а вовсе не ценовым фактором . Если речь идет о мини устройствах использование программно-аппаратных способов контроля может оказаться невозможно и по другим соображениям: ограничения по потребляемой мощности, массо-габаритным показателям и т.д. В этих случаях единственно возможным способом обнаружения возникающих неисправностей является выполнение процедур самотестирования и тестирования некоторых внешних по отношению к микроконтроллеру блоков, не требующее дополнительных аппаратурных затрат (например, проверка работоспособности внешней электрически перепрограммируемой памяти). С функциональной точки зрения система управления выполняет следующие операции: получение и фиксации входных воздействий обработка полученной информации выдача управляющих воздействий. Только надежная работа системы на каждом из этих этапов может привести к реализации перечисленных ранее подфункций и, следовательно, к достижению цели управления. 4.5.1. Контроль над правильностью получаемых входных воздействий www.ask-lab.com Для организации контроля могут быть предложено два подхода: 1) Резервирование цепей, доставляющих микроконтроллеру входную информацию; 2) Аналитический контроль над достоверностью информации. Во втором случае микроконтроллер сразу по получению значения входного воздействия принимает решение о возможности или невозможности данного значения в настоящий момент времени. Другими словами, определяются ответы на вопросы: возможно ли такое изменение входного воздействия по сравнению с предыдущим измерением; находится ли полученное значение в пределах реальных для этого параметра (при измерении аналогового сигнала). При положительном ответе на оба вопроса считается, что информация достоверна. В противном случае возможно многократное проведение измерений и затем либо выработка сигнала об отказе устройства доставки входной информации, либо продолжение нормальной работы (возникновение случайного выброса). Все описанные выше действия, включая проверку входной информации на достоверность, легко формализуемы. С другой стороны понятно, что аналитический способ может не дать верного ответа на вопрос о состоянии цепей доставки входных воздействий. Первый же из указанных способов в силу очевидной простоты его реализации вносит существенную аппаратную избыточность. Однако это неизбежная плата для высоконадежных систем управления для применений “жесткого реального времени”. 4.5.2. Контроль управляющих воздействий Если принять, что система управления получила истинные входные воздействия, провела вычисления с получением корректных результатов, то последним, что остается для обеспечения выполнения системой целевых функций, является доставка исполнительному органу необходимых управляющих воздействий. Если этого не удается сделать без ошибок, то все предыдущие меры по обеспечению надежности оказываются напрасными. Таким образом, данный этап является ровно столько же важным для обеспечения стабильной работы системы управления в целом. Рассмотрим два метода проверки факта доведения управляющих воздействий до потребителя: Метод детектирования обратной связи. Когда разрабатываемая система управления представляет собой часть автоматической системы управления (с обратной связью по управляемому параметру), то факт исполнения выработанных воздействий подтверждается изменением контролируемого параметра в ожидаемую сторону (с учетом инерционности объекта управления). В случае отсутствия таких изменений в течение заданного времени можно говорить о потере управления над объектом, вследствие отсутствия реакции исполнительного органа на управляющие воздействия (при условии исправности дискриминатора и вычислителя). Реализация этого метода подразумевает существенное усложнение алгоритма управления, который в данном случае должен оперировать по крайней мере с двумя моделями управляемого объекта: основной и модели контроля. Метод автоконтроля управляющих воздействий www.ask-lab.com Следует учитывать то, что причиной «не поступления» управляющих воздействий к исполнительному органу может являться также и неисправность портов контроллера или микроконтроллера или нарушение электрических цепей «порт - элементы цепи управления». Таким образом, программа контроллера должна обладать способностью анализировать факт передачи управляющего сигнала порта. Данную задачу можно осуществлять как оперативно (т.е. во время выполнения задач управления), так и в процессе реализации тестов (при включении питания, периодических и т.д.). Понятно, что контроль над работоспособностью портов и внешних цепей средствами микроконтроллера возможен лишь при возможности управления ими (другими словами, изменением потенциала на них) и при этом определения их состояния. Первое само собой уже реализовано, поскольку это является функциональной обязанностью портов. Второе же необходимо реализовывать специально, используя дополнительные схемотехнические решения, неизбежно приводящие к использованию избыточного набора портов микроконтроллера. В простейшем случае можно поступить следующим образом: выделить для каждой цепи управления (т.е. для каждого порта вывода) порт ввода и завести на него управляющую цепь (рис. 9). Затем при изменении управляющего воздействия с помощью порта ввода анализировать поступление требуемого сигнала в цепь управления. Реализация такого способы возможна в случае, когда система управления имеет небольшое количество релейных выходов в сравнении с имеющимся набором свободных портов. В то же время, только такой способ позволяет реализовывать контроль в полной мере прямо в процессе выполнения управляющих функций. В программе микроконтроллера это приведет к замене инструкций, устанавливающих и сбрасывающих порт на соответствующие макросы. Пример таких макросов для системы команд PIC-контроллеров фирмы Microchip Technology Inc. приведен ниже: ; Макрос установления разряда порта с контролем поступления управляющих ; воздействий BSF_CON MACRO PORT_MAIN, PIN_MAIN, PORT_CON, PIN_CON BSF PORT_MAIN, PIN_MAIN ; Установить разряд управляемого порта NOP*; Задержка на время окончания переходных процессов в цепи управления BTFSS PORT_CON, PIN_CON ; Проверка состояния контролируемой цепи GOTO PORT_FAIL ; Управляющее воздействие не поступило в цепь ; управления ENDM ; Макрос сброса разряда порта с контролем поступления управляющих воздействий BSF_CON MACRO PORT_MAIN, PIN_MAIN, PORT_CON, PIN_CON BSF PORT_MAIN, PIN_MAIN ; Сбросить разряд управляемого порта NOP*; Задержка на время окончания переходных процессов в цепи управления BTFSC PORT_CON, PIN_CON ; Проверка состояния контролируемой цепи GOTO PORT_FAIL ; Управляющее воздействие не поступило в цепь ; управления ENDM * - количество пустых операторов следует подобрать отдельно для каждого приложения, в зависимости постоянной времени контролируемой цепи управления. Микроконтроллер Вывод Упр. порт Контр. порт Часть цепи управления Часть цепи управления К исполните льному органу Ввод Рис. 9. Контроль над поступлением управляющего воздействия в цепь управления Метод внешних тестирующих цепей www.ask-lab.com Для экономии выводов микроконтроллера, задействованных под контроль, предлагается метод тестового контроля над исправностью цепей управления, аппаратная часть реализации которого приведена на рис. 10. Схема позволяет провести автотестирование периферийных устройств микропроцессора под управлением соответствующих тестовых процедур. В этом режиме контролирующий порт переводится в режим ввода. Управляющие цепи настраиваются на вывод и на них реализуется так называемый «бегущий нуль», т.е. на всех портах, кроме одного, выставляется высокий уровень сигнала и затем лог. ‘0’ (низкий уровень) "пробегает" все контролируемые порты последовательно. В результате возможны две ситуации. Первая, контролируемая цепь (цепь с лог. ‘0’), исправна. Соответствующий диод оказывается в режиме прямого смещения и открывается. Падение напряжения на резисторе, приложенное низким уровнем потенциала к контролирующему порту, приводит к фиксации на нем уровня нуля. www.ask-lab.com Вторая, контролируемая цепь, не исправна. Поскольку на всех остальных управляющих цепях присутствует высокий уровень, то открытие ни одного из диодов не произойдет. На контролирующем порте остается высокий уровень напряжения, в результате чего будет зафиксирован уровень единицы. Таким образом, последовательно проверяются все управляющие цепи. Описанная последовательность действий не позволяет определить наличие постоянного низкого уровня в управляющей цепи. Для обнаружения этого вида отказа необходимо выставить на всех управляющих цепях высокий уровень. Тогда если чтение контролирующего порта даст результат ‘0’, то можно будет сделать вывод о наличии постоянного низкого уровня в одной из управляющих цепей (затем при необходимости методом исключения можно определить конкретную отказавшую цепь). В результате проведенных тестов делается вывод о возможности или невозможности дальнейшего функционирования системы управления. В режиме реализации штатного алгоритма управления контролирующий порт переводится в режим вывода и на нем выставляется лог. ‘0’, что в результате запирает все диоды. Таким образом, в процессе нормальной работы схема контроля практически не оказывает влияния на уровни напряжения в управляющих цепях. Проведение теста с помощью подобной схемы в процессе целевой работы системы управления в большинстве случаев окажется невозможным по причине возможного поступления недопустимых управляющих воздействий к объекту управления. Единственно возможным решением в данной ситуации может стать отключение каким-либо образом на время проведения теста объекта управления от управляющих цепей. Применение более дорогих схем контроля над поступлением правильных управляющих воздействий в рамках реализации принципа "Брадобрея бреет другой брадобрей" даст возможность значительно увеличить эффективность контроля. Центральным контролирующим органом в данном случае может являться как другой микроконтроллер, так и некая цепь на жесткой логике, подающая сигнал о наличии неверного в данной конкретной ситуации сигнала управления и/или блокирующая цепь управления. Выбор того или иного способа зависит от сложности анализируемого сигнала, необходимой реакции на сбой и прочих требований к работе системы управления. Однако в любом случае необходимо обеспечение значительно больших показателей надежности контролирующей схемы по сравнению с контролируемой. Причем эффективность примененного программноаппаратного метода контроля напрямую зависит от данного отношения, которое в числовых величинах по нашим представлениям Рис. 10. Аппаратная часть реализации контроля над должно составлять не менее порядка. исправностью цепей передачи управляющих Обеспечение же достаточного уровня воздействий. надежности контролирующей части системы управления возможно различными путями. Во-первых, это сокращение количества логических элементов, составляющих данную часть, поскольку схема надежности представляется чаще всего последовательным соединением всех этих элементов. В виду этого, предпочтительным является применение в качестве контролирующих блоков схем именно жесткой логики, т.к. они по сравнению с программно-управляемыми схемами имеют оптимальное количество логических элементов. Во-вторых, помещение контролирующей части схемы в более благоприятные, чем контролируемая, условия (температура, питание) также ведет к увеличению отношения (надежность контролирующей схемы) / (надежность контролируемой схемы). Среди производимых в настоящее время микроконтроллеров все чаще встречаются модели, включающие в состав своей периферии контроллер порта и аппаратуру архитектуры сканирования границ (стандарт IEEE 1149.1 JTAG). В этом случае при наличии в составе системы схемы управления более высокого уровня иерархии или применения в качестве основы контролирующей схемы микроконтроллера целесообразно применять этот стандарт, как удобный интерфейс доступа к регистрам портов ввода/вывода. Для работы по интерфейсу IEEE 1149.1 JTAG достаточно задействовать всего 4 линии порта и реализовать несложный протокол информационного обмена с передачей информации в последовательном виде. Реально, минимальный набор команд по IEEE 1149.1 JTAG позволяет: «защелкнуть» данные с регистра портов ввода/вывода в регистр сканирования границ; под действием тактирующих импульсов производить сдвиг данных регистра сканирования границ с возможностью одновременной загрузки этого регистра необходимыми значениями, а также последовательного получения данных из регистра; воздействовать на порты ввода содержимым регистра сканирования границ. Таким образом, данный стандарт позволяет не только получить состояние выводов микроконтроллера, но и устанавливать на них любые логические значения. Последнее позволяет проводить тестирование микроконтроллера и диагностику неисправностей с помощью заданных тестовых наборов. Заключение www.ask-lab.com Настоящая работа преследовала своей целью максимально полно осветить современный взгляд на проблему обеспечения надежности микропроцессорных систем программного управления. Вектор развития современных средств разработки направлен в сторону широкого использования микрооперационных систем реального времени, которые, тем не менее, в большей степени ориентированы на использование их в качестве стандартизованного средства описания алгоритмов функционирования. Представляется целесообразным поставить в повестку дня вопрос о включении средств обеспечения надежности в состав современных программно-инструментальных платформ, хотя бы в качестве проблемноориентированных библиотек. Кроме этого, представляется необходимым для вновь разрабатываемых микрооперационных систем реального времени предусматривать возможность описания и реализации тестирующих процедур, как на начальной фазе функционирования системы, так и в виде фоновых тестирующих процессов. Другим важным шагов в развитии работ в данном направлении авторы считают разработку современных технологических тесто-диагностических комплексов с использованием методики ускоренных ресурсных испытаний.