Часть2 (1028411), страница 18
Текст из файла (страница 18)
Затем, сохраняет в стекесостояние основной программы, чтобы в нее можно было без проблем вернуться и определяет, не окончился ли вместе с малым и большой тик:TIMER: CLR EA; запретить прерыванияPUSH PSW; сохранить в стеке слово состояния процессораPUSH ACC; сохранить в стеке аккумуляторSETB RS0; задать первый банк регистров МКMOV TH0,24h; восстановить в счетном регистре таймераMOV TL0,25h; начальные значенияDJNZ 23h,FL0; если счетный регистр малых тиков не ноль, переход к FL0.Именно последняя команда этого фрагмента определяет, какой тик произошел,большой или малый. При большом тике будет выполняться следующая команда подпрограммы, при малом – последует переход к метке FL0. Опишем обработку большого тика, которая начинается с анализа задержки нулевого кванта.DJNZ R0,FH1; уменьшить задержку кванта 0 и переход к FН1, если не 0SETB 21h.0h; если задержка обнулена, установить флаг кванта 0FH1:DJNZ R1,FH2; уменьшить задержку кванта 1 и переход к FН2, если не 0SETB 21h.1h; если задержка обнулена, установить флаг кванта 1 и т.д.Если тик малый, будет выполняться часть подпрограммы, помеченная флагом FL0,уменьшающая на единицу задержки времени, заданные только в малых тиках и выставляющая флаги тех квантов, у которых задержка окончилась.
Далее приведен один извосьми сходных фрагментов этой части, описывающий декремент и последующий анализзадержки нулевого кванта.FL0:JB 22h.0h,FL1; если задержка кванта - в больших тиках, переход к FL1DJNZ R0,FL1; иначе уменьшить задержку и переход к FL1, если не нольSETB 21h.0h; если задержка обнулена, установить флаг кванта 0FL1:JB 22h.1h,FL2; и т.д.Завершающая, четвертая часть обеспечивает правильный возврат из прерывания.ENDTM: POP ACC; восстановить аккумуляторPOP PSW; и слово состояния процессораSETB EA; разрешить прерыванияRETI;возврат из прерыванияПодпрограмма, если посмотреть на ее полный текст, может показаться громоздкойи неуклюжей. С помощью цикла ее можно было бы описать гораздо компактнее. Но короткая программа и быстрая программа далеко не одно и то же.В рассмотренном примере диспетчера процессов обрабатываются только синхрокванты.
Реализовать запуск интерквантов можно, подавая аппаратно задаваемый сигнал ихзапуска на выводы какого либо порта МК и анализируя состояния выводов в пультовойпетле. Следует отметить, что экстракванты запускаются через прерывания, минуя диспетчер процессов, и их обработка может быть задана в подпрограмме начальной настройкипользователя.Распределение памяти программ приведено в таблице 5.5. Затонированы строки памяти программ, занимаемой диспетчером процессов. Диспетчер является основной ведущей программой. Зоны памяти, которые могут занимать стартовая программа и квантыпользователя, оставлены светлыми. Пользователь диспетчера может произвольно выбирать имена своей стартовой программы и квантов. Для привязки к диспетчеру он долженвписать эти имена в соответствующие зоны таблицы привязки и далее описать свои процессы (кванты) как подпрограммы в соответствии с правилами языка Ассемблер.Пример разработки программного обеспечения локального микроконтроллера, которое будет выполняться под управлением рассмотренного диспетчера процессов, приведенв следующем разделе главы 5, а полный текст программного обеспечения - в ПРИЛОЖЕНИИ 2.58Таблица 5.5.Распределение памяти программ МК под диспетчер процессовАдрес0000h0003h – 0025h002Bh – 0048h004Ah004Fh – 00BFh00D0h – 0141h0149h – 0164h0149h014Ch014Fh0152h0155h0158h015Bh015Eh0162h0165h и далееНаименование программы или зоны памятиНачальный пуск системыЗона векторов прерываний MKНачальная системная настройка МКЗапуск начальной настройки МК пользователем по адресу 0162hПультовая петля диспетчера задачПодпрограмма прерываний таймераЗона векторов системных прерываний для пользователяПереход к кванту пользователя с нулевым приоритетом LJMP NAME0Переход к кванту пользователя с первым приоритетом LJMP NAME1Переход к кванту пользователя со вторым приоритетом LJMP NAME2Переход к кванту пользователя с третьим приоритетом LJMP NAME3Переход к кванту пользователя с четвертым приоритетом LJMP NAME4Переход к кванту пользователя с пятым приоритетом LJMP NAME5Переход к кванту пользователя с шестым приоритетом LJMP NAME6Переход к кванту пользователя с седьмым приоритетом LJMP NAME7Переход к подпрограмме начальной настройки STARTСтартовая программа и кванты пользователяПри практическом использовании текста диспетчера процессов, если пользоватьсясвободно распространяемым сейчас ассемблером A8051.EXE и линковщиком XLINK.EXEпод DOS, следует набирать текст в кодировке DOS.
Как это сделать и как транслировать илинковать программу, будет проиллюстрировано в следующем разделе, где рассмотреноиспользование диспетчера для написания программы управления шаговым двигателем.Контрольные вопросы.1. Назначение и состав диспетчера процессов. Переменные окружения синхрокванта и управление ими.2. Функции и настройка таймера счетчика микроконтроллера при использованиидиспетчера потоков. Почему выбран первый режим?3. Рассчитайте максимальную задержку кванта при малом «тике» в 2 мс.4. Механизм запуска кванта и управление им.595.3. Пример разработки программного обеспечения.Аппаратное построение контроллера для управления шаговымдвигателемКонтроллер должен управлять вращением шагового двигателя с переменной скоростью в ту или иную сторону.
Пульт управления, содержит четыре кнопки К1..К4. Однакнопка запускает, а при повторном нажатии останавливает ШД. Вторая реверсирует еговращение. При нажатии и удерживании третьей кнопки двигатель ускоряет свое вращение. Четвертая аналогичным способом задает замедление. Обеспечить необходимый алгоритм работы должно программное обеспечение контроллера.Прежде всего, рассмотрим объект управления. Шаговый двигатель (ШД) - это электрическая машина, позволяющая преобразовывать импульсы управления в угловые илилинейные перемещения фиксированной величины.
шаговые двигатели по типу движениябывают двух видов: поступательные и вращательные. По конструкции ШД вращательногодвижения представляют собой многофазные синхронные двигатели с явно выраженнымиполюсами, рассчитанные на работу в широком диапазоне частот управляющих импульсов,включая нулевую (фиксацию ротора при питании фазной обмотки постоянным током).ШД различаются, прежде всего, числом фаз и типом магнитной системы. Большинствоконструкций ШД имеет от двух до шести фаз.
По типу магнитной системы ШД делятся надвигатели с активным и пассивным ротором. Статор и ротор имеют зубцы, через которыезамыкается магнитное поле, причем шаг зубцов на статоре и роторе одинаков.Ротор активного ШД представляет собой конструкцию из постоянных магнитов,ротор пассивного изготовлен из магнитомягкого материала.Наибольшее распространение получили ШД с пассивным ротором, конструктивнаясхема четырехфазного ШД с пассивным ротором представлена на рис. 5. 2.
На зубчатыхполюсах 1 статора расположены обмотки четырех фаз А,В, С и D. Обмотки одной фазы размещены на противоположных полюсах и соединены последовательно. Привключенной фазе А ротор 2 занимает позицию, соответствующую максимуму магнитной проводимости междуполюсами фазы А и ротором, как показано на рисунке.При включении фазы В ротор поворачивается против часовой стрелки на четверть шага и т.д. В полном циклекоммутации фаз (А-В-С-D) ротор повернется на угол, занимаемый одним зубцом и одним пазом ротора. В данном примере с 22 зубцами это составит 1/22 оборота.
Вкаждом из четырех тактов цикла коммутации ротор поРис. 5.2. Конструктивнаяворачивается на 1/88 оборота. Типовая серия шаговыхсхема четырехфазного шадвигателей с пассивным ротором ДШИ-200 имеет 200гового двигателя с пассившагов на оборот.ным ротором.Реверс ШД осуществляется изменением последовательности включения фазных обмоток на противоположную (А-D-С-В).Это простейший вариант четырехфазного подключения и униполярной однофазнойкоммутации. Существуют и другие варианты подключения и коммутации: двухфазноеподключение при мостовой коммутации, в которой меняется направление протекающегопо фазам двигателя тока, режимы дробления шага двигателя. Их рассмотрение выходит зарамки настоящего учебного пособия и должно рассматриваться отдельно в курсе привода,поскольку ШД является широко применяемым в настоящее время универсальным электроприводом.60Локальный контроллер для управления шаговым двигателем (ШД) представлен нарис.