
- •В. Д. Сартаков микропроцессорные средства и системы Методические указания для выполнения курсового проекта
- •Издательство Иркутского государственного технического университета
- •Подготовила к печати ведущий редактор
- •664074, Иркутск, ул. Лермонтова, 83 Основные требования
- •Содержание задания 1
- •Методические указания по выполнению задания 1
- •Методические указания по разработке математической модели пид-регулятора
- •Основная программа на языке «Structured text» (stl) для пмк s7-200
- •Подпрограмма на языке «Structured text» (stl) для пмк s7-200
- •Программа обработки прерываний для pid-вычислений
- •Задание 2 Пуск двигателя по линейному закону изменения скорости в системе сп-д без обратных связей. Исходные данные
- •Содержание задания 2
- •Методические указания по выполнению задания 2
- •Методические указания по разработке математической модели микропроцессорной системы для управления пуском двигателя по линейному закону
- •Задание 3 Цикловая система программного управления. Исходные данные
- •Содержание задания 3
- •Методические указания по выполнению задания 3
- •Библиографический список
Основная программа на языке «Structured text» (stl) для пмк s7-200
Network 1
LD SM0.1 //Если замыкается контакт SM0.1, то
CALL SBR_0 //производится вызов подпрограммы
//с номером 0
END //Окончание основной программы
Подпрограмма на языке «Structured text» (stl) для пмк s7-200
SBR 0 //Начало подпрограммы с номером 0
//(в Step-7 не записывается)
Network 1
LD SM0.0 //Если замыкается контакт SM0.0, то
MOVR 0,75, VD104 //Заданное значение, равное 0.75,
//записывается в ЯП VD104 и
MOVR 0,25, VD112 //Коэффициент усиления, равный 0.25,
//записывается в ЯП VD112 и
MOVR 0,10, VD116 //Интервал съема данных, равное 0.1 сек,
//записывается в ЯП VD116 и
MOVR 30,0, VD120 //Время воздействия по интегралу, равное
//30 мин, записывается в ЯП VD120 и
MOVR 0,0, VD124 //Воздействие по производной, равное 0,
//записывается в ЯП VD124 и
MOVB 100, SMB34 //Производится установка интервала
//времени, равное 100 мс, для управляемого //временем прерывания с событием 10
//в специальный меркер SM34 и
ATCH 0, 10 //Назначение управляемому временем //прерыванию с событием 10 подпрограмму //прерывания с номером 10 и
ENI //Разблокировка прерываний с событием 10
RET // и выход из подпрограммы 0
Программа обработки прерываний для pid-вычислений
INT 0 // Начало прерывающей подпрограммы с //номером 0 для события 10
//(в Step-7 не записывается)
Network 1
LD SM0.0 // Если замыкается контакт SM0.0, то
XORD AC0, AC0 //производится очистка аккумулятора АС0 и
MOVW AIW0, AC0 //Запись сигнала обратной связи из
//входного буфера аналоговых величин
//микроконтроллера S7-200 в АС0
DTR AC0, AC0 //Сигнал обратной связи из формата
//двойного целого числа //(32 бита),
//полученного из входного буфера
// аналоговых величин преобразуется в
//действительное число (реальное число)
/R 32000,0, AC0 //Нормализация сигнала обратной связи
//(преобразование UОС в нормированное
// значение) и запись его в аккумулятор АС0
MOVR AC0, VD100 //Запись нормализованного значения
// сигнала обратной связи из
//аккумулятора АС0 в таблицу регулятора
//(ячейку памяти VD100)
Network 2
LD I0.0 //Если включен автоматический режим,
//то есть на дискретный вход I0.0
//подана логическая 1,
PID VB100, 0 //то вызвать операцию PID
//Преобразование Mn в масштабированное //целое число
//(16 бит) - Mn является униполярным //значением и не
//может быть отрицательным
Network 3
LD SM0.0 // Если замыкается контакт SM0.0, то
MOVR VD108, AC0 //Загрузка выходного сигнала регулятора
// из ячейки памяти VD108 в аккумулятор
//AC0
*R 32000,0, AC0 //Масштабирование значения выходного
// сигнала регулятора
TRUNC AC0, AC0 //Преобразование выходного сигнала
// регулятора из формата действительного
// числа в формат двойного целого числа
// (32 бита)
MOVW AC0, AQW0 //Запись выходного сигнала регулятора в
//формате целого числа (16 бит) в буфер
//аналогового выхода
RETI //Выход из прерывающей подпрограммы
// номером 0 для события 10
Основная программа, реализующая ПИ - регулятор на обоих языках (см. рис. 7) состоит из двух команд: команда «обращение к подпрограмме» с номером, равным 0, и команда «конец программы» (Network1 основной программы). ПИ – регулятор характеризуется следующими параметрами: KР = 0.25; T0 = 0.1 секунды; TИ = 30 минут; ТД =0.
Подпрограмма с номером «0» (см. рис. 8)состоит из одной схемы Network1 подпрограммы и включает команды подпрограммы, выполняющие ввод исходных данных: параметры ПИ – регулятора KР = 0.25; T0 = 0.1 секунды; TИ = 30 минут; ТД =0 и сигнал задания Uзад=0.75. Все параметры вводятся с помощью команды пересылки одного и того же формата с плавающей запятой MOVR. В рассматриваемом примере имеется 5 исходных данных и для их ввода применяется 5 команд пересылки MOV_R. Шестая команда MOV_R используется для задания интервала прерывания таймера T0 = 0.1 с или 100 мс. Параметр KР = 0.25 сохраняется в памяти ПМК в ячейке VD104 и занимает объем в 4 байта. Следующий параметр T0 = 0.1 сохраняется в памяти ПМК в ячейке VD112 и также занимает объем в 4 байта. Для остальных параметров и сигнала задания зарезервированы ячейки памяти VD116, VD120 и VD124. Для сигнала обратной связи выделена ячейки памяти VD100. Интервал прерывания таймера T0 = 100 мс сохраняется в памяти ПМК в специальном меркере SM34 (специальная область памяти ПМК S7-200).
Команда АТСН событию прерывания с номером 10 назначает номер 0 программы обработки прерывания. Командой ENI событие прерывания 10 разблокируется, т. е микроконтроллеру разрешается обрабатывать подпрограммы прерываний, связанные с событием 10. Последней командой подпрограммы является команда RET (Возврат из подпрограммы).
Регулятор имеет две входные переменные: заданное значение (сигнал задания) и фактическое значение регулируемой величины (сигнал обратной связи, называемый переменной процесса). Заданное значение обычно представляет собой фиксированное значение, например, уставку скорости для регулятора скорости движения электропривода. Переменная процесса представляет собой значение, которое связано с регулирующим воздействием регулятора и поэтому является мерой влияния, оказываемого регулирующим воздействием на регулируемую систему. В примере с регулятором скорости электропривода переменная процесса является выходной величиной, допустим, тахогенератора, измеряющего скорость вращения двигателя. Оба значения - заданное и фактическое - являются аналоговыми значениями, величина, диапазон и единица измерения которых может быть разной. Прежде чем эти значения могут быть использованы операцией PID, они должны быть преобразованы в нормализованное представление с плавающей запятой. Для этого аналоговое значение, представленное как целое число (16 бит), нужно преобразовать сначала в число с плавающей запятой, или в действительное число. Команды, которые преобразовывают целое число (сигнал обратной связи) в действительное число, представлены в схеме Network1 прерывающей подпрограммы на рис. 9. Практически в рассматриваемом примере математическая модель регулятора реализована в подпрограмме прерываний (см. рис. 10).
Команды языков в Step-7 «работают» с величинами, которые могут быть представлены в различных форматах: формат целых чисел; формат целых чисел двойной длины; формат с плавающей запятой. Поэтому обрабатывать информацию, то есть реализовывать математическую модель регулятора, можно, используя любой из этих форматов представления чисел. В данном случае обработка информации в программе ПИД-регулятора производится в формате с плавающей запятой. Все команды языка лестничной логики (Ladder) в Step – 7 «начинают работать» только после подачи на их управляющий вход логической 1. Для этого в Network1 прерывающей подпрограммы на рис. 9 используется битовая команда «замыкающийся контакт» с адресом SM0.0, который в микроконтроллерах S7 включен всегда (то есть на выходе этой команды после запуска программы в любой момент сигнал равен логической 1).
Для преобразования переменной процесса (сигнал обратной связи) в действительное число (число в формат с плавающей запятой) в рассматриваемом примере используются команды WXOR_DW, MOV_W и DI_REAL. Первая команда WXOR_DW (Исключающее «ИЛИ») очищает аккумулятор АС0, если на оба входа поданы одинаковые (равные) операнды. После очистки аккумулятора АС0 по команде MOV_W на его вход (вход IN) подается из буфера аналоговых входов (вход AIW0) сигнал обратной связи, уже преобразованный АЦП микроконтроллера в цифровую форму в формате целых чисел (16 двоичных разрядов). Этот сигнал записывается в аккумулятор АС0 и принимает формат целого числа двойной длины (32 двоичных разрядов), так как аккумулятор АС0 имеет 32разряда. Командой DI_REAL сигнал обратной связи в формате целых чисел двойной длины преобразуется в действительное число (число в формат с плавающей запятой).
На следующем шаге нужно действительное число, представляющее сигнал обратной связи, преобразовать в нормализованное значение в диапазоне от 0,0 до 1,0. Нормализация заданного значения (задания регулятора) или значения переменной процесса (сигнал обратной связи) производится с помощью следующего уравнения:
, (9)
где
- нормализованное действительное число;
- ненормализованное
действительное число;
- сигнал смещения,
равный 0 при управлении нереверсивными
электроприводами и равный 0,5 при
управлении реверсивными электроприводами;
- разность между
максимально возможным и минимально
возможным значением. При управлении
нереверсивными электроприводами
равно 3200010,
а при управлении реверсивными
электроприводами
равно 6400010.
В рассматриваемом примере, в котором программируется ПИ – регулятор для нереверсивного электропривода, равно 3200010, а = 0. Реализовать уравнение (9) для данного случая можно с помощью команды DIV_R (Network1 прерывающей подпрограммы на рис. 9). Последней командой в Network 1 прерывающей подпрограммы является команда MOV_R. Для хранения сигнала обратной связи выделена ячейка памяти VD100, в которую с помощью команды MOV_R записывается нормализованное значение переменной процесса. Ячейка памяти VD100 является одним из элементов таблицы следующей командыPID. Заданное значение заранее фиксируется и записывается непосредственно в таблицу контура регулирования (таблицу командыPID).
Network2
прерывающей подпрограммы на рис. 9
состоит только из одной команды PID,
реализирующей уравнения (1) и (6) дискретной
математической модели ПИД-регулятора.
Запускается команда PID автоматически,
если на ее управляющий вход EN
подана логическая 1 с выхода битовой
команды «замыкающийся контакт» с адресом
I0.0,
который соответствует режиму «управление
от микроконтроллера S7».
Если на дискретном входе I0.0
установлен логический ноль, то есть
переключатель режима находится в
положении «ручной режим», то команда
PID
не выполняется. Для команды PID резервируется
таблица адресов длиной 36 байтов, которая
имеет следующий формат (см. табл. 2).
Переменная процесса (фактическое
значение) и заданное значение являются
входными величинами в PID – вычислениях.
Поэтому эти поля таблицы контура
регулирования считываются, но не
изменяются операцией PID. В табл. 2 для
сигнала обратной связи (переменная
процесса)
смещение равно 0. Это означает, что если
таблица адресов начинается с адреса
VD100,
то сигнал обратной связи
будет записываться в эту ячейку памяти.
Для сигнала задания
смещение равно 4. Это означает, что сигнал
задания
будет записан в ячейку памяти VD104
и т. д. Выходной сигнал регулятора (
)
вычисляется по формулам (10) и (11)
[23].
. (10)
, (11)
где IK-1 – интегральная составляющая выходного сигнала ПИД-регулятора;
- коэффициент
пропорциональности интегральной
составляющей выходного сигнала
ПИД–регулятора;
-
коэффициент пропорциональности
дифференциальной составляющей выходного
сигнала ПИД-регулятора.
Таблица 2
Смещение
|
Поле |
Формат |
Тип данных |
Описание |
0
|
Переменная процесса/ фактическое значение (сигнал обратной связи в текущий интервал дискретности) |
Двойное слово - Действительное число |
IК |
Содержит фактическое значение или переменную процесса, которая должна быть масштабирована в диапазоне от 0.0 до 1.0 |
4 |
Заданное значение (сигнал задания) ( )
|
Двойное слово - Действительное число |
IК |
Содержит заданное значение, которое должно быть масштабировано в диапазоне от 0.0 до 1.0. |
8 |
Регулирующее воздействие - выходной сигнал регулятора ( )
|
Двойное слово - Действительное число |
IК/Out |
Содержит вычисляемое регулирующее воздействие, которое должно быть масштабировано в диапазоне от 0.0 до 1.0.
|
12 |
Коэффициент усиления (коэффициент передачи пропорциональной части) (KР)
|
Двойное слово - Действительное число |
IК |
Содержит коэффициент усиления - коэффициент пропорциональности. Он может быть положительным или отрицательным.
|
16 |
Период дискретизации (T0)
|
Двойное слово - Действительное число |
IК |
Содержит интервал съема информации в секундах (интервал дискретности). Это значение должно быть положительным |
20 |
Время изодрома (постоянная времени интегрирующей части TИ)
|
Двойное слово - Действительное число |
IК |
Содержит время изодрома в минутах (постоянная времени интегрирующей части TИ). Это значение должно быть положительным. |
24 |
Время упреждения (постоянная времени дифференцирующей части TД)
|
Двойное слово - Действительное число |
IК |
Содержит время упреждения в минутах (постоянная времени дифференцирующей части TД). Это значение должно быть положительным.
|
28 |
Интегральная сумма (IК-1)
|
Двойное слово - Действительное число |
IК/Out |
Содержит интегральную сумму IК-1 или смещение в диапазоне от 0.0 до 1.0.
|
32 |
Предыдущее фактическое значение /Переменная процесса (сигнал
обратной связи в предыдущий интервал
дискретности
|
Двойное слово - Действительное число |
IК/Out |
Содержит предыдущее значение переменной процесса или предыдущее фактическое значение с момента последнего выполнения операции PID. |
Регулирующее воздействие (выходной сигнал регулятора, который хранится в ячейке памяти VD108) представляет собой нормализованное действительное число в диапазоне от 0.0 до 1.0. Прежде чем станет возможным подать на аналоговый выход это регулирующее воздействие, нужно преобразовать регулирующее воздействие в масштабированное целочисленное значение (16 бит). Этот процесс противоположен преобразованию заданного ( ) или фактического ( ) значения в нормализованное. Сначала нужно преобразовать регулирующее воздействие ( ) в масштабированное действительное число. Для этого используется следующее уравнение:
=
-
(12)
- масштабированное действительное значение регулирующего воздействия (масштабированное действительное значение выходного сигнала регулятора);
- нормализованное действительное значение регулирующего воздействия (нормализованное действительное значение выходного сигнала регулятора изменяется для униполярного регулятора в пределах от 0.0 до 1.0);
– сигнал смещения,
равный 0.0 для униполярных значений и
0.5 для биполярных значений;
- разность между максимально возможным и минимально возможным
значением (масштабный коэффициент).
=32000 для униполярных значений.
=64000 для биполярных значений.
В рассматриваемом примере, в котором программируется ПИ – регулятор для нереверсивного электропривода, равно 3200010, а = 0. Поэтому операцию вычитания - можно исключить, так как = 0 и остается при масштабировании выполнить только операцию умножения на число, равное 32000.
= ) .
Следующие команды (Network3 прерывающей подпрограммы на рис. 10) показывают, как нужно масштабировать регулирующее воздействие. Первой командой этой группы является команда MUL_R VD108, 32000, которая умножает нормализованное действительное значение выходного сигнала регулятора из таблицы команды PID (ячейка памяти VD108) на число 32000, являющееся масштабным коэффициентом. Результат умножения записывается в аккумулятор АС0 (аккумуляторы МП CPU S7-200 принимают участие во всех арифметических операциях микроконтроллера). Следующей командой в Network3 прерывающей подпрограммы является команда TRUNC, преобразующая действительное число в целое число двойной длины. Результат преобразования записывается в аккумулятор АС0. Команда MOV_W передает выходной сигнал регулятора из АС0 в буфер выхода аналоговых величин (адрес ячейки памяти аналогового буфера AQW0. Если обращение к аккумулятору производится в формате байта или слова, то при этом используются младшие 8 или 16 битов значения, хранимого в аккумуляторе. Так как команда MOV_W имеет формат слова (W), то на выходе этой команды (AQW0) ,будут использоваться 16 битов значения, хранимого в аккумуляторе АС0. Затем цифровая информация о выходном сигнале регулятора аппаратно поступает в ЦАП микроконтроллера (точнее в модуль аналогового ввода-вывода). Цикл работы программного ПИД- регулятора завершен.
Программа на языке STL («Structured text») комментируется непосредственно после каждой команды программы.
После составления программы необходимо определить время выполнения прерывающей подпрограммы tПРЕРПП и убедиться, что оно меньше выбранного времени ТО (интервала дискретности).