Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE 22
Министерство образования Российской Федерации
ГОУ ВПО «Уральский государственный технический университет УПИ»
ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ СИСТЕМ УПРАВЛЕНИЯ
Методические указания к курсовой работе
по дисциплине «Микропроцессорные средства и системы в электроприводе» для студентов всех форм обучения специальности
1804 Электропривод и автоматизация промышленных установок
и технологических комплексов
Екатеринбург 2003
УДК 62-83.001
Составители А.В. Костылев, Д.П. Степанюк
Научный редактор доц., канд.техн.наук А.М. Зюзев
ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ СИСТЕМ УПРАВЛЕНИЯ. Методические указания к курсовой работе по дисциплине «Микропроцессорные средства и системы в электроприводе» / А.В. Костылев, Д.П. Степанюк. Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2003. 33 с.
Изложена методика программирования микропроцессорных систем управления электроприводами и технологической автоматикой. Рассмотрены принципы программирования микропроцессорных комплектов управления. Изложена методика разработки и отладки управляющих программ, работающих в реальном времени. Приведены типовые примеры программ.
Библиогр.: 6 назв. Рис. 10. Прил. 3.
Подготовлено кафедрой «Электропривод и автоматизация промышленных установок».
© ГОУ ВПО «Уральский государственный
технический университет УПИ», 2003
Целью настоящей работы является ознакомление студентов с основными принципами создания программ для микропроцессорных систем управления реального времени. В работе изложены теоретические основы разработки программного обеспечения. Рассмотрены вопросы структурирования управляющих программ. Приведены алгоритмы для типовых звеньев систем автоматического регулирования и отдельных регуляторов для систем управления электроприводами. Рассмотрена методика отладки управляющих программ. Большое внимание уделено вопросам программирования цифровых систем управления электроприводами.
Методические указания могут быть использованы студентами всех форм обучения специальности 1804 Электропривод и автоматика промышленных установок и технологических комплексов при выполнении курсовых работ по курсам «Микропроцессорные средства и системы в электроприводе», «Системы управления электроприводами», «Автоматизация типовых технологических процессов» и дипломном проектировании. Указания могут быть полезны студентам других электротехнических специальностей, имеющих дело с микропроцессорными системами автоматического управления.
Сегодня практически все системы управления электроприводами и технологической автоматикой выполняются на микропроцессорной основе. Причинами этого факта являются:
С учетом вышесказанного разработка современной системы управления включает в себя как вопросы проектирования аппаратной части, так вопросы программирования микропроцессорных комплектов, причем последним уделяется большее внимание. В настоящем пособии рассмотрены некоторые методики создания рабочего программного обеспечения для микропроцессорных систем управления.
Сразу же следует отметить, что проработка аппаратной и программной частей должна вестись параллельно. При создании программы может потребоваться необходимость в дополнительном периферийном оборудовании. С другой стороны необходимость минимизации затрат на аппаратную часть может скорректировать алгоритмы управляющей программы. При выборе микропроцессорного комплекта управления следует руководствоваться как требованиями к аппаратной части (быстродействие, объем памяти, периферийное оборудование), так и требованиями к полноте программного обеспечения, поставляемого вмести с комплектом (языки программирования, средства отладки, библиотеки стандартных функций, эмуляторы).
Особенностью программ для микропроцессорных систем управления является то, что они должны работать в реальном времени. Это означает, что реакции системы управления на внешнее воздействие по времени должна быть такой, чтобы не возникало потери информации и ухудшения качества регулирования. К программам реального времени относятся управляющие программы, программы мониторинга, сбора информации и визуализации. Таким образом, при разработке программы ставится не просто задача корректного воспроизведения алгоритма, но и минимизация времени его выполнения, оптимизация программного кода по быстродействию. Причем обеспечение заданного быстродействия программы является необходимым условием ее работоспособности.
Отдельным серьезным вопросом является вопрос выбора языка программирования. Сегодня существуют три основные группы языков: языки ассемблера, классические языки высокого уровня (Паскаль, Си) и языки визуального программирования. К несомненным достоинствам первой группы языков следует отнести возможность максимально использовать ресурсы процессора по быстродействию и объему памяти. Достигается это за счет оптимизации программного кода при решении конкретной задачи. Однако достигается это за счет существенного увеличения времени разработки программы. Кроме того, для работы с Ассемблером требуется более высокая квалификация программиста. Сегодня, как правило, Ассемблер используют только для разработки программ драйверов (программ обслуживания аппаратных устройств).
Языки высокого уровня существенно более просты в восприятии и обучении. Как следствие, в разы сокращается время на разработку программ. Являясь платформенно независимой, программа, написанная на языке высокого уровня, может быть легко перенесена на новую аппаратную базу. Указанные особенности привели к максимально широкому распространению языков второй группы. Лидером среди них является язык C. Недостатком С является увеличение времени выполнения программы примерно на 30%.
Третья группа языков возникла сравнительно недавно, но уже стала очень популярной. Особое распространение языки визуального программирования нашли в области промышленной автоматики. Так язык релейно-контакторных схем является сегодня основным инструментом для программирования логических контроллеров. Основное достоинство языка возможность восприятия и создания рабочих программ как электрических схем. Недостатком же такого языка является ограниченный набор функциональных элементов, что затрудняет решение нетрадиционных задач.
Сегодня типовым решением является объединение нескольких языков программирования при создании программного продукта. Это позволяет максимально усилить достоинства каждой группы языков. В этом случае программы-драйверы пишутся на Ассемблере, цифровые регуляторы программируются на C, а технологическая автоматика выполняется на языке релейно-контакторных схем или функциональных блоков.
В общем случае следует выделить такие этапы разработки программы реального времени для микропроцессорной системы управления:
Следует отметить, что некоторые из этих этапов могу выполняться параллельно и независимо друг от друга. Так, например, разработка типовых алгоритмов и драйверов обычно выполняется параллельно разными специалистами.
Как правило, сегодня производители микропроцессорных средств управления поставляют в комплекте с аппаратной частью набор средств разработки программного обеспечения. В этот комплект обычно входят:
В качестве примеров таких пакетов можно назвать Code Composer, разработанный для работы с сигнальными процессорами серии TMS, Logo Comfort для программирования контроллеров LOGO и т.п. На рис. 2.1 приводится внешний вид программного пакета MicroWIN, предназначенного для работы с контроллерами S7-200.
Рис. 2.1. Внешний вид программного пакета MicroWIN
Важно отметить, что полнота комплекта разработчика, его функциональность и удобство работы с ним во многом определяют временные затраты на разработку рабочей программы и надежность ее функционирования.
Управляющие программы микропроцессорных систем существенно отличаются по своей структуре от традиционных вычислительных программ. Основная особенность состоит в необходимости тактирования программы по времени и синхронизации ее выполнения с работой аппаратной части. Традиционно эта задача решается с помощью механизма прерываний.
Обычно для тактирования программы используется одно и то же тактирующее устройство как для силового преобразователя, так и для микроконтроллера. В электроприводе при использовании преобразователя с ШИМ таким устройством является таймер формирования несущей частоты. Для электропривода постоянного тока используется устройство синхронизации с питающей сетью. В общем случае структура управляющей программы может быть изображена так, как показано на рис. 2.2.
Рис. 2.2. Общая структура управляющей программы
Структура состоит из трех больших блоков: блока стартовой инициализации, блока обработки прерываний и блока фоновых задач. Первый блок выполняется при включении питания микроконтроллера и при аппаратном сбросе. В этот момент происходит инициализация внешних и внутренних аппаратных средств и выполняется самотестирование. Далее инициализируется память, и присваиваются начальные значения всем переменным, задействованным в программе. Это особенно важно для переменных, значение которых используется в программе до момента явного присвоения. Наиболее ярким примером такой ситуации является интегратор, новое значение которого вычисляется на основании предыдущего. Естественно, что в момент первого прохождения программы это значение неизвестно. По окончании выполнения блока инициализации разрешается выполнение прерываний и управление передается фоновой программе.
Следующим блоком является блок обработки прерывания. Выполнение этого блока прерывает (отсюда название) работу фоновой программы. Различают регулярные прерывания идущие от блоков синхронизации (их может быть несколько) и прерывания для обслуживания запросов периферийных устройств и собственных нужд процессора. К последним относятся и аварийные прерывания. Регулярное прерывание называют рабочим. Запрос на него выставляет внутреннее или внешнее тактирующее устройство, в простейшем случае таймер. Это позволяет организовать выполнение алгоритмов регуляторов строго в определенные моменты времени, разделенные периодом квантования Т. Алгоритмы контурных регуляторов всегда располагают в блоке обработки рабочего прерывания.
Блок фоновых программ содержит задачи, не требующие тактирования по времени с более низким приоритетом. Такими задачами могут быть асинхронная связь с пультом оператора, визуализация процессов и т.п. Задачи фона зацикливаются и не имеют окончания. Фон может также тактироваться по времени, выполняясь, например, на каждом 10-м такте квантования.
Все блоки связаны общими ячейками памяти, что позволяет максимально просто обмениваться данными без затрат времени на промежуточные операции передачи данных.
Рассмотрим пример распределения времени в микропроцессорной системе с одним рабочим прерывание и тактированием фона на каждом 4-том такте рабочего прерывания. Временная диаграмма для данного случая приведена на рис.2.3.
Рис.2.3. Временная диаграмма выполнения программы
В данном варианте обработка рабочего прерывания занимает около 50% такта синхронизации. В остальное время выполняется фоновая задача. Следует заметить, что фоновая задача не укладывается в один такт и занимает больше времени, однако это не приводит к сбоям при условии, что выполнение закончится к 5-му такту. Тактирование фона выполняется с помощью программного счетчика прерываний.
В отличие от фона программа обработки прерывания обязательно должна укладываться в такт синхронизации, причем с определенным запасом, требуемым для выполнения фона.
Сигнал запроса на прерывание (далее запрос) может быть сформирован либо аппаратным, либо программным способом. В первом случае его инициатором может быть как внешнее, так и внутреннее периферийное устройство. При возникновении запроса процессор проверяет, что прерывание, соответствующее данному запросу, разрешено и, если это так, переходит к процедуре обработки запроса. В противном случае запрос игнорируется.
Процедура обработки запроса состоит в следующем. Процессор сохраняет в стековую память текущее значение счетчика команд и записывает в него адрес ячейки вектора данного прерывания. Ячейки векторов прерываний расположены в таблице векторов, которая, обычно, находится в начале адресного пространства. Именно в эти ячейки программист должен записать адреса программ обработки соответствующих прерываний. Таким образом, в таблице векторов устанавливается соответствие между событием и программой его обработки. Мнемонически это может быть пояснено рис. 2.4.
Рис. 2.4. Схема выбора программы обработки прерывания
Процедура формирования таблицы должна быть выполнена на этапе инициализации до разрешения выполнения прерываний.
В программе обработки прерывания должны быть последовательно решены задачи:
Под состоянием процессора понимается набор значений его управляющих регистров и регистров общего назначения. Следует отметить, что в стек целесообразно сохранять только те регистры, которые будут использованы при обработке прерывания. Это позволяет сократить время выполнения программы и сэкономить стековую память.
В языках высокого уровня задачи сохранения и восстановления состояния решаются автоматически.
Если одновременно возникло более одного запроса на прерывание, первым обрабатывается запрос с более высоким приоритетом. Остальные запросы выстраиваются в очередь или игнорируются.
Иерархия приоритетов определяется как аппаратной, так и программной конфигурацией системы. Обычно, более высокий приоритет имеют аварийные запросы, например запрос при идентификации неисправности в преобразователе.
При выборе периода квантования микропроцессорной системы T управления необходимо руководствоваться следующими соображениями:
Первое требование диктуется особенностями синтеза импульсных систем регулирования. Невыполнение его может привести к возникновению автоколебательных процессов в системе и существенному ухудшению качества регулирования. Отметим, что к импульсным устройствам относится сам микропроцессор, преобразователи электрической энергии, некоторые типы датчиков.
Второе требование диктуется необходимостью правильного распределения времени в микропроцессорной системе (См пункт 2.4.). Это требование в многом определяет желаемое быстродействие процессора.
Как правило, лимитирующим элементом при выборе периода квантования является вентильный преобразователь электрической энергии. Для обеспечения синхронизации работы вентильного преобразователя и цифровой системы автоматического регулирования период квантования выбирают кратным периоду несущей частоты ШИМ в частотном электроприводе или кратным периоду пульсаций в приводе постоянного тока. В общем случае эта величина называется периодом дискретности преобразователя Tп. Такой выбор позволяет исключить эффекты биений сигналов на близких, но не равных частотах. Учитывая, что современные микроконтроллеры обладают достаточно высоким быстродействием, целесообразно принимать период квантования равным периоду дискретизации:
T = Tп. (2.1)
Это улучшает динамические показатели САР, с одной стороны, и облегчает разработку алгоритма управляющей программы, с другой.
Если полученное значение не может быть реализовано микроконтроллером, период квантования следует увеличить в целое число раз.
Период квантования датчиков Tд также должен быть учтен при выборе T. Оптимальным считается соотношение:
T = Tп= Tд. (2.2)
Существует несколько приемов формирование алгоритма программы для системы автоматического регулирования. Для систем подчиненного регулирование наиболее распространенными является способ написания программы от регуляторов старших контуров к младшим.
Для иллюстрации этого способа на рис. 2.5. приведем упрощенный алгоритм работы однозонной САР двигателя постоянного тока (ДПТ). Предполагается, что программа выполняется в пределах одного такта квантования.
Рис. 2.5. Алгоритм работы однозонной САР ДПТ
Важно отметить, что значения скорости и тока должны быть считаны в начале работы алгоритма с возможно меньшим интервалом. Это позволяет минимизировать влияние эффектов межконтурных запаздываний.
Данный алгоритм имеет как начало, так и окончание и выполняется при обработке синхронизирующего систему рабочего прерывания.
Аналогичным образом строятся алгоритмы более сложных систем. При наличии двух каналов управления, как, например, в двухзонной системе, следует использовать два прерывания. Одно прерывание будет обслуживать САР якоря, а второе САР возбуждения. Для более удобного распределения времени целесообразно, чтобы запросы на прерывания приходили в противофазе или со смещением.
В данном разделе рассмотрены наиболее распространенные алгоритмы, используемые при создании управляющих программ для систем автоматического регулирования. Тексты программ приведены на языке C.
Далее приняты следующие обозначения переменных:
x входная переменная;
y выходная переменная;
p промежуточная переменная;
К коэффициент усиления;
T период квантования;
Ti инерционная постоянная.
Алгоритм усилительного звена, записанный в виде решетчатой функции выглядит так:
y(nT)=K∙x(nT). (3.1)
Программа для усилительного звена записывается таким образом:
y=K*x;
Алгоритм сумматора, записанный в виде решетчатой функции выглядит так:
y(nT)=x1(nT)+ x2(nT). (3.2)
Программа для усилительного звена записывается таким образом:
y=x1+x2;
Интегратор нулевого порядка описывается таким образом:
y(nT)= y(nT-T)+x(nT) ∙T/ Ti. (3.4)
Программа данного интегратора следующая:
y=y+x*T/Ti;
Необходимо отметить, что в модуле инициализации должно быть присвоено начальное значение переменной интегратора:
y=0;
Для линейного интегратора алгоритм работы следующий:
y(nT)= y(nT-T)+(x(nT)+ x(nT-T)) ∙T/(2∙Ti). (3.5)
В этом случае требуется информация о текущем и предыдущем «вчерашнем» состоянии переменной x. Для этого вволится промежуточная переменная p, а программа записывается в две строки:
y=y+(x+p)*T/(2*Ti);
p=x;
В модуле инициализации промежуточная переменная также должна быть обнулена:
y=0;
p=0;
Алгоритм дифференцирующего звена:
y(nT)=(x(nT)- x(nT-T)) ∙Ti /T. (3.6)
Программа также требует введения промежуточной переменной и выглядит так:
y=(x-p)*Ti/T;
p=x;
В модуле инициализации промежуточная переменная обнуляется:
p=0;
В общем случае ПИ-регулятор может быть представлен так, как показано на рис. 3.1.
Рис.3.1. Общая структура ПИ-регулятора
В соответствии с данной структурной схемой в регуляторе можно выделить четыре элементарных звена: два сумматора, усилительное звено и интегратор. С учетом этого алгоритм работы регулятора может быть записан так:
y1(nT)=x1(nT) x2(nT);
y2(nT)=K∙ y1(nT).
y3(nT)= y3(nT-T)+y1(nT) ∙T/ Ti; (3.7)
y4(nT)= y2(nT)+ y3(nT);
В этом случае программа ПИ-регулятора выглядит так:
y1=x1-x2;
y2=K*y2;
y3=y3+y1*T/Ti;
y4=y2+y3;
Если требуется выполнить ограничение выхода регулятора в предложенный алгоритм, следует включать два звена ограничения. Первое ограничивает общий выход регулятора, а второе выход интегральной части. Если интегральная часть не ограничена возникают внутренние переходные процессы, нарушающие работоспособность регулятора. Структурная схема с учетом блоков ограничений выглядит так:
Рис.3.2. Общая структура ПИ-регулятора с ограничением
В этом случае программа модифицируется так:
y1=x1-x2;
y2=K*y2;
y3=y3+y1*T/Ti;
if (y3>yb)
y3=yb;
end;
if (y3<-yb)
y3=-yb;
end;
y4=y2+y3;
if (y4>yb)
y4=yb;
end;
if (y4<-yb)
y4=-yb;
end;
Уровень ограничения в программе назван переменной yb. Звено ограничения программируется с помощью двух операторов условия.
Простейший фильтр первого порядка может быть преобразован так, как показано на рис.3.3.
Рис.3.3. Фильтр первого порядка:
а исходная схема; б преобразованная схема; в импульсная схема
С учетом рис.3.3в, фильтр представляет собой интегратор охваченный единичной обратной связью. В этом случае программа, реализующая выглядит так:
e=x-y;
y=y+e*T/Ti;
Эти две строки можно объединить, записав выражение таким образом:
y=y+(x-y)*T/Ti;
Функциональные зависимости в микропроцессорных системах управления традиционно реализуются либо с помощью таблиц данных, либо с помощью механизма сплайновой интерполяции.
Первый способ используется в случае целочисленной арифметики. В этом варианте в память контроллера записывается массив данных, компонентами которого выступают значения функции, а индексом данного массива является ее аргумент.
Если используется арифметика с плавающей запятой, то применяется механизм сплайновой интерполяции. В простейшем варианте это просто отрезки прямых линий. Однако для точного воспроизведения исходной кривой требуется достаточно много узловых точек (точек, принадлежащих исходной кривой и соединенных отрезками). Для уменьшения объемов памяти используют сплайны более высокого порядка, например кубические. В этом случае область определения функции разбивается на несколько интервалов, на каждом из которых исходная функция заменяется полиномом следующего вида:
, (3.8)
где точка начала k-го интервала или узловая точка;
начальное значение выходной величины на k-м интервале;
- коэффициенты сплайна на k-м интервале.
Выражение (3.8) поясняет рис. 3.4.
Рис. 3.4. Формирование кривой с помощью сплайнов:
а исходная кривая; б аппроксимированная кривая
Как видно из рис. 3.4, расчетная кривая заменяется фрагментами кубических парабол на нескольких интервалах аппроксимации. Первой задачей при формировании сплайна является разбиение области определения расчетной кривой на интервалы. При этом следует руководствоваться тем соображением, что чем сильнее изменяется форма кривой на каком-либо интервале, тем большее количество узловых точек требуется для ее аппроксимации.
Когда известны все параметры сплайна, а именно: узловые точки , начальные значения и коэффициенты -, вычисление заданной зависимости ведется по следующему алгоритму:
Пример реализации алгоритма сплайновой аппроксимации в среде MATLAB:
for q=1:1:pieces,
if x>=breaks(q) & x<breaks(q+1),
y=coefs(q,1)*(x-breaks(q))^3...
+coefs(q,2)*(x-breaks(q))^2...
+coefs(q,3)*(x-breaks(q))+coefs(q,4);
end;
end;
В программе приняты обозначения:
pieces количество узловых точек;
breaks массив координат узловых точек;
coefs массив коэффициентов сплайна;
q переменная цикла;
x входная переменная;
y значение функции.
В случае использования кусочно-линейной аппроксимации в выражении (3.8) коэффициенты старших степеней равны нулю и программа несколько упрощается.
Здесь под циклическими алгоритмами понимаются алгоритмы формирования какой-либо циклически повторяющейся последовательности операций. Например, формирование тахограммы привода, отработка заданной циклограммы или процесс первого включения технологического объекта. Во всех перечисленных случаях должна последовательно происходить смена состояний объекта и программы, причем момент наступления нового состояния определяется некоторым логическим условием или выдержкой времени.
В случае использования метода программирования на основе языка релейно-контакторных схем эта задача решается достаточно просто, однако, это приводит к необходимости проверки всех условий на каждом такте квантования независимо от состояния программы. Сократить время выполнения можно введя дополнительную переменную, отвечающую за состояние программы. Назовем ее state.
В качестве примера рассмотрим простейшую задачу. Требуется по нажатию кнопки включить лампочку и отключить ее по прошествии 100 тактов. Программа может находиться в двух состояниях: ожидание включения (state=0), т.е. нажатия кнопки и ожидание завершения интервала отсчета таймера (state=1). Текст программы выглядит так:
if (state=0) /* Состояние ожидания включения */
{
if (button=1) /* проверка нажатия кнопки */
{
state=1; /* переход в режим счета */
Light=1; /* включение света */
}
end;
}
end;
if (state=1) /* Состояние счета */
{
counter=counter+1; /* Работа счетчика */
if (counter>99) /* Проверка счетчика */
{
counter=0; /* Сброс счетчика */
state=0; /* переход в режим ожидания */
Light=0; /* выключение света */
}
end;
}
end;
В более сложных алгоритмах выигрыш по времени работы программы может оказаться весьма существенным.
По оценкам специалистов время на отладку программы составляет более 70% процентов от общего времени разработки. Задачей отладки является не только выявление синтаксических и логических ошибок, но и оптимизация программы, исключение неиспользуемых ветвей и т.п.
В общем случае отладка включает в себя следующие этапы:
Нарушение указанного порядка, как правило, приводит к дополнительным временным и финансовым затратам.
Данный порядок проверки работоспособности строится на принципе «от частного к общему». Сначала выполняется проверка работоспособности отдельных алгоритмов, составляющих рабочую программу, затем связок этих алгоритмов между собой и т.д. Использование метода модульного программирования позволяет максимально упростить эти этапы.
Задачей отладки программы на математической модели является проверка правильности работы алгоритмов отдельных регуляторов и системы управления в целом. На этом этапе проверяется аппаратно независимая часть рабочей программы. Выполняться проверка может как на персональном компьютере (чаще) с использованием эмуляторов различной степени сложности, так и на разрабатываемой аппаратной части.
Отладка начинается с проверки работоспособности алгоритмов отдельных регуляторов. При этом рассчитывается ряд тестовых наборов, содержащих комбинации входных и выходных переменных из всего рабочего диапазона. Далее проверка выполняется с использованием фрагмента модели объекта управления. Так для регулятора тока якоря таким фрагментом является модель цепи якоря ДПТ.
Отладка систем подчиненного регулирования ведется от младших контуров к старшим с последовательным усложнением модели объекта.
Получивший широкое распространение для задач моделирования MATLAB может также быть использован и для задачи отладки управляющей программы. Для этого следует воспользоваться системой моделирования Simulink, а также освоить прием составления пользовательских блоков с помощью механизма S-функций.
Порядок подготовки отладочного комплекса следующий. Сначала создается модель объекта, которая должна отвечать необходимому уровню адекватности. Модель может содержать как непрерывные, так и импульсные элементы. Далее пишется программа управляющей части, причем может быть использован как язык системы MATLAB, так и язык C, что более удобно.
Разработанная программа встраивается в шаблон S-функций. Сама S-функция должна быть настроена как дискретная система с желаемым периодом квантования. Инструкции по формированию S-функций приводятся в справочной системе MATLAB. Пример модели системы, иллюстрирующий данную методику отладки приведен на рис. 4.1.
Рис.4.1. Модель Simulink для отладки алгоритма ПИ-регулятора
На рисунке представлен отладочный комплекс для проверки ПИ-регулятора, объектом управления для которого служит фильтр Wo(p). Также в системе присутствует полосовой фильтр Wf(p). Подсистема «Pi regulator» содержит блок S-функции, содержащей текст программы регулятора. Текст программы полностью соответствует тексту, приведенному в пункте 3.1.
Приведенная выше модель позволяет легко проверить работу программы в динамическом режиме для заданного набора управляющих и возмущающих воздействий с просмотром всех необходимых сигналов. Если требуется просматривать состояние промежуточных переменных, в S-функции целесообразно предусмотреть дополнительный выход для подключения осциллографа Scope.
Данный способ отладки удобен еще и тем, что является аппаратно независимым. В этом варианте все основные алгоритмы могут быть проверены даже при отсутствии микропроцессорного комплекта, что существенно ускоряет процесс разработки новых устройств.
Задачей отладки рабочей программы на физической модели является проверка правильности выбора параметров датчиков (коэффициентов передачи, времен преобразования), правильности работы драйверов периферийных устройств, согласованности временных интервалов, выявление особенностей поведения системы в условиях помех и шумов.
В простейшем случае модель объекта собирается из наборов кнопок, переключателей, потенциометров, светодиодов и т.п. На этом этапе проверяются, прежде всего, драйверы управляющей программы.
Более сложная проверка выполняется с применением имитатора объекта управления. Для проверки, например, алгоритмов автоматики логического контроллера удобно использовать второй логический контроллер, несущий в себе программуэмулятор объекта управления. Очевидно, что чем больше особенностей объекта учтено в программеэмуляторе, тем качественнее может быть выполнена отладка.
Окончательная отладка рабочей программы выполняется собственно на объекте. Ее задачей является проверка и параметрирование программы с учетом реальных физических особенностей объекта управления. Выполняется контроль правильности подключения микропроцессорной системы. По возможности первые включения производят без подачи напряжения на силовые элементы.
Далее выполняется проверка основных режимов работы системы. В обязательном порядке имитируются аварийные ситуации с макимально возможным приближением к реальным условиям.
Привлечение обслуживающего объект персонала позволяет скорректировать процедуры человеко-машинного интерфейса, учесть недокументированные особенности производства.
ПРИЛОЖЕНИЕ 1
Рабочая программа состоит из трех функций: функции формирования констант, функции инициализации и функции расчета регуляторов. Внимание! MATLAB различает строчные и прописные буквы в именах переменных.
/* Процедура формирования констант */
reg_const()
{
Kw=2; /* коэффициент усиления регулятора скорости */
Ki=3; /* коэффициент усиления регулятора тока */
Ti=4; /* постоянная времени регулятора тока */
}
/* Процедура инициализации регуляторов */
reg_init()
{
/* Инициализация глобальных переменных */
w=0; /* скорость двигателя */
i=0; /* ток якоря */
u=0; /* напряжение */
/* Инициализация переменных */
wz=0; /* заданная скорость */
ew=0; /* ошибка по скорости */
iz=0; /* заданный ток */
ei=0; /* ошибка по току */
urt=0; /* выход регулятора тока */
urt_i=0; /* выход РТ интегральная часть */
urt_p=0; /* выход РТ пропорциональная часть */
}
/*---------------------------------------------------------------*/
/* Процедура выполнения регуляторов */
reg_program()
{
/*---------------------------------------------------------------*/
/* Внешняя функция чтения датчиков */
read_encoders();
/*---------------------------------------------------------------*/
/* П-регулятор скорости */
ew=wz-w;
iz=Kw*ew;
if (iz>2)
iz=2;
end;
if (iz<-2)
iz=-2;
end;
/*---------------------------------------------------------------*/
/* ПИ-регулятор тока */
ei=iz-i;
urt_p=Krt*ei;
urt_i=urt_i+ei/Trt;
if (urt_i>1)
urt_i =1;
end;
if (urt_i<-1)
urt_i=-1;
end;
urt=urt_i+urt_p
if (urt>1)
urt =1;
end;
if (urt<-1)
urt=-1;
end;
/*---------------------------------------------------------------*/
/* Формирование управления на СИФУ */
/*---------------------------------------------------------------*/
u=urt;
}
ОГЛАВЛЕНИЕ
[1] ВВЕДЕНИЕ [2] ОБЩИЕ ПОЛОЖЕНИЯ. ОСОБЕННОСТИ РАЗРАБОТКИ УПРАВЛЯЮЩИХ ПРОГРАММ [3] ПРИНЦИПЫ РАЗРАБОТКИ ПРОГРАММ РЕАЛЬНОГО ВРЕМЕНИ [4] Этапы разработки управляющей программы реального времени [5] Комплекс для разработки программного обеспечения [6] Типовая структура управляющей программы [7] Распределение времени в микропроцессорной системе управления [8] Обработка прерываний [9] Выбор периода квантования [10] Типовая структура программы САР [11] ПРОГРАММИРОВАНИЕ ТИПОВЫХ АЛГОРИТМОВ [12] Программирование типовых звеньев [13] Усилительное звено [14] Сумматор [15] Интегратор [16] Дифференцирующее звено [17] ПИ-регулятор [18] Фильтр первого порядка [19] Программирование нелинейных элементов [20] Программирование циклических алгоритмов [21] ВОПРОСЫ ОТЛАДКИ УПРАВЛЯЮЩИХ ПРОГРАММ [22] Общие замечания [23] Отладка программы с помощью математической модели объекта управления [24] Отладочный комплекс для пакета MATLAB [25] Отладка программы на физической модели объекта [26] Окончательная отладка рабочей программы [27] БИБЛИОГРАФИЧЕСКИЙ СПИСОК [28] Пример рабочей программы. Упрощенная САР ДПТ |
ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ СИСТЕМ УПРАВЛЕНИЯ
Составители Костылев Алексей Васильевич
Степанюк Дмитрий Павлович
Редактор И.В. Коршунова
Компьютерная верстка А.В. Костылева
ИД № 06263 от 12.11.2001 г.
Подписано в печать |
Формат |
60х40 1/16 |
|
Бумага писчая |
Плоская печать |
Усл.печ.л. |
|
Уч. изд.л. |
Тираж |
Заказ |
Цена “С” |
Редакционно-издательский отдел ГОУ ВПО УГТУ-УПИ
620002, Екатеринбург, ул. Мира, 19