Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование микропроцессорных систем управления подвижного состава железных дорог. Учебное пособие по дисциплинам «Автоматизированные и микропроц.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
В качестве такой «меры» применён таймер № 1, настроенный на выработку запросов на прерывание через фиксированный ин­тервал времени, равный такту работы программы. Для инициали­зации данного режима работы таймера используется процедура
Timer1.initialize(Time), содержащаяся в библиотеке TimerOne.h, не входящий в пакет Arduino IDE, однако доступный
в сети Internet. Здесь Time – интервал времени между выработкой последовательных запросов на прерывание, заданный в микросе­кундах. Назначение некоторого фрагмента программного кода, оформленного в виде процедуры, в качестве обработчика прерыва­ний, осуществляется в результате вызова команды Timer1.attachInterrupt(Name), содержащейся в той же самой библиотеке. Здесь Name – любое допустимое имя процедуры, назначенной в качестве обработчика прерываний. В рассматривае-
13
мом примере такой процедурой является delta
. На рисунке 4.32 приведена диаграмма, иллюстрирующая взаимодействие основ­ной программы и обработчика прерываний, реализованная в рас­сматриваемом примере.
Принципиальная схема установки приведена на рисунке 4.32. В качестве нагрузки инвертора использован дроссель (катушка ин­дуктивности), параметры которого приведены в разделе 7.12.
Подготовка к работе
1. Изучить принципиальную схему установки.
2. Проанализировать программу управления инвертором напря-
жения.
3. Составить схему алгоритма формирования разворачивающего
сигнала.
4. Составить схему алгоритма формирования модулирующего
сигнала.
5. Составить схему алгоритма формирования сигналов управле-
ния транзисторами инвертора.
13
Здесь необходимо отметить, что время исполнения проце­дуры обработки прерывания не должно превышать периодичность вызова этой процедуры. Нарушение данного условия ведёт к нару­шению синхронизации работы программы и последовательности исполняемых операций. В рассматриваемом примере данное нару­шение приводит к отклонению временных характеристик выраба­тываемого сигнала от расчётных.
101
Рисунок 4.32 – Взаимодействие основной программы
и обработчика прерываний
Рисунок 4.33 – Принципиальная схема установки
102
#include <TimerOne.h> const byte VT1=10; const byte VT2=11; const byte VT3=12; const byte VT4=13; int Tp; int Time; int sinus_step; int sinus_val; float depth; int Direction; int sinus_counter; int tick, counter;
int sinus [64] = {0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 10 , 10, 10, 10, 10, 10, 9, 9, 8, 8, 7, 6, 6, 5, 4, 3, 2, 1, 0, -1, -2,
-3, -4, -5, -6, -6,
-7, -8, -8, -9, -9,
-10, -10, -10, -10, -10,
-10, -10, -9, -9, -8,
-8, -7, -6, -6, -5,
-4, -3, -2, -1}; void delta() { tick=tick+Direction; Time=Time+Tp; if (Direction == 1 && tick == 10) {Direction=-1; } if (Direction == -1 && tick == -10) {Direction=1;} if (Time >= sinus_counter) { sinus_counter=sinus_counter+sinus_step; ++counter; sinus_val=int(depth*sinus[counter]); } if (counter == 64) {
103
Time=0; sinus_counter=sinus_step; counter=0; tick=0; } if (tick <= sinus_val) { digitalWrite(VT1, 1); digitalWrite(VT2, 0); } else { digitalWrite(VT1, 0); digitalWrite(VT2, 1); } if (tick <= -1*sinus_val) { digitalWrite(VT3, 1); digitalWrite(VT4, 0); } else { digitalWrite(VT3, 0); digitalWrite(VT4, 1); } } void setup() { pinMode (VT1, OUTPUT); pinMode (VT2, OUTPUT); pinMode (VT3, OUTPUT); pinMode (VT4, OUTPUT); sinus_step=313; Tp=46; depth=0.9; tick=0; counter=0; Time=0; sinus_counter=sinus_step; sinus_val=int(depth*sinus[counter]); Direction=-1;
104
Timer1.initialize(Tp); // set a timer of length "dt" microseconds (1 millisecond) Timer1.attachInterrupt(delta); //Runs "delta" on each timer interrupt } void loop() { }
Порядок выполнения работы
1. Рассчитать значения управляющих переменных программы
для заданных преподавателем вариантов выходного сигнала инвертора.
2. Собрать установку, подключить измерительную систему.
3. Установить в программе рассчитанные в п. 1 исходные
данные.
4. Ввести программу в память микроконтроллера. Исследовать
работу установки, сохранить результаты измерений с обяза­тельным указанием параметров выходного сигнала.
5. При необходимости, повторить п. п. 2 и 3 с новыми исходными
данным.
6. Проанализировать полученные результаты.
Содержание отчёта
1. Наименование, цель работы.
2. Принципиальная схема устройства.
3. Текст программы.
4. Схемы алгоритмов формирования разворачивающего и моду-
лирующего сигналов.
5. Схема алгоритма формирования сигналов управления транзи-
сторами.
6. Результаты экспериментального исследования работы уста-
новки.
7. Заключение по работе.

5. Основы алгоритмизации

Написанию программы для вычислительной машины предше-
ствует составление её алгоритма. Алгоритм – это формальное опи-
105
сание способа решения задачи путём разбиения её на конечную по­следовательность действий (элементарных операций) над исход­ной информацией, приводящая за конечное число их применений к результату. Под словом «формальное» подразумевается, что опи­сание должно быть абсолютно полным и учитывать все возможные ситуации, которые могут встретиться по ходу решения. Под эле­ментарной операцией подразумевается действие, которое по зара­нее определённым критериям (например, очевидности), не имеет смысла детализировать.
Ниже сформулированы основные требования, предъявляемые
к алгоритму.
Детерминированность. Все шаги алгоритма делят на услов­ные и безусловные. Каждый из них должен быть чётко и одно­значно определён и не должен допускать произвольной трактовки исполнителем. Действия, выполненные на каждом шаге, должны быть однозначны независимо от исходных данных алгоритма. Ти­пичным примером множества элементарных действий является система команд ЭВМ.
Понятность. Алгоритмы должны выть ориентированы на конкретного исполнителя и сформулированы с учётом его возмож­ностей Для ЭВМ алгоритм должен быть написан на одном из алго­ритмических языков в виде программы.
Направленность (правильность) означает, что алгоритм при­меняется к исходным данным и приводит к получению результата. Для величин, не попадающих в область исходных данных, для ко­торых составлен алгоритм, он не может дать адекватного резуль­тата, и в этом случае должен быть оговорён результат работы ал­горитма. Это свойство определяет правильность алгоритма, т.е. при правильных входных данных он должен гарантировать ре­зультат, а при других – выдавать соответствующее сообщение.
Результативность (сходимость) — свойство, которое озна- чает, что после конечного числа шагов, зависящих от данных, алго­ритм должен остановиться с указанием того, что считать результа­том. В этом случае говорят, что алгоритм сходится.
Массовость — применимость алгоритма к разным наборам входных данных, т.е. один и тот же алгоритм можно применять для решения целого класса однотипных задач.
Эффективность. Отдельные указания исполнителю, содер­жащиеся в каждом шаге алгоритма, называются командами, а сово­купность команд, которые могут быть выполнены исполнителем,
106
называется системой команд (СК) исполнителя. Исполнители от­личаются друг от друга своими возможностями, т.е. наборами ко­манд, которые они понимают и могут выполнить. Следовательно, алгоритм, рассчитанный на конкретного исполнителя, должен со­держать простые шаги, чтобы их можно было выполнить точно и за конечное время, и содержать те команды, которые входят в его СК.
Реализация алгоритма связана с возможностью выполнения каждой команды за конечное время. Эффективный алгоритм поз­воляет решать задачу за минимальное время.
Создание и отладка алгоритма является важной составляю­щей успешного решения поставленной задачи, так как позволяет впоследствии написать программу, исключающую логические ошибки (например, нарушение последовательности выполнения операций). Предварительный анализ созданного алгоритма позво­ляет обнаружить и исключить на этапе проектирования малоэф­фективные громоздкие конструкции и повторения программного кода, ведущие к снижению скорости исполнения программы, а также увеличению её размер. Таким образом, выполняется оптими­зация программы, что весьма важно для микропроцессорных си­стем управления, особенно на базе микроконтроллеров, обладаю­щих сравнительно невысоким быстродействием и относительно малым объёмом запоминающего устройства.
Для записи алгоритма решения задачи применяются следую­щие изобразительные способы их представления:
1. Словесно-формульное описание.
2. Графический способ представления алгоритмов (блок­схема, схема графических символов).
3. Алгоритмические языки.
4. Операторные схемы.
5. Псевдокод.
В настоящем пособии основное внимание будет уделено 2-му
и 3-му способам представления алгоритмов.
Графический способ представления алгоритмов использует систему символов, изображение которых и способы взаимодей­ствия между которыми регламентированы межгосударственным стандартом [5]. Ниже приведены сведения об основных символах, используемых в настоящем пособии.
1. Процесс. Символ отображает функцию обработки данных
любого вида (выполнение определённой операции или группы
107
операций, приводящее к изменению значения, формы или разме­щения информации или к определению, по которому из несколь­ких направлений потока следует двигаться). Изображение данного символа приведено рисунке 5.1
Рисунок 5.1 – Изображение символа «Процесс»
Символами данного типа изображаются, например, операции присваивания и выполнения арифметических действий.
2. Предопределённый процесс. Символ отображает пред­определённый процесс, состоящий из одной или нескольких опера­ций или шагов программы, которые определены в другом месте (в подпрограмме, модуле). Изображение данного символа приведено на рисунке 5.2
Рисунок 5.2 – Изображение символа
«Предопределённый процесс»
3. Ручная операция. Символ отображает любой процесс, вы­полняемый человеком. Изображение данного символа приведено на рисунке 5.3.
Рисунок 5.3 – Изображение символа «Ручная операция»
4. Подготовка. Символ отображает модификацию команды или группы команд с целью воздействия на некоторую последую-
108
щую функцию (установка переключателя, модификация индекс-
. Символ, состоящий из двух частей,
ного регистра или инициализация программы). Изображение дан­ного символа приведено на рисунке 5.4.
Рисунок 5.4 – Изображение символа «Подготовка»
5. Параллельные действия. Символ отображает синхрониза­цию двух или более параллельных действий. Изображение данного символа приведено на рисунке 5.5
Рисунок 5.5 – Изображение символа
«Параллельное действие»
6. Решение. Символ отображает решение или функцию пере­ключательного типа, имеющую один вход и ряд альтернативных выходов, один и только один из которых может быть активизиро­ван после вычисления условий, определённых внутри этого сим­вола. Соответствующие результаты вычислений могут быть запи­саны по соседству с линиями, отображающими эти пути. Изображе­ние данного символа приведено на рисунке 5.6
Рисунок 5.6 – Изображение символа «Решение»
7. Граница цикла отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещают внутри символа в начале или вконце в зависимости от расположения операции, проверяющей условие. Пример изображения данного символа приведён на предпроверкой условия завершения – на рисунке 5.7, б; пример
рисунке 5.7, а; пример применения для цикла с
109
применения для цикла с постпрверкой условия завершения – на
соединители должны содержать одно и то же уникальное
рисунке 5.7, в.
Рисунок 5.7 – Изображение символа «Граница цикла» (а) и пример
его применения для цикла с предпроверкой (б) и постпроверкой
(в) условия
8. Данные. Символ отображает данные, носитель не определён. Изображение данного символа приведено на ри­сунке 5.8
Рисунок 5.8 – Изображение символа «Данные»
9. Соединитель. Символ отображает выход в часть схемы и вход из другой части схемы и используется для обрыва линии и продолжения её в другом месте. Соответствующие символы-
110
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]