Назад
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
Уфимский государственный авиационный технический
университет
Н. Г. Ч И К У Р О В
АЛГОРИТМИЧЕСКОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
КОМПЬЮТЕРНЫХ СИСТЕМ УПРАВЛЕНИЯ
Практикум
Уфа 2008
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
Уфимский государственный авиационный технический университет
Кафедра автоматизации технологических процессов
Н. Г. Ч И К У Р О В
АЛГОРИТМИЧЕСКОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
КОМПЬЮТЕРНЫХ СИСТЕМ УПРАВЛЕНИЯ
Практикум
Уфа 2008
УДК 004.4
ББК 32.965.7
Рецензенты: Кафедра МСС УГАТУ, к.т.н., доц. К.С. Кульга,
Кафедра АТП УГАТУ, к.т., доц. И. Месягутов
Алгоритмическое и программное обеспечение компьютерных
систем управления: Практикум/Н. Г. Чикуров; Уфимск. гос. авиац.
техн. ун-т; – Уфа: 2008. – 69 с.
Практикум предназначен для проведения практических занятий и
лабораторных работ по дисциплине «Алгоритмическое и программное
обеспечение компьютерных систем управления». В практикуме
рассматриваются математические алгоритмы управления формообразованием
сложнопрофильных деталей, обрабатываемых на станках с компьютерными
УЧПУ. В этих алгоритмах применяются численные методы решения систем
дифференциальных уравнений в форме Коши и в форме Шеннона. Основные
языки программирования - С++ и ASSEMBLER. Кроме того, в лабораторных
работах предусмотрено программирование цифровых регуляторов для
следящих электроприводов, а также составление и отладка программ
управления электроавтоматикой с помощью инструментальной системы
программирования ISaGRAF.
Практикум соответствует государственному образовательному стандарту
по направлению подготовки 220300 «Автоматизированные технологии и
производства» и предназначен для студентов специальности «Компьютерные
системы управления качеством для автоматизированных производств».
Табл. 6, Ил. 48. Библиогр. 6 назв.
Лабораторный практикум разработан в
рамках реализации инновационной
образовательной программы подготовки
кадров в области информационных
технологий проектирования, производства и
эксплуатации сложных технических
объектов (Приоритетный национальный
проект «Образование»)
©Уфимский государственный авиационный
технический университет, 2008
3
СОДЕРЖАНИЕ
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
Лабораторная работа №1. Программирование
и испытание кругового интерполятора для компьютерных
УЧПУ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1. Теоретические сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. Задание на практическое занятие . . . . . . . . . . . . . . . . . . . . .8
1.3. Методика решения задачи . . . . . . . . . . . . . . . . . . . . . . . . . . .9
1.4. Порядок выполнения лабораторной работы . . . . . . . . . . . .12
1.5. Содержание отчета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6. Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.7. Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
1.8. Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Лабораторная работа №2. Программирование
и испытание экспоненциального модуля
разгона-торможения для режимов позиционирования . . . . . . 16
2.1. Теоретические сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2. Задание на практическое занятие . . . . . . . . . . . . . . . . . . . . .19
2.3. Методика решения задачи . . . . . . . . . . . . . . . . . . . . . . . . . . .19
2.4. Порядок выполнения лабораторной работы . . . . . . . . . . . . 22
2.5. Содержание отчета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
2.6. Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
2.7. Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.8. Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
Лабораторная работа №3. Решение дифференциаль-
ных уравнений в форме Шеннона степенным методом . . . . . . .24
3.1. Теоретические сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2. Задание на практическое занятие . . . . . . . . . . . . . . . . . . . . .30
3.3. Методика решения задачи . . . . . . . . . . . . . . . . . . . . . . . . . . .30
3.4. Порядок выполнения лабораторной работы . . . . . . . . . . . . 33
3.5. Содержание отчета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
3.6. Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
3.7. Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.8. Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
Лабораторная работа 4. Программирование и
испытание сферического интерполятора для
компьютерных систем ЧПУ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.1. Теоретические сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2. Задание на практическое занятие . . . . . . . . . . . . . . . . . . . . .40
4.3. Методика решения задачи . . . . . . . . . . . . . . . . . . . . . . . . . . .40
4.4. Порядок выполнения лабораторной работы . . . . . . . . . . . . 42
4
4.5. Содержание отчета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.6. Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.7. Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
4.8. Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Лабораторная работа 5. Цифровой регулятор
на основе предикаторов для следящих электроприводов
подачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.1. Теоретические сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2. Задание на практическое занятие . . . . . . . . . . . . . . . . . . . . .55
5.3. Методика решения задачи . . . . . . . . . . . . . . . . . . . . . . . . . . .55
5.4. Порядок выполнения лабораторной работы . . . . . . . . . . . . 56
5.5. Содержание отчета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
5.6. Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
5.7. Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.8. Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Лабораторная работа 6. Программирование
и испытание дискретной системы управления агрегатным
станком . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
6.1. Теоретические сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.2. Задание на практическое занятие . . . . . . . . . . . . . . . . . . . . .66
6.3. Методика решения задачи . . . . . . . . . . . . . . . . . . . . . . . . . . .68
6.4. Порядок выполнения лабораторной работы . . . . . . . . . . . . 69
6.5. Содержание отчета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
6.6. Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.7. Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
5
ВВЕДЕНИЕ
Практикум по дисциплине «Алгоритмическое и программное
обеспечение компьютерных систем управления» адресован студентам
специальности «Компьютерные системы управления качеством для
автоматизированных производств». Содержание лабораторных работ
соответствует учебному пособию с одноименным названием.
Лабораторным работам по данной дисциплине предшествуют
практические занятия. Такой подход к организации учебного
процесса объясняется повышенной сложностью лабораторных работ.
Исходя из того, что теоретическая часть лабораторных и
практических занятий одинакова, оказалось целесообразным
совместить в одном учебном издании лабораторный практикум и
практикум по проведению практических занятий. В описании каждой
работы имеется задание на практическое занятие. Методика
проведения практических занятий выделена в описании отдельным
пунктом под названием «Методика решения задачи».
В первых двух лабораторных работах изучаются
математические алгоритмы для компьютерных систем управления
металлорежущими станками и промышленными манипуляторами.
Студенты программируют и испытывают на компьютерах алгоритмы
управления формообразованием сложнопрофильных деталей,
обрабатываемых на станках с ЧПУ. В этих алгоритмах они
применяют численные методы решения систем дифференциальных
уравнений в форме Коши и в форме Шеннона. Основные языки
программирования - С++ и ASSEMBLER.
В третьей лабораторной работе предусмотрено
программирование цифровых регуляторов для следящих
электроприводов с использованием предикаторов. Это новый тип
регуляторов, обеспечивающих высокое качество управления.
В четвертой лабораторной работе студенты составляют и
отлаживают программу управления электроавтоматикой с помощью
инструментальной системы программирования ISaGRAF.
Лабораторный практикум соответствует государственному
образовательному стандарту по направлению подготовки 220300
«Автоматизированные технологии и производства».
6
ЛАБОРАТОРНАЯ РАБОТА №1
ПРОГРАММИРОВАНИЕ И ИСПЫТАНИЕ КРУГОВОГО
ИНТЕРПОЛЯТОРА ДЛЯ КОМПЬЮТЕРНЫХ УЧПУ
Цель работы
Цель данной работыосвоение методики написания и отладки
программ на языке Visual C++. В этой работе студенты
разрабатывают и отлаживают на ЭВМ программу круговой
интерполяции, приближенной к реальной.
Теоретические сведения
Решение задачи круговой интерполяции для компьютерных
УЧПУ сводится к вращению радиус-вектора R (рис.1.1) вокруг начала
координат по часовой стрелке или против часовой стрелки. За один
цикл интерполяции, определяемый периодом таймера
T
, радиус-
вектор
R
поворачивается на некоторый угол h, называемый шагом
интерполяции.
В математической форме алгоритм круговой интерполяции
можно представить в виде следующих рекуррентных уравнений:
1
1
,
,
i ic iS
i ic iS
x xh yh
y yh xh
+
+
(1)
где
,
ii
xy
координаты текущей точки окружности;
11
,
ii
xy
++
DD
приращения координат при повороте радиус-вектора из i-й в i+1-ю
точку окружности; h
s
, h
c
разложенные в ряд Тейлора функции sin(h)
и cos(h)-1.
3
24
sin();
6
cos()1.
2 24
s
c
h
h hh
hh
hh
= »-
= -»-+
(2)
Координаты новой точки окружности находятся на основании
координат предыдущей точки по формулам:
7
11
11
,
.
iii
i ii
xxx
yyy
++
++
= +D
= +D
(3)
Рис.1.1. Схема круговой интерполяции в направлении
против вращения часовой стрелки
Шаг интерполяции h определяет скорость движения
инструмента по дуге окружности. Эту скорость можно определить
как путь Ds, который проходит инструмент за время, равное периоду
таймера Т. Если задана скорость подачи F, то шаг интерполяции h
легко рассчитать по формуле:
60
s FT
h
RR
==
×
,
где Fподача, мм/мин; Тпериод таймера, с; Rрадиус
окружности, мм.
Чтобы изменить направление интерполяции, достаточно
поменять знак h на обратный.
Задание на практическое занятие
Программа должна быть составлена на языке Visual C++ в двух
вариантах. Первый вариант программы предусматривает вывод
данных в формате с плавающей запятой, что позволит определить
накопленную погрешность интерполяции в точках пересечения с
окружностью координатных осей
x
и
y
. Во втором варианте
программы надо обеспечить расчет передаваемых на следящие
8
электроприводы приращений координат
11
,
ii
xy
++
DD
в виде целых
чисел дискрет за период таймера.
Методика решения задачи
Для того чтобы организовать форматированный вывод, в C++
используются два способа. Первый состоит в применении функций-
элементов класса ios. При втором способе употребляются
специальные манипуляторы потока.
1. Использование функций-элементов класса ios
Состояние правил форматного вывода в поток определяется
состоянием флагов форматирования потока. В заголовочном файле
iostream.h определено следующее перечисление, задающее флаги
форматирования:
ios::skipws - отбрасывание пробелов;
ios::left - выравнивание по левому краю;
ios::right - выравнивание по правому краю;
ios::internal - заполнение пустых позиций;
ios::dec - выдача целых чисел в десятичном формате;
ios::oct - выдача целых чисел в восьмеричном формате;
ios::hex - выдача целых чисел в шестнадцатеричном формате;
ios::showbase - включение режима выдачи целых чисел с разными
основаниями;
ios::showpoint - выдача нулей в конце числа;
ios::uppercase - вывод символов X и E соответственно в шестнадцатеричном
и экспоненциальном форматах в верхнем регистре;
ios::showpos - выдача знака у положительного числа;
ios::scientific - выдача в экспоненциальном формате;
ios::fixed - выдача в формате с фиксированной точкой;
ios::unibuf - улучшенная выдача;
ios::stdio - освобождение потока.
Управляют установками флагов формата функции-элементы
setf, unsetw и flags.
Функция-элемент setf изменяет состояние выбранного флага.
Например, чтобы установить флаг showbase в режим включено (on),
используем оператор
сout. setf(ios::showbase);
9
здесь cout - тот конкретный поток, на который мы воздействуем.
Для установки флагов формата можно использовать операцию
побитовое ИЛИ |, которая объединяет разные опции в одно значение
типа long.
cout.setf(ios::left|ios::hex);
Функция-элемент unsetw возвращает флаг в состояние
выключено (off).
cout.unsetf(ios::hex);
Функция-элемент flags определяет или задаёт состояние всех
флагов одновременно с помощью целого числа типа long. Если у
функции-элемента flags нет аргумента, то она просто возвращает
текущие установки флагов формата в виде значения типа long.
long cout.flags();
Функция-элемент flags с аргументом типа long устанавливает
флаги формата, заданные с помощью этого аргумента
cout.flags(long);
Характеристики вывода задаются с помощью функций-
элементов width, precision и fill.
Функция-элемент width возвращает текущую ширину поля
выдачи и устанавливает её ширину с помощью числа типа int.
int width(int);
Установка ширины поля влияет только на следующую операцию
вывода; затем ширина поля неявным образом устанавливается на 0.
Функция-элемент precision возвращает текущее значение
десятичных знаков после точки и устанавливает новое значение c
помощью числа типа int.
int precision(int num);