Устройства управления роботами, схемотехника и программирование (М. Предко, 2004). Устройства управления роботами, схемотехника и программирование. Устройствауправления роботамисхемотехника и микроконтроллеров picmicro
Скачать 6.79 Mb.
|
6.4. ИСПЫТАНИЯ РОБОТА Разработчику следует определить список испытаний, которые должен пройти робот, прежде чем можно будет сказать, что работа закончена и готова к тому, чтобы вынести ее на суд зрителей. Типичный список испытаний выглядит следу- ющим образом: • проверка стабильности работы во всех режимах (в том числе при пуске-оста- нове двигателей) при крайних значениях напряжения питания (4,75 и 5,25 В); • проверка начальной инициализации при включении питания и готовности выполнения команд пользователя; • проверка правильности выполнения команд пользователя; • проверка правильности работы датчиков. 362 Устройства управления роботами Кроме того, возможно, придется позаботиться о разработке необходимой доку- ментации, расчете надежности работы всех узлов и даже о тестировании разрабо- танной конструкции на соответствие санитарным и прочим требованиям и нормам. Хотя большинство микроконтроллеров сохраняет свою работоспособность при изменении напряжения питания в более широких пределах, чем указано выше, не стоит забывать и о других электронных компонентах, многие из которых выдер- живают только небольшие колебания напряжения питания (±5%). Помните о соблюдении мер безопасности. Разумеется, маленький робот не сможет причинить вреда окружающим, но он может разбиться сам, упав со стола, если вы вдруг потеряете над ним контроль. По этой причине я советую всегда предусматривать какой-либо метод бло- кировки колес, который предохранит робота от поломки, если вы вдруг забуде- те выключить напряжение питания, так как даже полностью отлаженное устрой- ство может неожиданно убежать от вас, случайно получив сигнал от светового датчика. Во многих случаях при тестировании схемы недостаточно одного логического пробника. Идеальный вариант - использование осциллографа и логического ана- лизатора, позволяющее проверить правильность всех выходных сигналов при всех возможных значениях входных. По роду занятий я почти всю жизнь проверял правильность работы тех или иных устройств, поэтому вопрос о тестировании мне наиболее близок. К сожале- нию, даже самое добросовестное тестирование не дает полной гарантии работо- способности устройства во всех обстоятельствах: всегда существует огромное ко- личество вариантов возможных неисправностей. При тестировании в первую очередь надо убедиться, что на предусмотренные значения входных сигналов ваше устройство реагирует правильно. Следует кон- тролировать значение этих входных сигналов, так как всегда может оказаться, что странности в поведении робота обусловлены не ошибкой в программе, а случай- ным отблеском, попавшим на световой датчик. Если значения входных сигналов или служебных переменных управляющей программы вышли за допустимые пределы, то робот должен остановиться и ка- ким-либо образом сигнализировать о возникшей проблеме. В наших проектах мы не использовали сторожевой таймер, но в реальных конструкциях он бывает весь- ма полезным, позволяя сформировать сигнал сброса микроконтроллера, если управляющая программа зависла и команда сброса сторожевого таймера не вы- полнилась вовремя. Ваш проект должен быть подробно документирован. В противном случае вряд ли кто-нибудь захочет его реализовать. Разумеется, вся документация должна быть доступна в электронном виде. Самым простым и переносимым для элект- ронных документов является обычный текстовый формат ASCII. Но если необ- ходимо включение в текст рисунков, графиков, схем и/или формул, то лучшим решением будут доступные на всех компьютерных платформах гипертекстовый формат HTML и формат PDF фирмы Adobe. Проектирование автоматических устройств 363 6.5. ПОИСК ОШИБОК Вместо термина отладка (debug), который традиционно ассоциируется с несколь- ко небрежным и не слишком вдумчивым процессом устранения ошибок в программах, я предпочитаю использовать более солидное выражение анализ оши- бок (failure analysis). Интересно, как простая замена технического термина сразу смещает акценты: не поиск «жучков», а структурированный анализ проблемы, по- зволяющий локализовать и устранить источник неправильной работы устройства! Вместо того чтобы вслепую заменять все элементы подряд, надеясь, что очередной замены устройство вдруг начнет работать правильно, примите к сведе- нию следующий алгоритм: • четко сформулируйте, в чем заключается проблема; • рассмотрите возможные варианты причин неправильной работы; • разработайте план истинной причины и ее устранения. Разработчик должен уметь провести подобный анализ в разнообразных ситу- ациях, в том числе и в самых крайних случаях, когда кажется, что устройство со- всем не работает или работает «практически правильно». Когда еще нет никаких идей по поводу того, что именно вызывает проблему, следует проверить логические уровни на всех элементах схемы. На данном этапе я обычно использую простой логический пробник. Если такое исследование не прояснило ситуацию, то, возможно, придется взять в руки авометр и проверить уровни напряжений на аналоговых и цифровых входах и выходах. Следует запи- сывать все результаты измерений. Проверяя работу встроенного тактового генератора, надо помнить, что допол- нительная емкость, вносимая логическим пробником, может нарушить процесс генерации и вызовет зависание программы. Чтобы убедиться в том, что програм- ма все еще выполняется, следует инициализировать выполнение какой-нибудь простой процедуры с четко видимым внешним эффектом (например, миганием светодиода). От вас требуется предельное внимание. Мне стыдно признаться, сколько раз я готов был воскликнуть «Эврика!» и тут же обнаруживал, что проверяю не ту ножку микросхемы. После того как все замеры сделаны, отложите устройство в сторону и проанализируйте, значения каких сигналов оказались вне ожидаемо- го диапазона. Любое несоответствие объясняется одой из двух причин: либо внешнее устрой- ство подает на данный вывод неправильный сигнал, либо управляющая програм- ма формирует на нем неправильное значение. Чтобы выяснить, с каким именно вариантом вы имеете дело, можно использовать омметр, проверяя с его помощью сопротивление между данным выводом и массой до и после его отключения от остальной схемы. К сожалению, для отключения вывода может потребоваться паяльник. Следует соблюдать максимальную объективность, стараясь не делать слишком поспешных предположений относительно того, что привело к возникновению 364 Устройства управления роботами ошибки. Неверно определив причину, люди начинают искать только подтвержде- ния своей догадки, пропуская все остальные возможные варианты. После проверки схемы можно приступать к тестированию программного обес- печения. Прежде всего я рекомендую вынуть микроконтроллер из схемы и прове- рить прошивку РПЗУ с помощью программатора. Обратите внимание на правиль- ность слова конфигурации, проверив, корректно ли установлен тип тактового генератора, не разрешена ли случайно работа сторожевого таймера и т.п. Если все в порядке, переходите к самой программе. При этом не следует забы- вать о необходимости подробно записывать все действия - как ни удивительно, это сэкономит много времени. Например, если проблемы возникли с последовательным интерфейсом пере- дачи данных, выясните, связана ли проблема с временными задержками, значе- ниями отдельных битов или их количеством. После того как ситуация стала более определенной, можно выполнить моделирование работы программы с помощью симулятора, чтобы в еще большей степени локализовать источник неправильного поведения робота. Теперь требуется выяснить, что стало причиной ошибки. Для этого может по- требоваться мысленный эксперимент, в ходе которого вы должны представить себе во всех подробностях, как и что происходит в управляющей программе и са- мой схеме в тот или иной момент. Следует понимать, что причин неисправности может быть сразу несколько. Работая над своими конструкциями, я не раз сталкивался со случаями, когда на- считывалось до пяти различных источников проблем, которые мешали правиль- ной работе устройства. Поэтому не следует быть слишком ленивым. Поверьте, во многих случаях вы только сэкономите время, если сделаете шаг немного в сторону и начнете с отлад- ки более простого приложения, где должна будет проявиться одна из имеющихся проблем. Тогда можно будет без помех изучить ситуацию и опробовать различ- ные варианты решения, после чего опять вернуться к сложному проекту. 6.6. МОДЕРНИЗАЦИЯ УСТРОЙСТВ После того как ваша схема, наконец, заработает, вы захотите добавить к ней но- вые периферийные устройства и разнообразные функции. При этом у вас, скорее всего, не возникнет особых проблем с электроникой или механическими частями. Самым сложным, как правило, оказывается перераспределение аппаратных ресур- сов, встроенных в микроконтроллер. Речь идет о памяти программ и данных, тай- мерах, обработчиках прерываний, блоках формирования Другая проблема возникает, когда вы хотите заимствовать для своего проек- та программный код из какого-либо источника (например, Internet). В таком случае оказывается, что различные участки кода написаны с использованием Проектирование автоматических устройств 365 разных стилей и методик, поэтому может потребоваться кардинально перерабо- тать программу, чтобы заставить все это работать вместе. ' Если приложение спроектировано правильно, то внесение необходимых изме- нений - не слишком сложная задача, но в противном случае проще написать все заново, чем пытаться как-то исправить отдельные фрагменты. Уже в самом начале работы над проектом желательно закладывать в него воз- можность модификации. Своего рода образцом правильной разработки приложе- ний могут служить примеры, приведенные в главе 4, где для реализации механи- ческих и электронных интерфейсов мы использовали прерывания от таймера, срабатывающего каждую миллисекунду. При проектировании биологического кода надо помнить, что для его правиль- ной работы в промежутке между запросами на прерывание следует оставлять по крайней мере 25% всех командных циклов, таким образом, отводя для выполне- ния обработчика прерываний не более 75% времени. Сложные вычисления нельзя реализовывать в процедуре обработки прерываний - их надо выносить в основ- ную программу. В идеале различные интерфейсные функции должны использовать разные аппаратные средства. Мы нарушили это правило лишь однажды, когда рассмат- ривали приемник команд дистанционного управления, который использовал тот же инфракрасный детектор, что и обнаружитель объектов. Применяя чужие разработки, не следует пытаться использовать в своем про- екте программный код, для которого не имеется исходного текста. Дело в том, что в новом окружении даже самая правильная программа может потребовать некото- рых переделок, а это невозможно, если имеется только объектный код. Все описанные в данной книге устройства мы реализовали с использованием только одного микроконтроллера, но при модернизации уже имеющихся схем наилучшее решение иногда заключается в добавлении еще одного контроллера. Поэтому никогда не помешает оставить свободными какие-нибудь два вывода, которые затем пригодятся для обеспечения их взаимосвязи. Две линии нужны для реализации синхронного обмена, так как в этом случае не требуется загружать таймеры обоих микроконтроллеров. Даже если в схеме использовано несколько микроконтроллеров, желательно, чтобы только один из них выполнял биологический код. В противном случае про- граммное обеспечение заметно усложняется, поскольку требуется обеспечить вза- имодействие отдельных частей биологического кода, выполняемого на разных процессорах. Кроме того, отладить такое распределенное приложение будет не очень-то просто. И последнее замечание: не забывайте, что следует отключать двигатели на то время, пока микроконтроллер работает с периферийными устройствами. В тече- ние опроса инфракрасных, световых и звуковых датчиков надо стремиться к тому, чтобы уровень помех был минимальным. ПРИЛОЖЕНИЕ 1 Глоссарий Здесь приведен список всех использованных в книге терминов и расшифровка аббревиатур. Адрес — порядковый номер регистра, ячейки памяти команд или данных в пределах пространства памяти процессора. Адресное пространство - диапазон возможных адресов ячеек памяти или пор- тов ввода-вывода, с которыми может работать процессор. Активные элементы - интегральные микросхемы, транзисторы и другие эле- менты электронных схем, для функционирования которых требуется внешний источник энергии. Ампер - величина силы тока: 1 А = 1 Кл / 1 с. См. Кулон. Аналоговый сигнал - сигнал, который может принимать любые значения в некотором диапазоне. Анод - положительный электрод. См. Катод. Асинхронная последовательная передача - метод обмена данными, в кото- ром передача сообщений происходит побитно (по одной линии) и не использует- ся дополнительная линия для передачи импульсов синхронизации. Ассемблер - инструментальное программное средство, с помощью которого исходный текст программы, написанной на языке низкого уровня, преобразуется в объектный файл. АЦП, аналого-цифровой преобразователь (ADC, Con- verter) - микросхема, предназначенная для преобразования входного аналогово- го напряжения в цифровое представление. См. ЦАП. Биполярные логические схемы - логические схемы, выполненные на базе биполярных транзисторов (единичные устройства или интегрированные сборки). См. n-p-п транзистор, p-n-р транзистор. Битовая маска - набор битов, используемый для установки/сброса отдельных разрядов некоторого двоичного числа. Внутрисхемное программирование Programming) - загрузка программы в микроконтроллер без его извлечения из целевой схемы. Восьмеричное число - число, представленное в позиционной системе счисле- ния по основанию 8. Гарвардская архитектура - архитектура процессора, имеющего раздельные шины для подключения памяти команд и памяти данных. Герц - единица измерения частоты: 1 Гц = 1 Приложение 1 367 Гистерезис - зависимость передаточной характеристики от направления менения входного сигнала. Обычно используется для фильтрации шумов в циф- ровых схемах. Графический интерфейс пользователя (GUI, Graphic User Interface) - про- стой, ориентированный на непрофессионального пользователя интерфейс ввода- вывода информации, который задействует экран, клавиатуру и мышь. Двоичные числа - числа, представленные в позиционной системе счисления по основанию 2. Например, десятичное число 37 = 32 + 4 + 1 = + + 2° = 10101. - логическая микросхема, используемая для передачи вход- ного сигнала на одну из нескольких выходных линий. См. Мультиплексор. Десятичное число - число, представленное в позиционной системе счисления по основанию 10. Дребезг механических контактов - эффект, заключающийся в появлении многочисленных ложных всплесков сигнала при коммутации механических пере- ключателей. ЖКИ (LCD, Liquid Crystal Display) - жидкокристаллический индикатор, используемый для отображения информации (обычно символьной). Защита от дребезга - устранение ложных всплесков возникающих при коммутации механических переключателей. Интерпретатор - программа, предназначенная для непосредственного вы- полнения исходного текста приложения (без его предварительной компиля- ции). Инфракрасный свет infrared) - свет, имеющий длину волны 760 нм и бо- лее, невидимый для человеческого глаза. Катод — отрицательный электрод. См. Анод. Катушка индуктивности - проволочная обмотка, предназначенная для хране- ния энергии магнитного поля. Часто используется для генерации или фильтра- ции электрических сигналов. Кварцевый резонатор - устройство, используемое для генерации тактовых импульсов с точно заданной частотой. Керамический резонатор - устройство, используемое для генерации тактовых импульсов определенной частоты (обычно с меньшей точностью, чем у кварцево- го резонатора). КМОП логика (CMOS) - тип логических микросхем, основанных на исполь- зовании п- и униполярных транзисторов. Командный цикл - период времени (всегда кратный длительности тактового цикла), в течение которого выполняется одна машинная команда процессора. Компаратор - электронное устройство с двумя входами, которое использует- ся для сравнения напряжений. Компилятор - инструментальное программное средство, предназначенное для преобразования исходного текста программы в объектный код. Компоновщик (linker) - инструментальное программное средство, предназна- ченное для объединения нескольких объектных модулей и/или библиотек и фор- мирования исполняемого файла. 368 Устройства управления роботами Конденсатор - устройство для сохранения электрического заряда. Часто исполь- зуется в электронных схемах для фильтрации сигналов. Существуют керамические, электролитические и др. конденсаторы; и электролитические являются поляризованными, то есть при их подключении необходимо соблюдать полярность. Короткий вывод поляризованного конденсатора — это катод (отрица- тельный электрод). Конечный автомат — аппаратное устройство или логическая модель системы с конечным набором возможных состояний. Переходы между состояниями осу- ществляются при выполнении заданных условий и отображаются с помощью гра- фа переходов (состояний). Конкатенация - объединение двух битовых или строковых последовательно- стей. Константа - числовое значение, которое не может быть изменено в программе. Кросс-ассемблер - инструментальное программное средство, позволяющее производить ассемблирование исходного текста программы, написанной для дру- гой аппаратной платформы. См. Ассемблер. Кросс-компилятор - инструментальное программное средство, позволяющее производить компиляцию исходного текста программы, написанной для другой аппаратной платформы. См. Компилятор. Кулон - единица электрического заряда: = См. Ампер. Логический анализатор - инструмент для проверки работы логических схем. Логический вентиль (логический элемент) - электронная схема, используе- мая для выполнения логических операций. |