Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование микропроцессорных систем управления подвижного состава железных дорог. Учебное пособие по дисциплинам «Автоматизированные и микропроц.pdf
X
- •ВВЕДЕНИЕ
- •1. Платформа Arduino UNO
- •1.1 Описание аппаратной части
- •2.1 Основы языка программирования С/С++
- •2.2 Арифметические операторы
- •2.2.1 Оператор присваивания
- •2.2.2 Сложение, вычитание, умножение и деление
- •2.2.3 Вычисление остатка от деления
- •2.3 Логические операторы
- •2.6.1 Условные операторы
- •2.6.1.1 Условный оператор if
- •2.6.1.2 Условный оператор if..else
- •2.6.1.3 Оператор switch…case
- •2.6.2 Операторы реализации циклических вычислений
- •2.6.2.1 Оператор цикла for
- •2.6.2.2 Оператор цикла while
- •2.6.2.3 Оператор цикла do...while
- •2.6.3 Оператор break
- •2.6.4 Оператор continue
- •2.6.5 Оператор return
- •2.6.6 Оператор перехода goto
- •2.7 Операции над битами
- •2.8 Составные операторы
- •2.8.1 Операторы ++ (инкремент) и – – (декремент)
- •2.8.2 Операторы += , –= , *= , /= , %=
- •2.8.3 Оператор &= и |=
- •2.9 Математические функции
- •2.9.2 Вычисление модуля числа
- •2.9.3 Ограничение числа заданным диапазоном
- •2.9.4 Масштабирование переменной
- •2.9.5 Возведение числа в степень
- •2.9.6 Вычисление квадратного корня числа
- •3. Ввод-вывод сигналов
- •3.2 Вывод дискретных сигналов digitalWrite()
- •3.3 Ввод дискретных сигналов digitalRead().
- •3.4 Ввод аналоговых сигналов analogRead()
- •3.5 Вывод аналоговых сигналов analogWrite()
- •4. Практические задания
- •5. Основы алгоритмизации
- •6. Элементы математической логики
- •7.1 Макетная плата
- •7.2 Постоянный резистор
- •7.3 Переменный резистор
- •7.4 Тактовая кнопка DTS-61N
- •7.5 Светодиод видимого спектра свечения
- •7.6 Четыре компаратора LM239N
- •7.7 Шесть логических элементов НЕ SN74HC04N
- •7.8 Приоритетный шифратор 8 в 3 SN74HC148N
- •7.9 Датчик угла поворота EXW1J-C24-AC0024L
- •7.11 Полевой транзистор IRF530NPBF
- •7.12 Дроссель Д25
- •КОНТРОЛЬНЫЕ ВОПРОСЫ
- •ИСПОЛЬЗОВАННЫЕ ИСТОЧНИКИ
- •СОДЕРЖАНИЕ

В качестве такой «меры» применён таймер № 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
