МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ПСКОВСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ
(ФИЛИАЛ)
__________________________________________________________________
А. И. Хитров
А. В.
Ильин
ОСНОВЫ ЧИСЛОВОГО ПРОГРАММНОГО
УПРАВЛЕНИЯ
Контрольные задания и методические указания
по выполнению
Для студентов специальности 180400
«Электропривод и автоматика промышленных
установок и технологических комплексов»
Псков
2003 г.
Рекомендовано к изданию Учебно-методическим советом
Псковского политехнического института (филиала) СПбГПУ
Рецензенты
:
Кадочников Анатолий Александрович, доцент, к.т.н., начальник отдела энергоэффективного и рационального использования и учета топливно-энергетических ресурсов Псковского филиала ФГУ «УГЭН по Северо-западному региону»
Тимофеев Сергей Владимирович, начальник бюро электроники и промышленной автоматизации ОАО «Псковский кабельный завод»
Авторы:
Хитров Александр Иванович, доцент кафедры ЭСА ППИ СПбГПУ
Ильин Александр Викторович, ассистент кафедры ЭСА ППИ СПбГПУ
СОДЕРЖАНИЕ
ВВЕДЕНИЕ………………………………………………………… 4
Темы для рефератов………………………………………………6
Контрольное задание 1……………………………………………7
Контрольное задание 2…………………………………………..12
Контрольное задание 3…………………………………………..28
Контрольное задание 4…………………………………………..39
Литература………………………………………………………….49
Приложения ………..………………………………………………50
ВВЕДЕНИЕ
Вступление общества в новое столетие, которое как предполагается будет веком информационных технологий, сопровождается все большим внедрением этих технологий в автоматизированное производство.
Вычислительная техника, являясь «мозгом» технических устройств, совместно с его «мускулами» – электроприводом, позволяет говорить о создании «интеллектуального» электропривода в сложных технологических установках, решающих задачи позиционного, контурного, адаптивного, нечетко-логического и других типов управлений, в которых требуется согласованная работа нескольких взаимосвязанных объектов, стоит вопрос обеспечения энергосберегающих технологий и т.д.
В последнее десятилетие появились специальные типы электроприводов вентильного типа (вентильно-реактивные двигатели в частности), работа которых немыслима без применения управляющих устройств на базе микроконтроллеров со встроенными периферийными устройствами и цифровых сигнальных процессоров.
Вместе с тем на сегодняшний день не существует (и вряд ли будет существовать вообще) универсальных технологий обучения основам числового программного управления промышленными системами и процессами. Это связано с тем, что совершенствование аппаратного и программного обеспечения идет такими темпами, что универсального микроконтроллера с аппаратной точки зрения и универсального языка программирования с точки зрения программного обеспечения до сих пор нет. Задачи автоматизации достаточно разнообразны и требуют широкой номенклатуры аппаратно-программных средств.
Отсутствие учебников и учебных пособий по данной (или «родственным») дисциплине подтверждает данный факт.
Специалистам в области «интеллектуального электропривода», систем компьютерного мониторинга объектов, числового программного управления технологическими объектами практически всегда приходится изучать состав аппаратных и программных средств той или иной установки (или проектировать их самостоятельно), так как «Числовое программное управление – управление с помощью аппаратных и программных средств, предполагающее возможность быстрого перехода на различные программы работы оборудования путем набора ее или записи условным кодом на программоносителе»
.
При этом техника программирования определяется не только типом программоносителя, знанием аппаратной части систем ЧПУ и языков программирования, а также умением адекватно описать алгоритм функционирования и переложить его в язык символов (команд и кодов).
В связи с этим студенты должны знать особенности кодирования информации, владеть алгоритмами циклового и логического управления, позиционного и контурного управления (геометрическая задача), представлять особенности поведения объекта в дискретных САУ.
Курс «Основы ЧПУ» для студентов специальности 180400 «Электропривод и автоматика промышленных установок и технологических комплексов» является завершающим в программно-информационной подготовке инженера и базируется на курсах:
«Микропроцессоры в электроприводах и технологических комплексах», «Информатика», «Элементы систем автоматики», «Системы управления электроприводов».
Курс изучается в 10-11 семестрах и предполагает следующее распределение учебных занятий для студентов очно-заочной и заочной формы обучения:
Виды занятий |
Семестры |
|||
10 |
11 |
|||
в/о |
з/о |
в/о |
з/о |
|
Лекции, час. |
32 |
15 |
34 |
20 |
Лаборатории, час. |
32 |
20 |
34 |
20 |
Зачет |
1 |
1 |
1 |
1 |
Экзамен |
1 |
1 |
1 |
1 |
Контрольные задания |
1 |
2 |
1 |
2 |
В процессе изучения теоретических разделов курса, выполнения контрольных заданий и лабораторных работ, студент должен получить знания и навыки в:
- принципах построения систем ЧПУ технологическими объектами;
- применении цифровых и символьных кодов в системах ЧПУ;
- использовании современных средств промышленной автоматизации, в том числе промышленных сетей;
-алгоритмах логического управления с применением программируемых логических контроллеров;
- пользовании методами позиционного и контурного управлений при решении геометрической задачи управления;
- методах перевода аналоговых систем управления электроприводом в цифровые, особенностях построения и расчета регуляторов таких систем, базируясь на положениях теории дискретных САУ;
- программировании типовых задач автоматики с использованием микроконтроллеров.
Для изучения современных систем ЧПУ объектами, а также использовании знаний, полученных в процессе обучения при дипломном проектировании, в 11 семестре студентам предлагается представить реферат объемом 15-20 страниц.
Темы для рефератов
1. Применение и особенности построения цифровых электроприводов.
2. Современные микроконтроллеры и цифровые сигнальные процессоры для управления электроприводами.
3. Энергосберегающие технологии с применением интеллектуального электропривода.
4. Фаззи – логическое управление объектами.
5. Управление шаговым электроприводом от микроЭВМ.
6. Вентильно-индукторные двигатели (SRM – Switched Reluctance Motor) и их системы управления.
7. Векторное управление асинхронным двигателем с применением микроконтроллеров.
8. Управление бесконтактными двигателями постоянного тока (BLDC – Brushless direct current) с применением микроконтроллеров.
9. Особенности построения и применения энкодеров и кодеров в системах программного управления.
10. Организация локальных (промышленных) сетей на производстве.
11. Промышленная сеть CAN (Computer Area Network).
12. Промышленная сеть PROFIBUS фирмы SIEMENS.
13. Электроприводы промышленных роботов и станков с ЧПУ.
14. Адаптивные промышленные роботы и средства их очувствления.
15. Интеллектуальные роботы и системы распознавания образов.
16. Языки программирования промышленных роботов и современных средств промышленной автоматизации.
17. Программируемые логические контроллеры.
18. РС-архитектурные промышленные компьютеры и контроллеры.
19. SCADA системы в АСУТП.
20. Операционные системы реального времени.
21. Нейронные сети.
Кроме вышеперечисленных, темы могут быть выбраны студентами самостоятельно по согласованию с преподавателем, ведущим курс.
В процессе изучения курса "Основы ЧПУ" студентами заочной формы обучения выполняется по 2 контрольных задания соответственно в семестре 10 - контрольные задания № 1 – 2, в 11 семестре -контрольные задания № 3 – 4.
Вариант задания определяется двумя последними цифрами шифра зачетной книжки студента или её последней цифрой. Студенты очно-заочной формы обучения выполняют в каждом из семестров одно из заданий ( вариант определяется по согласованию с преподавателем). Студенты очной формы обучения при изучении курса представляют реферат и могут использовать методическое пособие при проведении цикла лабораторных работ.
Контрольное задание №1
Задача 1.
Представить число, заданное в таблице 1,
- во всех известных вам системах счисления как целое без знака;
- как положительное и отрицательное число с использованием биполярных кодов: прямой со знаком, обратный, дополнительный, смещенный.
Во всех представлениях числа ограничиться байтовым представлением его целой и дробной части.
Таблица 1
Номер последней цифры шифра |
Число (целое) |
Число (дробное / смешанное) |
0 |
67 |
0,28 / 52,45 |
1 |
48 |
0,76 / 33,12 |
2 |
86 |
0,35 / 67,48 |
3 |
57 |
0,42 / 83,19 |
4 |
99 |
0,61 / 41,55 |
5 |
27 |
0,82 / 39,33 |
6 |
39 |
0,57 / 71,42 |
7 |
41 |
0,38 / 91,22 |
8 |
71 |
0,14 / 38,76 |
9 |
94 |
0,21 / 45,31 |
Методические указания к решению задачи 1
В данной задаче студентам необходимо показать умение представлять целые и смешанные числа в любой системе счисления: двоичной, восьмеричной, шестнадцатеричной (для целых чисел), в двоичной системе для смешанных чисел и с использованием биполярных кодов.
Особенности представления целых чисел без знака и со знаком изучались в курсах "Микропроцессоры" и "Элементы систем автоматики" и особых пояснений не требует. Вспомните, что Вы уже знаете, и представьте заданное число, сведя результаты в таблицу 2.
Таблица 2
Число |
Кодовая комбинация |
|
Десятичное |
75D (decimal) |
|
Двоичное |
01001011B (binary) |
|
Восьмеричное |
113O (octal) |
|
Шестнадцатеричное |
4BH (hex) |
|
Прямой со знаком |
+75 |
-75 |
01001011 |
11001011 |
|
Обратный |
01001011 |
10110100 |
Дополнительный |
01001011 |
10110101 |
Смещенный |
11001011 |
00110101 |
Для перевода отрицательного числа из дополнительного кода (на магистрали микроЭВМ) в его десятичный эквивалент и обратно следует вспомнить правило:
"инвертировать все разряды числа, исключая знаковый и прибавить единицу."
В цифровой вычислительной технике при записи чисел целую часть от дробной отделяют точкой. Соответственно, двум алгебраическим формам записи вещественных чисел: обычной (5000; -3,77; 13,784)
и показательной (5·103
; -377·10-2
; 137,84·10-1
) различают две формы представления данных:
с ФТ (фиксированной точкой (запятой)), с ПТ (плавающей точкой (запятой)).
Представление целых двоичных чисел в формате с ФТ означает, что в рамках заданного формата точка фиксируется за правой границей формата (т. е. по существу отсутствует) [2].
Представление данных вещественного типа в формате с ПТ означает, что в рамках заданного формата логически фиксируется одинаковое местоположение точки, разделяющей целую и дробную части числа.
Все процессы с ФТ оперируют с числами, представленными в дополнительном коде
, что позволяет существенно упростить выполнение арифметических операций.
Правила перевода в дополнительный код не зависят от типа чисел – целые или дробные.
При переводе дробного десятичного числа в двоичное следует помнить, что дробное десятичное число переводится в двоичное в отличие от целых приближенно. Кодовая комбинация формируется из совокупности 0 и 1, получающихся при последовательном умножении заданного числа на 2, начиная со старшего разряда. Например, для числа 0,6510
получим:
1) 0,65 2) 0,3 3) 0,6 4) 0,2 5) 0,4
×
2
×
2
×
2
×
2
×
2
1
.
30 0
.
6 1
.
2 0
.
4 0
.
8
6) 0,8 7) 0,6 8) 0,2
×
2
×
2
×
2
1
.
6 1
.
2 0
.
4
0.10100110
Для смешанных чисел в двоичную форму переводится отдельно целая и дробная части числа, т. е. 75,65 = 01001011.10100110.
Задача 2.
Представьте в дополнительном коде максимальные, минимальные положительные и отрицательные целые и дробные числа для 16-разрядных чисел, для которых в = 15.
Методические указания к решению задачи 2
Для восьмибитных чисел (байт) в дополнительном коде
- максимальное положительное число:
+127D → 7FH → 01111111B → 27
– 1 = 2в
– 1;
- минимальное положительное число:
1D → 1H → 00000001B → 1;
- максимальное по модулю отрицательное число:
- 128D → 80H → 10000000B → - 27
;
- минимальное по модулю отрицательное число:
- 1D → FFH → 11111111B → - 1.
Для восьмибитных дробных чисел соответственно:
- максимальное положительное число:
1 – 2-7
= 0.1111111 = 0,9921875;
- минимальное положительное число:
2-7
= 0.0000001 = 0,0078125;
- максимальное по модулю отрицательное число:
- 1 = 1.0000000 → -1D;
- минимальное по модулю отрицательное число:
- 2-7
= 1.1111111 = - 0,0078125.
Задача 3.
Определить динамический диапазон данных D (в децибелах) цифровой системы регулирования с аналого-цифровым преобразователем (АЦП), имеющим n
разрядов.
Построить зависимость D
=
f
(
n
)
( nmax
ограничить 32 разрядами с шагом расчета, равным 2).
Методические указания к решению задачи 3
Динамический диапазон данных представляет собой отношение максимального и минимального (не равного нулю) значений и определяется в первую очередь разрядностью АЦП. При этом следует иметь в виду, что один бит данных соответствует
20lg2 (децибел) ≈ 6,0205998,
а полный динамический диапазон определяется из соотношения:
D= n·20lg2.
Задача 4.
Представить в виде алгоритма методику создания исполняемой программы на языке ассемблера любого микроконтроллера, известного Вам, если имя программы и используемых подпрограмм приведены в таблице 3.
Таблица 3
Номер последней цифры шифра |
Имя головной программы |
Имена подпрограмм |
0 |
Main0 |
Sub1, time |
1 |
Prog1 |
Sub2, cir |
2 |
Test2 |
sub3,sub4 |
3 |
Program3 |
wind1, ADC |
4 |
CAP |
ADC, timer |
5 |
CODER |
un1, un2, un3 |
6 |
SHD |
t1, t2 |
7 |
BLDC |
win1, cool2 |
8 |
SRM |
ADC, DAC |
9 |
ACD |
root, level |
Методические указания к решению задачи 4
Для программирования современных микроконтроллеров и цифровых сигнальных процессоров (DSP – Digital Signal Processor) используются языки ассемблера и языки высокого уровня (CИ, Pascal и др.).
Языки ассемблера являются машинно-ориентированными языками и для разных типов процессоров существует свой язык. Почти каждая команда ассемблера эквивалентна команде на машинном языке процессора. Следует заметить, что знание языка ассемблера остается необходимым условием получения "хороших программ" на языке СИ.
Все компиляторы CИ поддерживают включение в программу модулей на языке ассемблера.
Этапы разработки программы следующие:
· формулирование технического задания (постановка задачи);
· определение структур данных и памяти;
· разработка алгоритма и структуры программы с использованием принципов модульного программирования;
· выбор языка программирования;
· составление текста программы и подпрограмм;
· создание выполняемой программы.
В условиях данной задачи пройдены все этапы, кроме двух последних. Считаем, что тексты программы и подпрограмм написаны, им присвоены символические названия, представленные в таблице 3.
В процессе подготовки исполняемых программ следует различать следующие базовые понятия:
- объектный код
– код, полученный в результате трансляции
(с помощью программы транслятора) на машинный язык или близкий к нему язык программы, записанной на некотором исходном языке (например, языке ассемблера);
- перемещаемый (относительный) программный модуль
– представляет собой программу, которая может быть настроена на загрузку и выполнение в любой области памяти. В такой программе все требуемые адреса выражаются относительно общей точки отсчета – начала программы. Настройка перемещаемых модулей на абсолютные адреса производится компоновщиком (специальной программой);
- абсолютный адрес
– число, однозначно указывающее положение данных или кодов памяти;
- абсолютный (неперемещаемый) программный модуль
– программный модуль, использующий абсолютные (фактические) адреса;
- выполняемый (загрузочный) модуль
– программа, представленная в виде, пригодном
для загрузки в память системы и её выполнения процессором.
Известно, что система программирования любого микроконтроллера должна включать в свой состав комплекс программ, обеспечивающих их создание и редактирование, трансляцию, компоновку и отладку. Методика создания загрузочного модуля для микроконтроллеров семейства MCS-196 [2] фирмы INTEL представлена ниже:
1. Редактирование текста модуля программы
<имя редактора> <имя файла.а96>
me program.a96
ncedit subroutine.a96
2. Трансляция модулей программ с применением транслятора
asm96.ехе
<имя транслятора> <имя файла.а96>
asm96 program.a96
asm96 subroutine.a96
3. Компоновка программы и подпрограммы с использованием программы-компоновщика rl96.
<имя компоновщика> <имя головной программы>,
<имя подпрограммы 1>, <имя подпрограммы n>.
rl
96
program
.
obj
,
subroutine
.
obj
В результате компоновки получается файл абсолютного кода program и файл листинга компоновки program.m96, который можно просмотреть с помощью программы-редактора.
4. Для преобразования программы в шестнадцатеричный формат(в случае использования программатора) может быть использована программа преобразования кодов.
<имя программы-пребразователя> <имя файла>
oh
program
Результатом преобразования является файл типа program.hex.
Контрольное задание №2
Задача 1.
Составить фрагмент программы управления релейными элементами, связанными с выходным портом Y(Y0,Y1,Y2,…Y7),
если известно, что к микроконтроллеру подключены 8 ключей (Х0, Х1, Х2, …Х7) через входной порт Х. Структура управления показана на рисунке, варианты заданий сведены в таблицу 4.
Таблица 4
Номер последней цифры шифра |
Логическая функция |
0 |
__ Y0 = X3 + X1·X2·X6 |
1 |
__ __ Y1 = X0·X1 + X2·X3 |
2 |
__ Y2 = X3·X0 + X4 |
3 |
__ Y3 = X1·X2 + X3 |
4 |
__ __ Y4 = X6 + X1·X3 |
5 |
Y5 = X7·X1 + X2·X0 |
6 |
___ Y6 = (X4 + X5)·X6 |
7 |
Y7 = X7 + X2·X3 |
8 |
Y1 = X0·X1 + X4·X5 |
9 |
__ __ Y2 = X1·X3 + X5·X6 |
Методические указания к решению задачи 1
При разработке программы важным этапом является разработка алгоритма решения задачи. При этом рекомендуется пользоваться правилами структурного (модульного) программирования, которые предполагают проектирование программ сверху вниз с разделением программ на отдельные модули. Каждый модуль содержит одну точку входа и одну точку выхода и представляет собой композицию основных управляющих структур, представленных на рисунке.
а) последовательность
б) разветвление
в) выбор
г) цикл "пока
" д) цикл "до
"
Пусть необходимо реализовать логические функции:
__
Y0 = X1 + X2·X5; Y1 = X3·X7.
При этом в байтовом регистре Х внутреннего ОЗУ микроконтроллера находятся текущие значения 8 битовых входных переменных, считанные процессором из порта ввода Х.
Необходимо вычислить значения битовых управляющих воздействий Y1, Y0 и записать результаты в байтовый регистр Y.
|
|
Алгоритм реализации логического управления координатой Y0:
Будем считать, что модули вычисления Y0 и Y1 оформлены в виде подпрограмм, которые вызываются командами
CАLL CALC_Y0
CАLL CALC_Y1
Для реализации представленного алгоритма можно использовать работу битового процессора (если такой имеется) или специальные команды анализа битов.
Ниже приведена программа для микроконтроллера INTEL MCS – 196 [1,2].
В его составе команд имеются команды тестирования битовых переменных: BBC
и BBS
(branch bit clear- переход ,если бит очищен и branch bit set-переход, если бит установлен), осуществляющие переход на заданную метку ( трехоперандная команда ) в зависимости от того установлен или сброшен анализируемый бит.
Формат команды:
BBC
breg, bitno, cadd
где breg – анализируемый регистр;
bitno – номер анализируемого бита;
cadd – точка перехода по условию.
;подпрограмма вычисления Y0
CALC_Y0: BBS X, 1, SET_Y0 ;анализ младшего бита 1 регистра X
BBC X, 2, CLR_Y0 ;анализ бита 2
BBC X, 5, CLR_Y0 ;анализ бита 5
SET_Y0: ORB Y, #00000001B ;установка в 1 бита Y0
RET
CLR_Y0: ANDB Y, #11111110B ;очистка бита Y0
RET
;подпрограмма вычисления битовой переменной Y1
CALC_Y1: BBC X, 3, CLR_Y1
BBS X, 7, CLR_Y1
SET_Y1: ORB Y, #00000010B ;установка в 1 бита Y1
RET
CLR_Y1: ANDB Y, #11111101B
RET
При решении задачи язык программирования может быть выбран любым.
Задача 2.
Составить алгоритм и программу обслуживания аналого-цифрового преобразователя (АЦП), осуществляющего прием и обработку данных (М – число отсчетов) по N-каналу (данные сведены в таблицу 5), если АЦП имеет 16 входных каналов. Выбор конкретного канала осуществляется записью в разряды (от 0 до 3) регистра выбора канала DAR (Data Address Register) соответствующего двоичного кода. После выбора номера канала 7 разряд DAR устанавливается в "1".
Управление запуском АЦП и проверка готовности данных после преобразования осуществляется с использованием регистра управления и статуса CSR (Control and Status Register). При этом пуск АЦП осуществляется записью "1" в нулевой разряд, готовность проверяется по наличию "1" в 10 разряде CSR. Результат преобразования в виде выходного кода АЦП поступает в регистр данных АЦП DR (Data Register).
Таблица 5
Номер последней цифры шифра |
Номер канала N |
Число отсчетов М |
Размещение в памяти с адреса – G. |
0 |
12 |
120 |
10000 |
1 |
7 |
95 |
5000 |
2 |
9 |
48 |
6000 |
3 |
14 |
111 |
4000 |
4 |
6 |
39 |
3000 |
5 |
8 |
46 |
7000 |
6 |
11 |
51 |
3500 |
7 |
10 |
77 |
5500 |
8 |
5 |
84 |
6500 |
9 |
2 |
90 |
7500 |
Методические указания к решению задачи 2
Алгоритм решения задачи по обслуживанию АЦП может быть представлен в следующем виде:
Программа может быть составлена на любом языке программирования. Hиже в качестве примера приведен фрагмент программы для DEC – архитектурных машин ("Электроника") с применением ассемблера.
.TITLE ADC
DAR = 160070 ;адреса регистров АЦП
DR = 160072
CSR = 160074
ADC: MOV #N, @#DAR ;запись номера канала N
;число должно быть восьмеричным
;или десятичным из задания
MOV #G, R2
MOV @#DAR, R1
M1: TSTB R1 ;проверка выбора номера канала;
BPL M1
MOV #M , R3 ;счетчик циклов в R3 (число М)
M2: MOV #0, CSR ;запуск АЦП
BIT #2000, CSR ;проверка состояния 1 в 10 разряде CSR
BEQ M2
MOV @#DR, (R2)+
DEC R3
BNE M2
HALT
M: .BYTE
N: .BYTE
DAR: .WORD
CSR: .WORD
DR: .WORD
D: .BLKW G. ;резервирование в памяти
;числа слов под массив данных
.END ADC
Задача 3.
Определите требуемое число разрядов счетчика и число, которое должно быть записано в регистр счетчика (Кдел
= двоичное), для получения периода квантования Тк
, равного такому количеству минут, каковы две последние цифры вашей зачетной книжки. При этом входная эталонная частота таймера-счетчика равна fвх
= fэт
= 10МГц.
Методические указания к решению задачи 3
Соотношение между частотой входных импульсов fвх
счетчика, частотой выходных импульсов таймера fвых
(которые могут задавать период квантования Тк
= 1/fвых
) и коэффициентом деления счетчика (Кдел
) равно:
,
где Кдел
= 2n
– 1,
n – число разрядов счетчика.
Чем больше число разрядов счетчика, тем реже появляются выходные импульсы таймера. Например, если счетные импульсы подаются с частотой 1,1925 МГц и три шестнадцатиразрядных счетчика будут включены каскадно, то будем иметь 48 разрядный счетчик и импульс на выходе таймера появится более чем через 7 лет.
Соответственно, для 32-разрядного счетчика можно получить период квантования, равный 1 час, для 16-разрядного счетчика выходная частота составит ≈ 18 имп/сек, а для 8-разрядного счетчика при заданной частоте fвх
, выходная частота составит ≈ 4676 имп/сек. Таким образом, применение счетчиков от 8-разрядного до 48-разрядного позволяет настроить систему управления в достаточно широком диапазоне регулирования периода квантования цифровой системы регулирования.
Задача 4.
Составить на языке лестничных диаграмм LD (Ladder Diagram) программу для управления транспортным и пешеходным светофором согласно техническому заданию. В качестве программируемого логического контроллера используется контроллер SIMATIC фирмы SIEMENS.
Техническое задание
1. Цель разработки программы
: управление движением транспорта и пешеходов на пешеходном переходе.
2. Программа должна управлять включением соответствующих цветов транспортного и пешеходного светофоров. Транспортный светофор оснащен красным (RED), желтым (YELLOW), зеленым (GREEN) огнями. Пешеходный светофор имеет: зеленый и красный цвет, а так же кнопку, чтобы потребовать зеленый свет для пешеходов.
3. Для исключения угрозы безопасности пешеходов и водителей должны быть выполнены условия:
3.1. Предварительная (начальная) установка светофоров: горит зеленый свет для транспортного светофора и красный свет для пешеходного.
3.2. Если контроллер по нажатию кнопки получает требование переключить пешеходный светофор на зеленый свет, то он переключает транспортный светофор с зеленого света на красный, через желтый.
4. Требования к таймерам по длительности "горения" соответствующих цветов светофора:
4.1. Желтая фаза после зеленой для автомобильного движения – 3 сек.
4.2. Красная фаза для автомобильного движения – 16 сек и начинается одновременно с зеленой фазой пешеходного движения.
4.3. Зеленая фаза для пешеходного движения – 10 сек.
4.4. Желтая фаза после красной для автомобильного движения – 3 сек
4.5. Задержка для следующего требования на зеленый свет (нажатие кнопок на разных концах улицы) – 1 сек.
Методические указания к решению задачи 4
PLC (Programmable Logical Controller) – программируемые логические контроллеры (ПЛК) представляют собой завершенную форму микропроцессорных средств, которые характеризуются оригинальной архитектурой и специальным программным обеспечением (ПО) [1,3]. Интерфейс между датчиками, исполнительными устройствами и центральным процессом PLC, обеспечивается специальными электронными модулями ввода/вывода (цифровых и аналоговых сигналов). Структура PLC показана на рисунке.
PLC отличается циклическим характером работы. Память программ PLC обычно состоит из 2 сегментов, в первом размещается неизменяемая часть – интерпретатор инструкций программы пользователя, которая размещается во втором сегменте (изменяемая часть).
При обработке конкретной программы на 1 этапе работы PLC производится тестирование аппаратуры CPU, и запускается цикл опроса всех входных переменных с запоминанием их состояния в специальной области памяти данных (ОЗУ), называемый "образ состояния входных переменных" PII (Process Input Image).
На следующем этапе цикла осуществляется вычисление логических выражений, используя в качестве аргументов состояния входных образов и внутренние переменные, которые обозначают режимы работы системы, а так же отражают состояние программных таймеров и счетчиков.
Результатом выполнения программы являются значения выходных переменных и новые значения внутренних переменных.
CPU записывает выходные переменные в другую область памяти данных, называемую "образ состояния выходных переменных" POI (Process Output Image). Одновременно CPU управляет счетчиками и таймерами. На последнем этапе цикла слово выходных воздействий выдается из POI в адаптеры выходных сигналов.
Такая организация работы PLC по существу является операционной системой реального времени с жестким циклом работы, зависящим от возможностей CPU PLC.
PLC являются проблемно-ориентированными машинами. Языки их программирования в основном ориентированы на специалистов по автоматизации, а не программистов. Накопленный опыт по языкам PLC был обобщен в виде стандарта Международной электротехнической комиссии: IEC1131–3, в котором выделено 5 языков программирования:
1. SFC (Sequential Function Chart) – последовательных функциональных схем;
2. LD (Ladder Diagram) – лестничных диаграмм (язык релейно-контакторных схем);
3. FBD (Function Block Diagram) – функциональных блоковых диаграмм;
4. ST (Structured Text) – структурированного текста;
5. IL (Instruction List) – список инструкций (команд).
Язык SFC описывает логику программы на уровне чередующихся функциональных блоков и условных переходов. Инструкции для функциональных блоков могут быть написаны на одном из 4 других языков. Например: для логической функции:
_
С = А·В
1) На языке LD имеется цепь
2) FBD имеется обозначение
3) ST имеется строка C = A AND NOT B
4) На языке IL имеется последовательность инструкций (типа языка ассемблера)
LD A
ANDN B
ST C
Наиболее понятным для инженеров-специалистов в области автоматизации является язык LD или РКС (релейно-контакторных схем).
Синтаксис языка РКС основывается на следующих предпосылках:
-для логического управления программу можно представить в виде системы уравнений:
Y1
= f(Xi
, Yj
, Zk
)
………
Ym
= f(Xi
, Yj
, Zk
)
Z1
= f(Xi
, Yj
, Zk
)
………
Zq
= f(Xi
, Yj
, Zk
)
где Xi
– входные переменные (i = 1, … n),
Yj
– выходные переменные (j = 1, … m),
Zk
– внутренние переменные (k = 1, … l);
-логические функции в правых частях уравнений представляют собой ДНФ или КНФ с применением операций И, ИЛИ, НЕ;
-каждое уравнение трактуется как цепь релейно-контактной схемы, т.е. соединение элементов релейной схемы с хотя бы одной инструкцией присвоения.
Запись операции на языке РКС содержит логическое выражение с инструкцией присвоения:
- логическое выражение - инструкция присвоения
f(xi
, yj
, zk
) = Y, = Z
Символика РКС |
Булева функция |
Содержание операции |
Логические компоненты |
||
|
· |
Опрос входа, выхода внутренней переменной |
|
·/ |
Опрос с инверсией |
|
( |
Начало ветвления параллельной цепи |
|
) |
Конец ветвления параллельной цепи |
|
+ |
Перенос маркера в начало ветвления |
Символы присвоения |
||
|
= |
Присвоение результата вычислений внутренней переменной или выходу |
|
= S |
Включение выхода или внутренней переменной с фиксацией |
|
= R |
Аналогично выключение с фиксацией |
Программа для PLC представляет собой сеть из логических функций (Network (англ.), Netzwerk (нем.)). Каждая сеть должна либо оканчиваться катушкой реле или блоком (например, таймером).
Вернемся к решению поставленной задачи управления светофорами.
Определим число требуемых входных / выходных переменных:
1. 2 входа (Е1, Е2) – кнопки требования зеленого света от пешеходов на обеих сторонах улицы;
2. 5 выходов – для управления индикацией обоих светофоров;
3. 5 таймеров (Т) – для определения длительности соответствующих фаз светофоров;
4. 1 маркер (М) – для включения светофора по требованию зеленого сигнала пешеходом.
Присвоим входным и выходным переменным символические обозначения:
Адрес |
Описание |
Символическое имя |
А 0.0 |
Красный цвет для пешехода |
People_Red |
А 0.1 |
Зеленый цвет для пешехода |
People_Green |
А 0.5 |
Красный цвет для автомобиля |
Auto_Red |
А 0.6 |
Желтый цвет для автомобиля |
Auto_Yellow |
А 0.7 |
Зеленый цвет для автомобиля |
Auto_Green |
Е 0.0 |
Кнопка на правой стороне |
P_Right |
Е 0.1 |
Кнопка на левой стороне |
P_Left |
М 0.0 |
Маркер для включения светофора по требованию зеленого цвета пешехода |
Marker |
Т 2 |
Длительность желтой фазы для автомобилей (3 с.) |
Auto_Yellow |
Т 3 |
Длительность зеленой фазы для пешехода (10 с.) |
People_Green |
Т 4 |
Задержка красной фазы для автомобилей (6 с.) |
Auto_Green |
Т 5 |
Длительность красно-желтой фазы для автомобилей (3 с) |
Auto_R – Y |
Т 6 |
Задержка следующего требования на зеленый свет для пешеходов(1 с) |
Pause_People |
Алгоритм функционирования конечного автомата можно представить в виде последовательной функциональной диаграммы или циклограммы.
Циклограмма
Для PLC SIMATIC программирование осуществляется с использованием языка STEP 7, используя либо графический язык РКС (КОР – контактный план) или список команд AWL.
Алгоритм действий при программировании:
1. Создать необходимые блоки: организационный блок (ОВ1) для циклической обработки программы и функцию (FC1), в которую собственно и вводится программа.
2. Назначить редактор языка (КОР или AWL).
3. Запрограммировать блоки, запустить редактор языка, объявить переменные и ввести программу, разделенную на сети.
4. Сохранить и загрузить блоки на выполнение.
Для рассматриваемой задачи в символах РКС организационный блок имеет вид:
Netzwerk 1: Вызов функции FC1 для управления светофором
Элементы КОР для FC1 имеют вид:
Netzwerk 1: Есть ли запрос на зеленый свет для пешеходов
Netzwerk 2: Зеленая фаза для автомобилей
Netzwerk 3: Пуск таймера желтой фазы для автомобилей
Netzwerk 4: Желтая фаза для автомобилей
Netzwerk 5: Красная фаза для автомобилей
Netzwerk 6: Пуск таймера зеленой фазы для пешеходов
Далее допишите оставшиеся сети для реализации алгоритма или циклограммы.
Контрольное задание №3
Задача 1.
Шаговый электропривод, управляемый целыми шагами α°[град] и имеющий частоту приемистости fпр
[кГц], должен отработать требуемое перемещение ∆φ [рад] за время кадра tк
с предельным быстродействием.
Сделать вывод о работоспособности системы электропривода (возможности решения задачи позиционного управления) и определить требуемое количество выдаваемых системой управления импульсов на этапе разгона, движения с постоянной скоростью и торможения.
Данные для расчетов сведены в таблицу 6.
Таблица 6
Номер последней цифры шифра |
α°[град] |
fпр
|
∆φ [рад] |
tк
|
0 |
1 |
1,0 |
1000 |
15 |
1 |
2 |
1,5 |
1500 |
10 |
2 |
1,8 |
0,5 |
500 |
15 |
3 |
1,5 |
2,0 |
700 |
20 |
4 |
0,5 |
0,7 |
1200 |
14 |
5 |
0,8 |
1,2 |
2000 |
11 |
6 |
1,6 |
1,8 |
1600 |
16 |
7 |
1,2 |
0,9 |
1900 |
18 |
8 |
0,9 |
1,0 |
800 |
10 |
9 |
3 |
2,0 |
600 |
13 |
Методические указания к решению задачи 1
Для позиционного электропривода траектория рабочего органа может быть произвольной, а задается начальное и конечное положение и точность позиционирования. Тип траектории выбирается обычно из минимума времени отработки заданного перемещения и ограничения на максимальное значение скорости wmax
и ускорения εmax
. Оптимальная по быстродействию тахограмма для позиционного электропривода имеет трапецеидальный вид [1]:
1 – имеет зону движения с постоянной скоростью ω*
= const.
2 – треугольная тахограмма без зоны движения с постоянной скоростью.
Для кривой 1 выполняется соотношение:
,
где Qзм
– заданное угловое перемещение.
В условиях задачи задана трапецеидальная тахограмма движения, тогда
Предельную скорость шагового электропривода ωз
max
= ω*
можно рассчитать, используя соотношение:
ω*
= α [рад]* fпр
[Гц],
т.е. для α° = 1° ; fпр
= 1кГц
при заданном угловом перемещении ∆φ = 1000 рад.
Из тахограммы движения с постоянной скоростью можно получить:
,
откуда – время движения с постоянной скоростью;
tк
= t1
+ (t2
– t1
) + (tк
– t2
) – полное время кадра.
Время разгона t1
= (tк
– t2
) = ω*
/ εmax
.
При решении задачи выберите необходимое εmax
для обеспечения
t2
– t1
> 0, так, чтобы суммарное время не превосходило время отработки кадра tк
.
Путь, пройденный на участке пуска и торможения, можно определить из соотношения: ,
а на участке движения с постоянной скоростью:
.
При этом
Количество импульсов управления, необходимое для выдачи на каждом из участков, равно:
,
где α – шаг двигателя.
Частота выдачи импульсов определяется так:
Для работоспособности привода частота выдачи импульсов на всех участках пуска, движения с постоянной скоростью и торможения не должна превышать частоты приемистости шагового электропривода. В случае невозможности отработки заданной траектории в соответствии с параметрами вашего задания, предложить вариант его изменения для обеспечения отработки заданного перемещения ∆φ в установленное время.
Задача 2.
Составить алгоритм метода оценочной функции при осуществлении линейной интерполяции по координатам α,β для выхода в точку А с координатами (αк
,βк
). Построить фактическую траекторию отработки перемещения и нарисовать тактовую диаграмму подачи импульсов на соответствующие координаты. Расчетные данные свести в таблицу 7.
Таблица 7
Номер шага I |
Шаг по осям |
Текущие значения |
Значение оценочной функции Fi
|
||
α |
β |
αi
|
βi
|
||
Данные для расчетов представлены в таблице 8.
Таблица 8
Номер последней цифры шифра |
αк
|
βк
|
0 |
10 |
6 |
1 |
8 |
4 |
2 |
12 |
8 |
3 |
10 |
8 |
4 |
12 |
6 |
5 |
14 |
8 |
6 |
10 |
4 |
7 |
10 |
5 |
8 |
8 |
6 |
9 |
12 |
10 |
Расчеты произвести для обычного и усовершенствованного алгоритма оценочной функции. Дискретность по координатам α и β одинакова и составляет hα
= hβ
= 1мм/имп.
Методические указания к решению задачи 2
В большинстве систем ЧПУ одной из основных задач является обеспечение движения инструмента относительно детали по заданной траектории. Траектория движения аппроксимируется набором отрезков прямых и окружностей. Расчёт текущих значений координат при решении геометрической задачи управления называется интерполяцией.
Дискретность перемещения по координатам hx
, hy
, hz
определяется конструкцией станка и составляет единицы или десятки мкм.
Задание приращений по двум осям координат при hx
= hy
еще не определит заданного прямолинейного движения инструмента между точками.
Если координаты существенно неравны (например, х = 13мм, y = 5мм при hx
= hy
= 0,01 мм), то по одной координате в кадре необходимо выдать 1300 импульсов, а по другой - 500. При этом время движения по оси Х не будет равно времени движения поY и заданная траектория будет искажена (как показано на рисунке).
Если по технологии недопустимо отклонение от заданной траектории (∆ велико), то приблизить фактическую траекторию к заданной можно введением дополнительных опорных точек или применять алгоритмы интерполяции.
Алгоритмы интерполяции можно разделить на алгоритмы единичных приращений: метод цифро-дифференциальных анализаторов, оценочной функции и алгоритмы равных времен: методы цифрового интегрирования, итерационно-табличные методы, прогноза и коррекции [4;6].
По алгоритму оценочной функции следует с определенной частотой, зависящей от скорости перемещения, анализировать знак оценочной функции и в зависимости от него выдавать сигнал изменения на один квант по одной или другой координате. Согласно этому методу моделируется алгебраическое уравнение воспроизводимой кривой. Оценочная функция при линейной интерполяции имеет вид:
Fi
= yi
·X - xi
·Y,
где , – требуемые перемещения в кадре.
При проведении интерполяции осуществляют либо обычный алгоритм, либо – усовершенствованный. При обычном алгоритме расчеты значений оценочной функции осуществляют так:
- если сделан шаг по оси Х, то
Fi+1
= yi
·X – (xi
+ 1)·Y = yi
·X – xi
·Y – Y = Fi
– Y,
- если сделан шаг по оси Y
Fi+1
= (yi
+ 1)·X – xi
·Y = yi
·X + X – xi
·Y = Fi
+ X.
При усовершенствованном алгоритме:
- если сделан шаг одновременно вдоль оси Х и Y
Fi+1
= (yi
+ 1)·X – (xi
+ 1)·Y = yi
·X + X – xi
·Y – Y = Fi
+ X – Y.
Таким образом, вычисление нового значения оценочной функции опирается на сохраняемые предыдущие значения.
Пример.
Пусть необходимо осуществить приращение в кадре в абстрактных машинных единицах ∆α = 6; ∆β = 4. Расчетные значения сведены в таблицу 9.
Таблица 9
Такт i |
Шаг по осям |
Текущее значение |
Оценочная функция |
||
α |
β |
αi
|
βi
|
Fi
Fi
|
|
0 |
- |
- |
0 |
0 |
F0
|
1 |
1 |
- |
1 |
0 |
F1
|
2 |
1 |
1 |
2 |
1 |
F2
|
3 |
1 |
1 |
3 |
2 |
F3
|
4 |
1 |
0 |
4 |
2 |
F4
|
5 |
1 |
1 |
5 |
3 |
F5
|
6 |
1 |
1 |
6 |
4 |
F6
|
При расчете использован усовершенствованный алгоритм, фактическая траектория движения и тактовая диаграмма показана на рисунке.
Погрешность отработки траектории по методу оценочной функции не превышает значения дискретности перемещения по координате для станка с ЧПУ. Важным достоинством метода оценочной функции является простота стыковки с шаговыми и сервоприводами и небольшая требуемая разрядность системы ЧПУ, определяемая максимальным значением координатных перемещений. Недостатком является небольшая контурная скорость:
,
где h – дискретность перемещения по координате;
Тк
– время реализации алгоритма (период квантования);
к – число одновременно работающих координат.
Задача 3.
Используя метод оценочной функции при круговой интерполяции, построить интерполяционную траекторию при движении из точки с координатами А0
(10, 0) в точку Ак
(0, 10).
Методические указания к решению задачи 3
При круговой интерполяции следует использовать оценочную функцию вида:
Fi
= xi
2
+ yi
2
– R2
.
При отработке траектории в 1 квадранте против часовой стрелки, если применяется обычный алгоритм интерполяции, то расчетные соотношения примут вид:
· если Fi
≥ 0 (нахождение за пределом радиуса окружности), то шаг делается вдоль отрицательного направления оси х, т. е. хi
+1
= xi
– 1
Fi+1
=(xi
– 1)2
+yi
2
– R2
= Fi
– 2xi
+ 1,
· если Fi
< 0, то шаг делается в положительном направлении оси у, т. е. yi
+1
= yi
+ 1
Fi+1
=xi
2
+ (yi
+1)2
– R2
= Fi
+ 2yi
+ 1.
При применении усовершенствованного алгоритма рекомендуется разбить квадрант пополам (π/4). При изменении угла от φ = 0, до φ =π/4 и при Fi
≥ 0 выдача шагов осуществляется по обеим координатам:
Fi+1
=(xi
– 1)2
+(yi
+1)2
– R2
= Fi
– 2(xi
– yi
) + 2,
а при Fi
< 0 только по ведущей координате (уi
)
Fi
+1
= Fi
+ 2yi
+ 1.
При изменении угла от π/4 до π/2 и Fi
< 0 выдача шагов производится по обеим координатам, а при Fi
≥ 0 только по ведущей координате (хi
)
Fi
+1
= Fi
– 2xi
+ 1.
Следует отметить, что при усовершенствованном алгоритме интерполяции затрачивается меньшее число тактов, что приводит к увеличению контурной скорости отработки траектории.
Если перемещение должно осуществляться в других квадрантах в выбранном направлении (по часовой стрелке или против часовой стрелки), то аналогично рассмотренному выше можно получить необходимые расчетные соотношения для Fi
+1
.
Приведенный ниже алгоритм предназначен для реализации метода оценочной функции во всех 4 квадрантах при движении в любом направлении [5]:
Принятые обозначения: I, J – координаты центра дуги;
r – радиус дуги;
τ – такт;
F – скорость подачи, мм/ мин;
d = h – дискретность системы ЧПУ, мм;
ун
, хн
– начальная точка;
ук
, хк
– конечная точка.
CIR: if TAKT > 1 then go to CYCLE
read xн
, ун
, хк
,ук
, I, J, ±F
r = sqr((xн
– I)2
+ (ун
- J)2
)
x = xн
; y = ун
; codx = x; cody = y; f = 0
U= int(F*τ/(60*d));
if xн
= I and ун
> J then αн
= π/2
if xн
= I and ун
< J then αн
= 3*π/2
if xн
> I then αн
= atn((ун
– J)/( xн
– I))
if xн
< I then αн
= π + atn((ун
– J)/( xн
– I))
if xк
= I and ук
> J then αк
= π/2
if xк
= I and ук
< J then αк
= 3*π/2
if xк
> I then αк
= atn((ук
– J)/( xк
– I))
if xк
< I then αк
= π + atn((ук
– J)/( xк
– I))
if sgn(αн
- αк
) = sgn(U) then ∆α = abs(αн
- αк
)
else ∆α = 2π - abs(αн
- αк
)
L = 4 * r * ∆α/π ; l = 0
CYCLE: X = x – I; Y = y – J;
if abs(X) >= abs(Y) and sgn(f*sgn(X)*sgn(Y)) = sgn(U)
then(y = y – U*sgn(X); f = f – 2*Y*sgn(X) + U; go to END);
if abs(X) < abs(Y) and sgn(f*sgn(X)*sgn(Y) < > sgn(U)
then (X = X + U*sgn(Y); f = f + 2*X*sgn(Y) + U; go to END);
x = x + U*sgn(Y); y = y – U*sgn(X);
f = + 2*(abs(X) – abs(Y))*sgn(Y) + 2*U;
END: l = l + abs(X – codx) + abs(y – cody);
codx = x; cody = y;
if l < L then TAKT = TAKT + 1
else TAKT = 1
RETURN
Ниже приводится листинг программы на языке Си, которая реализует алгоритм оценочной функции, приведенный выше, с небольшими модификациями. Скорость подачи принята 1 шаг за один цикл алгоритма, направление движения по окружности зависит от введенных координат центра, начальной и конечной точек.
#
include
<
stdio
.
h
> /* Подключение библиотеки стандартных функций ввода-вывода */
#
include
<
math
.
h
> /* Подключение библиотеки математических функций */
#define PI
3.1415
/*
Определение числа
p
*/
#define SGN(a) (((a) >= 0) ?
1 : -1) /* Определение макроса для вычисления знака переменной; макрос возвращает 1, если значение переменной ≥0 и возвращает -1, если значение переменной <0 */
int
x
_
n
,
y
_
n
,
x
_
k
,
y
_
k
,
I
,
J
; /* Объявление целочисленных входных переменных для алгоритма:
x
_
n
– начальная точка по оси
X
,
y
_
n
– начальная точка по оси
Y
,
x
_
k
– конечная точка по оси
X
,
y
_
k
– конечная точка по оси
Y
,
I
– координата центра по оси
X
,
J
– координата центра по оси
Y
*/
int
x
,
y
,
r
,
codx
,
cody
,
f
,
L
,
l
,
X
,
Y
; /* Объявление целочисленных внутренних переменных алгоритма:
x
,
y
– текущие координаты,
r
– радиус дуги,
codx
,
cody
– переменные для передачи координат исполнительному устройству,
f
– значение оценочной функции,
L
– полная длина пути по дуге,
l
– текущая пройденная длина,
X
,
Y
– разница между текущими координатами и центром окружности */
float
a
_
n
,
a
_
k
,
da
; /* Объявление вещественных внутренних переменных алгоритма:
a
_
n
– начальный угол в радианах,
a
_
k
– конечный угол в радианах,
da
– отрабатываемый по дуге угол (
a
_
k
–
a
_
n
) */
/*
Определение функции инициализации алгоритма
*/
void init() {
printf
("Введите
x
_
n
,
y
_
n
,
x
_
k
,
y
_
k
,
I
,
J
: "); /* Вывод сообщения с просьбой ввести значения входных переменных */
scanf
("%
d
%
d
%
d
%
d
%
d
%
d
", &
x
_
n
, &
y
_
n
, &
x
_
k
, &
y
_
k
, &
I
, &
J
); /* Ввод входных переменных пользователем */
r = sqrt((x_n - I)*(x_n - I) + (y_n - J) * ( y_n - J)); /*
Вычисление
радиуса
дуги
*/
x = x_n;
y = y_n;
codx = x;
cody = y;
f
= 0; /* Установка начальных значений внутренних переменных */
/* Вычисление начального угла по значениям
x
_
n
,
y
_
n
,
I
,
J
*/
if(x_n == I && y_n > J)
a_n = PI / 2;
if(x_n == I && y_n < J)
a_n = 3 * PI / 2;
if(x_n > I)
a_n = atan((y_n - J) / (x_n - I));
if(x_n < I)
a_n = PI + atan((y_n - J) / (x_n - I));
/* Вычисление конечного угла по значениям
x
_
k
,
y
_
k
,
I
,
J
*/
if(x_k == I && y_k > J)
a_k = PI / 2;
if(x_k == I && y_k < J)
a_k = 3 * PI / 2;
if(x_k > I)
a_k = atan((y_k - J) / (x_k - I));
if(x_k < I)
a_k = PI + atan((y_k - J) / (x_k - I));
da
=
a
_
n
-
a
_
k
; /* Вычисление угла поворота */
L
=
floor
(4 *
r
*
fabs
(
da
) /
PI
+ 0.5); /* Вычисление длины пути по дуге */
l
= 0; /* Установка текущей длины пути в 0 */
printf("init: r=%d, a_n=%f, a_k=%f, da=%f, L=%dn", r, a_n, a_k, da, L); /*
Вывод
на
экран
результатов
инициализации
*/
}
/* Функция расчета очередного шага алгоритма оценочной функции */
void circle() {
/* Вычисление разницы между текущими координатами и центром окружности */
X
=
x
–
I
;
Y = y - J;
/* Вычисление нового значения оценочной функции и перемещение по соответствующим осям в зависимости от текущих координат и текущего значения оценочной функции */
if(abs(X) >= abs(Y) && SGN(f) * SGN(X) * SGN(Y) == SGN(da)) {
y
=
y
-
SGN
(
X
) *
SGN
(
da
); /* Изменение координаты
y
*/
f
=
f
- 2 *
Y
*
SGN
(
X
) *
SGN
(
da
) + 1; /* Изменение значения оценочной функции */
}
else
if(abs(X) < abs(Y) && SGN(f) * SGN(X) * SGN(Y) != SGN(da)) {
x
=
x
+
SGN
(
Y
) *
SGN
(
da
); /* Изменение координаты
x
*/
f
=
f
+ 2 *
X
*
SGN
(
Y
) *
SGN
(
da
) + 1; /* Изменение значения оценочной функции */
}
else {
x
=
x
+
SGN
(
Y
) *
SGN
(
da
); /* Изменение координаты
x
*/
y
=
y
-
SGN
(
X
) *
SGN
(
da
); /* Изменение координаты
y
*/
/* Изменение значения оценочной функции */
f
=
f
+2 * (
abs
(
X
) -
abs
(
Y
)) *
SGN
(
Y
) *
SGN
(
X
) *
SGN
(
da
)+ 2 * 1;
}
l
=
l
+
abs
(
x
-
codx
) +
abs
(
y
-
cody
); /* Изменение пройденного пути */
codx
=
x
;
cody
=
y
; /* Установка переменных для передачи исполнительному устройству */
printf
("
f
=%
d
tcodx
=%
d
tcody
=%
d
tl
=%
d
n
",
f
,
codx
,
cody
,
l
); /* Вывод результатов очередного шага алгоритма на экран */
}
/* Главная функция программы, с нее начинается выполнение */
int
main
() {
/* Вызов функции инициализации алгоритма оценочной функции */
init();
/* В этом месте можно передать начальные координаты
cod
_
x
и
cod
_
y
(равные
x
_
n
и
y
_
n
) на исполнительное устройство */
/* Организация циклического вызова функции расчета очередного шага оценочной функции до тех пор пока текущий пройденный путь меньше полной длины пути по дуге */
while(l < L) {
circle();
/* В этом месте можно передать рассчитанные координаты
cod
_
x
и
cod
_
y
на исполнительное устройство */
}
return
0; /* Завершение главной функции программы */
}
Контрольное задание № 4
Задача 1.
Найти Z-преобразование, если передаточная функция непрерывной части имеет вид, представленный в таблице 10.
Таблица 10
Номер последней цифры шифра |
Передаточная функция непрерывной части F(S) |
0 |
F(S) = 5/S(S+0,1) |
1 |
F(S) = 45/(T1
|
2 |
F(S) = 20/S(S+1)(S+3) |
3 |
F(S) = 10(S+3)/(S2
|
4 |
F(S) = S/(S-1)(S+2) |
5 |
F(S) = 4/(0,1S+1)(0,2S+1) |
6 |
F(S) =10/S(S2
|
7 |
F(S) = 4/(25S2
|
8 |
F(S) =10/(4+S2
|
9 |
F(S) = 10/(S+0,5)2
|
Методические указания к решению задачи 1
Задачи контрольного задания 4 основываются на знании теории дискретных систем управления и достаточно полно отражены в литературе [1,2,7]. Z-преобразование является одним из математических методов, разработанных для анализа и проектирования дискретных систем. Аппарат Z-преобразования играет для цифровых систем ту же роль, что и преобразование Лапласа для непрерывных систем.
Поскольку Z-преобразование непрерывной функции f(t) получается из преобразования Лапласа для функции
где δт
(t) – единичная импульсная функция,
путем замены Z= eTS
(Т – период квантования импульсной системы регулирования), то в общем случае для любой функции f(t), имеющей преобразование Лапласа, существует так же Z-преобразование.
Z-преобразование можно получить, используя таблицы соответствия между преобразованием Лапласа и Z-преобразованием, имеющиеся в справочной литературе, а можно определить с использованием соотношений приведенных ниже.
А.
Если передаточная функция непрерывной части имеет К простых полюсов: S1
, S2
, … , Sк
и передаточная функция непрерывной части имеет вид:
то
где
Б.
Если F(S) имеет кратные полюсы S1, S2, … , Sк
с кратностью m1
… mn
, то
где
Рассмотрим ряд примеров нахождения Z-преобразования.
1. Найдем Z-преобразование ступенчатого воздействия, имеющего F(S) = 1/S; S1
= 0; D(S) = S; D΄(S) = 1.
2. Найдем Z-преобразование линейной функции, имеющей
F(S) = 1/S2
; S1
= S2
= 0; m =2; n = k = 1; i = 1,2.
а)
б)
Найдем производную выражения, стоящего в квадратных скобках.
Тогда
3. Найдем Z-преобразование функции, имеющую следующую передаточную функцию:
Применим метод разложения функции на простые дроби:
т.е.
и используя свойства линейности Z-преобразования
F(Z) = F1
(Z) – F2
(Z), находим F2
(Z) и окончательный результат
где D(S) = S2
+ Sα; D΄(S) = 2S + α; S1
= 0; S2
= -α
Задача 2.
Для заданной передаточной функции цифрового регулятора
Wp
(z) = y(z)/x(z)
составить разностное уравнение.
Данные приведены в таблице 11.
Таблица 11
Номер последней цифры шифра |
Wp
|
0 |
1- 0,5
0,5z-3
|
1 |
Z+0,5 .
0,3z2
|
2 |
0,7z2
0,1z-3
|
3 |
1 - z-2
0,5z2
|
4 |
z + 1 .
z4
|
5 |
0,5 + z-1
z-2
|
6 |
0,5z-1
0,4z-2
|
7 |
z .
0,5z3
|
8 |
1 + 0,5z-1
z-3
|
9 |
1 – z-1
1 – 0,5z-2
|
Методические указания к решению задачи 2
При реализации программных регуляторов с использованием микроконтроллеров следует помнить, что ЭВМ преобразует дискретную последовательность входа в дискретную последовательность выхода с заданным периодом квантования. При этом преобразования осуществляются в соответствии с определенной программой работы и сводятся к решению разностного уравнения в реальном масштабе времени.
Если передаточная функция регулятора найдена с использованием методов синтеза цифровых регуляторов[1,2], то перейти к разностному уравнению можно используя теорему сдвига.
Например :
где y[nTk
] – расчетное значение, выдаваемое на выход регулятора в данном такте,
x[nTk
] - значение ошибки в данном такте,
y[(n-i)Tk
] – соответствующее значение i – тактов назад.
х[(n-i)Tk
] –
В случае задания Wp
(z) с положительным значением степени z необходимо домножить числитель и знаменатель дроби на Z-
k
, где k – максимальная степень числителя или знаменателя в заданной передаточной функции.
Задача 3.
Представить разностное уравнение следующих цифровых регуляторов:
1) ПИ – пропорционально-интегрального;
2) ПД – пропорционально-дифференциального;
3) ПИД – пропорционально-интегродифференциального;
4) ПИ2
– пропорционально-двухкратноинтегрального;
5) ПД2
- пропорционально-двухкратнодифференциального;
6) ИА – инерционного.
Студенты, последняя цифра зачетной книжки у которых четная, решают задания – 2, 4, 6, а нечетная – 1, 3, 5. Для одного из регуляторов представить алгоритм и программу.
Методические указания к решению задачи 3
Наиболее универсальным способом коррекции цифровых систем управления является использование цифрового регулятора. По сравнению с аналоговым, цифровой регулятор в состоянии обеспечить лучшее качество системы управления. Введение производной в закон управления (дифференциальная составляющая) не только уменьшает перерегулирование, но и сокращает время нарастания (т. е. увеличивает быстродействие) выходного сигнала.
Интегральная составляющая позволяет устранять установившуюся ошибку, но увеличивает перерегулирование.
Пропорциональная составляющая определяет время нарастания выходной переменной.
В зависимости от характера объекта регулирования и требуемых законов управления можно использовать разные типы регуляторов.
Написание программы типового регулятора можно разделить на следующие этапы:
1. Выбор требуемого регулятора в соответствии с алгоритмом функционирования цифрового электропривода.
2. Представление модели цифрового корректирующего устройства (регулятора) в виде разностного уравнения.
3. Составление алгоритма и программы с использованием аппаратно-программных средств используемой микропроцессорной системы управления.
Пример.
Непрерывный И-регулятор описывается уравнением
,
где Т и
– постоянная интегрирования.
Продифференцируем исходное уравнение
и учитывая, что
dt = Tk
– период квантования, получим
и разностное уравнение цифрового И-регулятора имеет вид:
Аналогичный результат можно получить, используя метод нахождения Z-преобразования.
т. к. Z-преобразование то
получим передаточную функцию цифрового регулятора в виде:
Перейдем к разностному уравнению:
При решении задачи нахождение разностных уравнений регуляторов осуществить различными методами.
Уравнения непрерывных регуляторов и их передаточные функции:
1. ПИ-регулятор.
2. ПД-регулятор.
3. ПИД-регулятор.
4. ПИ2
-регулятор.
5. ПД2
-регулятор.
6. ИА-регулятор.
При получении разностного уравнения следует учитывать соотношения для первой и второй разности (обратной).
Пример программы реализации И-регулятора представлен в [1].
Задача 4.
Характеристический полином замкнутой цифровой системы регулирования скорости имеет вид:
1)
Используя W-преобразование, проверить устойчива или нет данная система. Коэффициенты характеристического полинома заданы в таблице12.
Таблица 12
Номер последней цифры шифра |
d1
|
d2
|
d3
|
0 |
-2,5 |
2,12 |
-0,606 |
1 |
-1,51 |
1,4 |
0,6 |
2 |
+1,2 |
-2,3 |
-0,4 |
3 |
+3,5 |
+1,6 |
+2,2 |
4 |
1,7 |
-2,3 |
+0,8 |
5 |
-3,2 |
+1,1 |
-0,5 |
6 |
-2,2 |
1,7 |
-1,5 |
7 |
+2,4 |
-2,1 |
+0,7 |
8 |
-2,1 |
+1,5 |
-1,0 |
9 |
+1,8 |
+1,6 |
-1,3 |
Методические указания к решению задачи 4
Устойчивость замкнутой цифровой системы определяется видом корней характеристического полинома. Для непрерывных систем корни устойчивой системы лежат в левой половине р-плоскости. Переход к комплексной переменной Z = epT
отображает левую полуплоскость во внутреннюю часть круга единичного радиуса с центром в начале координат Z-плоскости. Поэтому в устойчивой системе корни характеристического полинома должны лежать внутри круга единичного радиуса
Применение W-преобразования путем замены отображает внутреннюю часть круга единичного радиуса на левую половину W-плоскости, что позволяет использовать известные алгебраические критерии устойчивости.
Пример.
Характеристическое уравнение имеет вид:
Определить при каких А система устойчива?
Воспользуемся подстановкой
Домножим уравнение на (1-W)3
, тогда получим:
Необходимое условие устойчивости (положительность коэффициентов) выполняется при
0<A<14.
Достаточным условием устойчивости для полинома 3 степени является выполнение условия:
(14-A)(16-A)>A(10+A)
Решение данного неравенства дает результат:
A<5,6
Таким образом, импульсная система автоматического управления будет устойчива при значениях параметра А в интервале (0;5,6).
Литература
1. А. И. Хитров. Числовое программное управление промышленными установками и РТК. Учебное пособие. Псков. 1998 г. 155 с.
2. В. Ф. Козаченко. Микроконтроллеры: руководство по применению 16-разрядных микроконтроллеров INTEL MCS – 196/296 во встроенных системах управления. М.: Издательство ЭКОМ, 1997 г. 688 с.
3. М. Г. Бычков. Промышленные компьютеры и программируемые логические контролеры. М.: Издательство МЭИ, 2002 г. 92 с.
4. О. П. Ильин и др. Системы программного управления производственными установками и робототехническими комплексами. – Мн.: Высшая школа, 1988 г. 285 с.
5. В. М. Водовозов и др. Микропроцессорные системы программного управления.- СПб.: Энергоатомиздат, 1994 г. 256 с.
6. Многоцелевые системы ЧПУ гибкой механообработки. / под редакцией В. Г. Колосова. Л.: Энергоатомиздат, 1984г. 224 с.
7. Я. З. Цыпкин Теория линейных импульсных систем. М.: Физматиздат, 1963 г. 525 с.
Приложение 1
Базовые команды
MCS
– 196
Мнемоника |
Краткое описание операции |
||
1. Команды пересылки данных. |
|||
LD(B) |
Загрузка слова (байта). |
LD AX, #25H; AX←25H LDB A_L, #Ø; A L
|
|
ST(B) |
Запоминание слова (байта). |
STB A_L, B_L; A_L→B_L |
|
XCH(B) |
Обмен содержимого двух операндов-слов (байт). |
XCH AX, BX; AX↔BX |
|
CLR(B) |
Очистка значения операнда-слова (байта). |
CLR AX; AX← 0 |
|
CLRC |
Очистка флага переноса C в PSW. |
CLRC ; C← Ø |
|
SETC |
Установка флага переноса С. |
SETC ; C← 1 |
|
CLRVT |
Очистка флага-ловушки переполнения VT. |
CLRVT ; VT← 0 |
|
BMOV |
Непрерывная пересылка блока слов из одной области памяти в другую. |
BMOV A, B |
|
2. Арифметические команды. |
|||
ADD(B) |
Сложение слов (байт) с записью суммы в один из операндов (или третий операнд). |
ADDB A_L, B_L; A_L = A_L + B_L ADD AX, BX, CX; AX = BX + CX |
|
ADDC(B) |
Сложение слов (байт) с учетом переноса с записью суммы в один из операндов. |
||
SUB(B) |
Вычитание слов (байт) с записью разности по месту операнда-уменьшаемого (или третий операнд-источник. |
SUBB A_L, B_L; A_L = A_L – B_L SUB AX, BX, CX; AX = BX – CX |
|
SUBC(B) |
Вычитание слов (байт) с учетом заёма с записью разности по месту операнда-уменьшамого. |
||
INC(B) |
Увеличение значения слова (байта) на 1. |
INCB A_L; A_L=A_L +1 |
|
DEC(B) |
Уменьшение операнда-слова (байта) на 1. |
DEC AX; AX = AX – 1 |
|
NEG(B) |
Изменение на противоположный знака числа. |
NEGB A_L |
|
MUL(B) |
Знаковое умножение двух целых чисел с записью произведения на место одного из множителей (или в третий операнд). |
MULB A_L, B_L; A_L = A_L ∙ B_L MUL AX, BX, CX; AX = BX ∙ CX |
|
MULU(B) |
Беззнаковое умножение двух слов (байт) с записью произведения на место одного из множителей (или в третий операнд). |
||
DIV(B) |
Знаковое деление с записью частного в младшее слово (байт) операнда-делимого и остатка – в старшее слово (байт) операнда-делимого. |
||
CMP(B) |
Сравнение двух операндов-слов (байт). |
CMP AX, BX; AX-BX CMPB A_L, #25; A_L-25. |
|
3. Логические команды. |
|||
NOT(B) |
Логическое НЕ – побитовая инверсия операнда-слова (байта) |
||
AND(B) |
Логическое И – побитовое умножение двух операндов-слов (байт) с записью результата в один из операндов (или в третий операнд). |
ANDB REG, #1111111Ø; REG.Ø← 0 ANDB REG, #00001111; REG 7.4 ← 0 (сброс битов) |
|
OR(B) |
Логическое ИЛИ – логическая побитовая операция ИЛИ двух операндов-слов (байт) с записью результата в один из операндов. |
ORB REG, #11110000; ; REG. 7.4 ← 1 (установка битов) |
|
XOR(B) |
Логическое «Исключающее ИЛИ» - побитовая операция неэквивалентности с записью результата в один из операндов. |
XORB REG, #00000001; _____ REG.Ø = REG.Ø (побитовая инверсия разрядов) |
|
4. Команды сдвига и нормализации. |
|||
SHL(B) |
Логический сдвиг слова (байта) влево на заданное число разрядов с заполнением битов справа нулями. |
||
SHR(B) |
Логический сдвиг слова (байта) вправо на заданное число разрядов с заполнением битов слева нулями. |
SHR REG, # 7 |
|
SHRA(B) |
Арифметический сдвиг слова (байта) вправо на заданное число разрядов с заполнением битов слева знаком исходного операнда. |
SHRA AX, B_L |
|
NORMAL |
Нормализация длинного целого (32 бит) – сдвиг влево до тех пор, пока старший значащий бит не станет равным 1. Запоминание числа сдвигов в операнде-приемнике. |
||
5. Команды передачи управления. |
|||
SJMP |
Короткий безусловный переход. |
||
LJMP |
Длинный безусловный переход. |
||
BR |
Косвенный переход по содержимому операнда-слова. |
BR M7; (PC) ← M7 |
|
JC |
Переход, если установлен С. |
JC M7; C = 1 (PC) ← M7 |
|
JNC |
Переход, если С очищен. |
||
JE |
Переход, если флаг Z установлен. |
||
JNE |
Переход, если флаг Z очищен. |
||
JV |
Переход, если флаг переполнения V установлен. |
||
JNV |
Переход, если флаг переполнения V очищен. |
||
JVT |
Переход, если флаг ловушки переполнения VT установлен с одновременной очисткой VT. |
||
JNVT |
Переход, если флаг ловушки переполнения VT очищен. |
||
JGE |
Переход, если число со знаком больше или равно (флаг N очищен). |
||
JLT |
Переход, если число со знаком строго меньше (N установлен). |
||
JGT |
Переход, если число со знаком строго больше (Z = 0, N = 0). |
||
JLE |
Переход, если число со знаком меньше или равно (Z = 1 или N = 1). |
||
JH |
Переход, если число без знака выше (С = 1 и Z = 0). |
||
JNH |
Переход, если число без знака не выше (С = 0 или Z = 1). |
||
JBC |
Переход по указанному адресу, если заданный бит байтового операнда очищен. |
||
JBS |
Переход по указанному адресу, если заданный бит установлен. |
||
DJNZ |
Декремент значения байтового операнда и переход по указанному адресу, если результат не равен нулю. |
||
DJNZW |
Уменьшение на 1 значения слова и переход по указанному адресу, если результат не равен нулю (команды организации циклов). |
||
6. Команды работы со стеком и подпрограммами. |
|||
PUSH |
Запись в стек слова из операнда-источника. |
||
POP |
Извлечение слова из стека в операнд-приемник. |
||
PUSHA |
Запись в стек двух слов с текущим содержимым регистров специального назначения процессора (PSW, INT, MASK, и INT_MASK1, WSR). |
||
POPA |
Аналогичное восстановление их из стека. |
||
PUSHF |
Запись в стек слова с текущим содержимым регистров специального назначения процессора (PSW, INT_MASK) – сохранение флагов. |
||
POPF |
Извлечение слова из стека с записью в регистры (PSW, INT_MASK) восстановление флагов. |
||
CALL |
SCALL |
- короткий вызов подпрограммы - длинный вызов подпрограммы |
|
LCALL |
|||
RET |
Возврат из подпрограммы. |
||
7. Команды специального назначения. |
|||
NOP |
Пустая операция. |
||
SKIP |
Двухбайтовая пустая операция. |
||
EI |
Разрешение прерываний. |
||
DI |
Запрещение прерываний. |
||
DPTS |
Запрещение работы PTS. |
||
EPTS |
Разрешение работы PTS. |
||
RST |
Программный сброс процессора. |
||
IDLPD |
Установка режима ожидания или пониженного энергопотребления. |
БАЗОВЫЕ КОМАНДЫ «ЭЛЕКТРОНИКА – 60»
(DEC – архитектурные модели)
1. Команды пересылки данных. |
||
Мнемоника |
Краткое описание операции |
|
MOV(B) |
Пересылка операнда-слова (байта) источника по адресу операнда приемника. |
MOV A, B; A → B |
CLR(B) |
Очистка операнда. |
|
SWAB |
Перестановка байтов. |
|
2. Арифметические команды. |
||
ADD |
Операнд источника складывается с операндом приемника и результат заносится по адресу приемника. |
ADD #1ØØ., CSR; 100+CSR → CSR |
ADC(B) |
Операнд складывается с содержимым флага C PSW. |
|
SBC(B) |
Из операнда вычитается содержимое флага C PSW. |
|
SUB |
Из операнда источника вычитается содержимое операнда приемника и результат записывается по адресу приемника. |
SUB A, B B ← A - B |
INC(B) |
Инкрементирование операнда. |
|
DEC(B) |
Декрементирование операнда. |
|
NEG(B) |
Преобразование операнда в двоичное дополнение (изменение знака числа). |
|
CMP(B) |
Сравнивает операнды источника с операндом приемника (вычитается приемник из источника). |
CMP A, B B ← A - B |
MUL |
Операция умножения. |
|
DIV |
Операция деления. |
|
3. Логические команды. |
||
COM(B) |
Инвертирование всех разрядов операнда(логическое НЕ) |
|
BIT(B) |
Логическое И над источником(SS) и приемником(DD).Изменяются флаги PSW, оба операнда не изменяются. |
BIT #10, CSR ; проверка 3 разряда в регистре CSR. |
BIC(B) |
Очищает каждый разряд операнда (DD),соответствующий установленному разряду операнда SS. |
BIC # 1, CSR ; очистка Ø разряда. |
BIS(B) |
Выполняет логическую операцию ИЛИ, а результат заносится по адресу операнда-приемника (DD). |
BIS # 2, CSR ; установка в 1 1 разряда CSR. |
XOR |
Операция «неэквивалентность» над содержимым регистра общего назначения(РОН) и содержимым приемника ( DD). |
|
TST(B) |
Тестирует операнд и меняет флаги Z и N в PSW. |
M: TSTB CSR BPL M ; проверка установки 7 бита в CSR в 1. |
4. Команды сдвига. |
||
ROL(B) |
Циклически сдвигает все разряды влево на одну позицию. |
|
ROR(B) |
Аналогично вправо на одну позицию. |
|
ASL(B) |
Сдвигает все разряды влево на одну позицию (умножение на два). |
|
ASR(B) |
Сдвигает все разряды вправо на одну позицию (деление на два). |
|
5. Команды передачи управления. |
||
BR |
Безусловный переход с использованием смещения. |
|
BNE |
Ветвление, если не равно нулю (переход, если Z = 0). |
|
BEQ |
Ветвление, если равно нулю (переход, если Z = 1). |
|
BPL |
Ветвление, если плюс (переход, если N = 0). |
|
BMI |
Ветвление, если минус (переход, если N = 1). |
|
BVC |
Ветвление, если не равно нулю (проверяет состояние V = 0). |
|
BVS |
Ветвление, если равно нулю (переход, если V = 1). |
|
BCC |
Ветвление, если не равно (нулю) (переход, если С = 0). |
|
BCS |
Ветвление, если равно (нулю) (переход, если С = 1). |
|
BGE |
Ветвление, если больше или равно (нулю) (вызывает ветвление, если N и С установлены или очищены). |
|
BLT |
Ветвление, если меньше (нуля) (ветвление, если установлен только один из флагов N или С). |
|
BGT |
Ветвление, если больше (нуля) (ветвление, если установлен один из флагов N или С, а Z = 1). |
|
BLE |
Ветвление, если больше или равно (нулю) (подобна BLT, но вызывает ветвление если результат предыдущей операции был равен Ø). |
|
BHI |
Ветвление, если больше (после операции сравнения если С = 0, Z = 0). |
|
BLOS |
Ветвление, если меньше или равно (вызывает ветвление, если предыдущая операция вызывает перенос или Z = 1). |
|
JMP |
Безусловный переход. Команда обеспечивает возможность перехода программы на любую ячейку памяти с использованием всех методов адресации (за исключением регистрового). |
|
6. Команды специального назначения. |
||
SOB |
Счет циклов в регистре общего назначения. |
SOB R2, метка |
JSR |
Переход к подпрограмме. |
|
RTS |
Возврат из подпрограммы. |
|
MFPS |
Чтение слова состояния программы (PSW). |
|
MTPS |
Запись слова состояния (PSW). |
MTPS # 0 (разрешение прерываний) MTPS # 2ØØ; (запрещение прерываний) |
NOP |
Нет операции. |
|
HALT |
Останов. |
|
WAIT |
Ожидание. |
|
RTI |
Возврат из прерывания |
|
TRAP |
Командное прерывание |
|
RESET |
Сброс BУ. |
|