Болл С.Р. Аналоговые интерфейсы микроконтроллеров (2007) (1264220), страница 33
Текст из файла (страница 33)
Например, в формате с плавающей точкой, дополнения до 2 целого числа и т. и. В таком представлении производная — это просто разность предыдущей и следующей погрешностей, измеряемых со скоростью изменения погрешности. Технически, производнан — это изменение, которое происходит за какое-то время, но поскольку система дискретизирует данные с определенным интервалом, производная может быть аппроксимирована разницей двух соседних дискретов. Интеграл — сумма предшествующих определенному моменту погрешностей. 174 ° Глава 5. Методы управлении 5.11.2.
Функция запрета первоначального действия Добавление функции запрета первоначального деиствия (оптов!пдир) к интегральному слагаемому будет выглядеть следующим образом: кеад гприг гхош вепвот, ваче ав ситтепгча1ие Еггог = Татдегча1ие - сиггепгча1ие Оегьчатгче = еггог — Ртеч1оиввгготча1ие 1пгедга1 = Хпгедга1 + етгот и тпгедта1 > иах1шшп1пгедга1ча1ие, гьеп 1птедга1 = Иах1шша1птедга1Ча1ие. Соптго1Ча1ие = к1*1пгедга1 + к2*реггчасгче + кз"еггог Ртечьоиветтогча1ие = етгогыог иве иПЬ пехг вашр1е) Оигриг сопгго1ча1ие то сопсго1 ьагдвате Ое11пгт1оп: иахгшиш1пгедга1ча1ие = шах1шиш ча1ие ог гпгедта1 геши; гергевепгв 100$ Альтернативный метод, запрещающий интегральное слагаемое, когда выходной сигнал находится в пределах заданного диапазона: Ееад варит гхош вепвог, паче ав СиттепГЧа1ие.
еггог = тагдегча1ие — сиггепгча1ие Оетгчатгче = еггог — РгечгоивЕгтотча1ие П аЬво1ите ча1ие ог Еггог < 1птедга1аапд Хпгедга1 = 1пгедга1 + еггог Е1ве 1пседга1 = О. Соптго1Ча1ие = К1'1птедга1 + К2*реггчатгче + КЗ*Еггог РгечгоивегтотЧа1ие = Егтотыог иве в1ГЬ пехт вашр1е! оитрит Сопсто1Ча1ие Го соптго1 Ьагдваге Оегьпгт1оп: 1пгедга1вапд = гье тапде ог еггог ча1иев Рог ищсь гье 1пгедга1 са1си1аггоп гв епаыед, логе гьаг 1пгедга1вапд сап Ье а сопвгапг ог а ггасг1оп о1 гье вегрогпс.
5.11.3.Фильтрация входногошума Часто встречаются ситуации, особенно в случаях некорректного заземления оборудования, когда сигнал датчика зашумлен. В таких случаях нежелательно использовать каждый отсчет зашумленного сигнала, поскольку 5. 11. Примеры программирования ПИД-сметаем ° 175 вычисления могут сопровождаться значительны ми ошибками управления. Для выделения из смеси сигнал-шум полезного сигнала следует проводить усреднение из нескольких дискретов.
В приведенном ниже фрагменте программы каждый следующий отсчет вычисляется как среднее из восьми вхолных дискретных величин. Заметим, что частота дискретизации в таком случае падает в 8 раз. Для формирования выходного сигнала 10 Гц теперь понадобится дискретизировать входной сигнал с частотой 80 Гц. Кеад гприс ггои вепвог, адд го Ситгепгиа1ие. 1псгеаепг Еапр1еСоипгет 11 дывр1есоипгег = О, заар1еСоипгег = О Сшгепгиа1ие = Ситтептда1ие/8 еггог = тагдесуа1ие — сиггепсча1ие Регдчастче = егтот — Ргевьоиветтотуа1ие 1пгедга1 = 1птедга1 + Еггог сопгто1ча1ие = к1*1пседга1 а к2*реггиас1ие + кз*егтог РгечтоивЕггогиа1ие = Еггог сигрш сопсто1уа1ие го сопсто1 патдиате сштепгча1ие = О (гевег со сего во пехс ассиии1аг1оп сап вгагс) 1 Для упрощения кода, можно и не выполнять деление на 8.
Вместо этого можно оперировать суммой, что позволит избежать деления. Если частное не является двоичной величиной, то отказ от процедуры деления сэкономит значительное время в микроконтроллерной системе. Естественно, тогда все остальные слагаемые также должны быть больше в 8 раз, но это может привести к переполнению и надо предпринять меры, чтобы его избежать.
5.11.4. Предотвращения выхода управляющего параметра за допустимые пределы Следующий фрагмент программы предотвращает выход управляющего параметра (например, мощности) от превышения возможного максимума (скажем, чтобы не допустить сгорания нагревателя). Неад тприт 1гоа вепвот, паче ав СштепГЧа1ие. Еттот = Татдесиа1ие — Сиггептуа1ие Оег1иаг1ие = еттот — Ргечгоиветготиа1ие 1пгедга1 = 1пседга1 + еггог веи сопсго1ча1ие = «1*тпседга1 + «2*рег1иас1ие + «з*егтог 11 пеи Сопсго1Ча1ие > иахгпипсопсго1уа1ие, 1тб ° Глава 5.
Методы управления Соптго1Ча1ие = Мах1пипСоптго1уа1ие Яет МахгвивРоиегЕхсеедед 1!ад. Ргеи оияЕттотуа1ие = Еггот ситрит соптго1ча1ие то соптго1 ьагдиаге В данном фрагменте программы, когда определяется превышение максимальной мощности, вводится новая величина Сон[го!Ча!це, равная максимальной величине, и устанавливается флаг (Мах[шапРогчегЕхсеедет[), показывающий, что произошло превышение максимальной величины.
Обработка подпрограммы, включаемой по этому флагу сообщает оператору о необходимости выполнении определенных действий, например о необходимости отключения системы. 5.11.5. Предотвращение выхода управляющего параметра за пределы средней величины В некоторых случаях максимально достижимая величина на выходе системы управления не определена явно, а может быть накоплена за некоторое время. Например, нагреватель может и не сгореть при подаче предельного тока в течение нескольких интервалов дискретизации, но в течение секунды работы на предельной мощности, например, выйдет из строя. В следующий фрагмент программы добавлен массив АчяргчгАпау, содержащий 10 элементов. Каждый элемент массива — величина выходного сигнала в определенный момент дискретизации; сумма элементов, деленная на 1О, даст среднюю мощность за 10 отсчетов.
ееад !прис ггов яепяог, паче ая сиггептча1ие. еггог = тагдетча1ие — Сиггептча1ие Оеггчат!ие = еггог — РгечгоияЕггогЧа1ие 1птедга1 = 1птедга1 + егтог соптго1ча1ие = к1*1птедга1 > к2*оег!Чаг!ие > кз*еггог Ачегадероиег = яив о[ иа1иея гп Ачдяитатгау [О! тьгоидь Аидрлгхггау [9! 1Г АчегадеРоиег > МахгвивА11оиашероиег*10, зет махгвивроиегкхсеедед 1!ад. Соптго1Ча1ие = МахгвивА11оиашероиег — Ачетадерояег > Ачдрягхггау [01 1Г Соптго1Ча1ие < О, Соптго1Ча1ие = 0 [Тье Го11ои1пд д1ясагдя тле о1деят иа1ие тт Ачдгигхггау [О! апд вахея гоов Гог тье пеиеят[ Рог Ачдг>ххггау [О тьгоидл 81, Аиду>хаггау [п[ Аидр, Атгау [и + 11 5.
П. Прил|еры нрограммырованнв ПИД-систем ° !77 Аидригьггау191 = Соппго1Уа1ие Ргеигоиазггогиа1ие = Еггог Оиприп Соппго1Уа1ие го соппго1 Ьагвнаге Строкой Соппго1уа1ие = Иах1нинА11омап1ероеег — Ауегасероеег е Аудрвгьггау 101 производится вычисление Сои!го!Ча1це как величины, перемещающей среднее значение на! О отсчетов ниже максимальной величины после следующего интервала дискретизации. АуйргнгАггау (О] используется для того, чтобы старший дискрет в массиве был заменен на Сои!го!Ча!це. Если результат получается отрицательным, Сон!го!Ча!це устанавливается в О. Заметим, что в реальной системе, нулевая величина не обязательно создает нулевой выходной уровень.
В этот фрагменте программы производится сдвиг всех элементов массива по кругу для предоставления места следующей величине; более быстрый метод (но не самый легкий для понимания) — использовать указатель, который последовательно пробегает элементы массива от конца в начало и позволяет новой величине заменить собой самый старый элемент массива. 5.11.6. Реализация данных примеров Каждый из данных примеров иллюстрирует один из основных принципов. Вы можете при необходимости комбинировать эти методы. В данных примерах не приведена инициализация. Обычно инициализация необходима при старте программы. Эти примеры базируются на предположении, что входной и выходной сигналы периодически обновляются в заданном режиме. Поэтому выполнять данные подпрограммы можно с помо1цью прерываний. Исполнение подобных примеров с помощью микроконтроллеров часто труднее, чем на основе микропроцессорных систем.
Микроконтроллеры, особенно 8-битные, часто не снабжены функциями обработки отрицательных чисел, умножения и деления. Затруднения могут возникнуть при использовании двоичных чисел. Например, при усреднении входных величин для фильтрации шума следует всегла фильтровать числа типа 2, 4 или 8, то есть кратные 2. Это позволит заменить операцию деления простой операцией сдвига. При использовании микроконтроллера, не поддерживающего вычитания дополнительных чисел достаточно хорошо, вы можете преобразовать каждую переменную в 2-байтную (или 2-словную) величину. Причем, первый байт — беззнаковая величина переменной.
Второй байт — флаг, показывающий, положительная величина или отрицательная. ПО в зависимости от флага будет либо прибавлять, либо отнимать основной байт. 178 ° Глава 5. Методы увравлеяоя 5.12. В рабочую тетрадь разработчика ° Точность системы во многом зависит от того, что именно измеряет датчик. Терморезистор, измеряющий температуру нагревателя, а не объекта, не сможет обеспечить необходимую точность управления.
Особенно это касается систем ПИД-управления, которые базируются на параметрах управления, зависящих от входного сигнала. Если вы измеряете не то, высокоточный датчик даст ошибку в десятки раз большую, чем обычный. ° Временные задержки могут быть обусловлены не только управляемым объектом, но также и датчиком.
Терморезистор с длительным временем установления может создать задержку, равную задержке всей остальной части системы. ° Тщательно подберите процессор для системы. Бывает легко смоделировать математическую модель системы управления на ПК с 2- ГГц 64-битным процессором. Намного труднее окажется внедрение молели на 8-битном процессоре с несколькими килобайтами адресного пространства. Например, если в алгоритме применяются операции с комплексными числами, удостоверьтесь, что ЦПУ микропроцессорной системы сможет их выполнить.
В противном случае, придется переписывать таблицу ПЗУ. ° Если в приложении требуется постоянно обращаться к таблицам в памяти, удостоверьтесь, что зарезервирована достаточная область памяти. Совсем немного 256-байтных таблиц понадобится, чтобы полностью загрузить всю доступную память большинства небольших микроконтроллеров. ° Составьте план анализа и отладки окончательного варианта системы, предусмотрите необходимые аппаратные и программные дополнения для проведения настройки. Соленоиды, реле и другие исполнительные устройства глдвд 6 6.1.