реклама

Начало - История на ремонта
 Пропорционален интегрален диференциален PID контролер в Lego Mindstorms Robotics. Пропорционален контролер. Международни състезания за роботи - Правила - Примери за роботи - Робот с траектория, базиран на LEGO EV3 Пропорционална p програма

Роботиката е нова интересна посока, която очевидно ще се развива допълнително в рамките на училищни курсовекомпютърни науки и технологии. Бумът на роботиката до голяма степен се дължи на факта, че ни позволява да отговорим на въпроса: „Защо всъщност се учим да програмираме?“ Освен това в курса по роботика можете да се запознаете с елементарните понятия на теорията.

автоматично управление

Тази страница представя симулатори за програмиране и Arduino платки, разработени от автора. Те могат да помогнат в случаите, когато по някаква причина не е възможно да се използва реален хардуер.Симулаторите използват HTML5 възможности, така че ще работят само в модерни браузъри(най-добре да се използва Google Chrome).

или Mozilla Firefox

Новини
вече и в канала на Telegram 27 ноември 2015 гПистата „ембрион“ е добавена към симулаторите (

М.В. Лазарев
, Орехово-Зуево).
Добавени са нови симулатори - LEGO роботи с два, три, четири сензора за светлина.

Език за управление на робота

За управление на роботи в симулатори се използва прост език за програмиране, който получи работното име SiRoP (Лесно програмиране на роботи).

Управление на робота със сензор за светлина

Светлинният сензор позволява на робота да се движи по повърхността на масата, например да се движи по границата между белите и черните зони (по ръба на черната линия). Фотодиод осветява повърхността, фотодетектор „улавя” отразените лъчи и измерва интензитета им.

Най-популярната задача от този тип е движението по линия. Използвайки симулатора, можете да изучавате различни закони за управление - релейно, пропорционално и дори PID управление (пропорционално-интегрално-производно).

Примери за програми за робот със сензор за светлина

Докато 1 (ако сензор > 128 (мотор = 100 двигател = 0) в противен случай (мотор = 0 двигател = 100) изчакайте (10))

KP = 0,2 докато 1 (u = kP*(сензор-128) двигател = 50 + u двигател = 50 - u изчакване(20) )

Основен ( докато 1 ( докато сензор > 128 ( двигател = 100 двигател = 100 изчакайте (10) ) назад () завъртете () ) ) назад ( двигател = -100 двигател = -100 изчакайте (260) ) завъртете ( двигател = -50 двигател = 50 изчакване (50) )

Управление на робота с два светлинни сензора

Два светлинни сензора позволяват на робота да се ориентира по-добре и да кара по тънка линия. Изнасят се малко напред и се разпръскват на страни. Както при проблеми с един сензор, този симулатор може да се използва за изучаване на различни закони за управление.

Примери за програми за робот с три сензора за светлина

Управление на робота с четири светлинни сензора

Четири светлинни сензора позволяват на робота да открива по-добре остри завои. За фина настройка се използват вътрешни сензори, за тях се използва пропорционално управление. две външен сензорносени леко напред и разтворени на страни. Използват се при остър завой. Усилването за управление въз основа на показанията на сензорите на външната двойка е избрано по-голямо, отколкото за вътрешната двойка (виж. Л.Ю. Овсяницкая и др., Алгоритми и програми за движение на робота Lego Mindstorms EV3 по линията, М.: “Перо”, 2015).

Примери за програми за робот с четири сензора за светлина

Докато 1 ( d0 = сензор > 128 d1 = сензор > 128 d2 = сензор > 128 d3 = сензор > 128 ако d1 & !d2 ( двигател = 100 двигател = 0 ) ако! d1 & d2 ( двигател = 0 двигател = 100 ) ако d1 == d2 (двигател = 100 двигател = 100) if d0 & !d3 (двигател = 30 двигател = 0) if!d0 & d3 (двигател = 0 двигател = 30) изчакай(10) )

K1 = 0,2 k2 = 0,4 докато 1 ( u1 = сензор - сензор u2 = сензор - сензор мотор = 50+k1*u1+k2*u2 двигател = 50-k1*u1-k2*u2 изчакване(10) )

Управление на робот със сензор за разстояние (сонар)

Сензорът за разстояние (сонар) ви позволява да определите разстоянието до най-близкото препятствие, докато роботът се движи. Той излъчва ултразвуков сигнал и приема отразения сигнал. Колкото по-дълго е времето между излъчения и приетия сигнал, толкова по-голямо е разстоянието.

Използвайки сензор за разстояние, роботът може да бъде програмиран да навигира автоматично в лабиринт с известна форма, но неизвестен размер.

Този проблем е класически, идеологически прост, той може да бъде решаван много пъти и всеки път ще откривате нещо ново.

Има много подходи за решаване на проблема със следния ред. Изборът на един от тях зависи от специфичния дизайн на робота, от броя на сензорите, разположението им спрямо колелата и един към друг.

В нашия пример ще бъдат анализирани три примера за робот въз основа на основния образователен модел на Robot Educator.

Като начало сглобяваме основния модел на образователния робот Robot Educator, за това можете да използвате инструкциите в софтуер MINDSTORMS EV3.

Също така, например, ще ни трябват сензори за светъл цвят EV3. Тези сензори за светлина, като никой друг, са най-подходящи за нашата задача; когато работим с тях, не трябва да се тревожим за интензивността на околната светлина. За този сензор в програмите ще използваме режим на отразена светлина, в който се оценява количеството отразена светлина от червената подсветка на сензора. Границите на показанията на сензора са 0 - 100 единици, съответно за „без отражение“ и „пълно отражение“.

Като пример ще анализираме 3 примера на програми за движение по черна траектория, изобразена на плосък светъл фон:

· Един сензор, с P регулатор.

· Един сензор, с PC регулатор.

· Два сензора.

Пример 1. Един сензор с P регулатор.

Дизайн

Сензорът за светлина е монтиран на греда, удобно разположена на модела.


Алгоритъм

Работата на алгоритъма се основава на факта, че в зависимост от степента на припокриване на лъча на осветяване на сензора с черна линия, показанията, върнати от сензора, варират градиентно. Роботът поддържа позицията на светлинния сензор на границата на черната линия. Чрез преобразуване на входните данни от сензора за светлина, системата за управление генерира стойност за скоростта на въртене на робота.


Тъй като при реална траектория сензорът генерира стойности в целия си работен диапазон (0-100), 50 е избрана като стойност, към която роботът се стреми, в този случай се генерират стойностите, предавани на ротационните функции диапазон -50 - 50, но тези стойности не са достатъчни за рязък завой на траекторията. Следователно диапазонът трябва да се разшири един път и половина до -75 - 75.

В резултат на това в програмата функцията на калкулатора е прост пропорционален контролер. чиято функция ( (а-50)*1,5 ) в работния диапазон на светлинния сензор генерира стойности на въртене в съответствие с графиката:

Пример за това как работи алгоритъмът

Пример 2. Един датчик, с PK регулатор.

Този пример се основава на същата конструкция.

Вероятно сте забелязали, че в предишния пример роботът се люлее прекалено, което не му позволява да ускори достатъчно. Сега ще се опитаме да подобрим малко тази ситуация.

Към нашия пропорционален контролер добавяме и прост кубичен контролер, който ще добави малко огъване към функцията на контролера. Това ще намали люлеенето на робота в близост до желаната граница на траекторията, както и ще направи по-силни резки, когато е далеч от нея.

Пропорционален контролер е устройство, което упражнява управляващо действие u(t) върху обект пропорционално на неговото линейно отклонение e(t) от дадено състояние x0(t);

e(t)=x0(t)-x(t), където x(t) е състоянието в даден момент;

u(t)=ke(t), където k е коефициентът на усилване.
Тоест, колкото повече роботът се отклонява от зададения курс, толкова по-активно трябва да работят двигателите, за да го изравнят.

Движение на линия с един светлинен сензор с помощта на P-контролер

Движението по границата на черно и бяло също може да бъде изградено върху P-регулатора. Въпреки че външно проблемът изглежда разрешим само с помощта на релеен контролер, тъй като системата има само две видими за човешкото око състояния: черно и бяло. Но роботът вижда всичко по различен начин, за него няма рязка граница между тези цветове. Можем да кажем, че е късоглед и вижда градиентен преход от нюанси на сивото.

Това ще помогне за изграждането на P-регулатор.
Като дефинираме работното състояние като показания от светлинния сензор, ще се научим да упражняваме пропорционален управляващ ефект върху двигателите съгласно следния закон:
e=s1-сив, където s1 е текущите показания на сензора, а сивото е зададената стойност.

Коефициент k (равен на в този пример 2) трябва да са достатъчно малки (от 1 до 3). Такъв регулатор работи ефективно само при малки ъгли на отклонение, така че роботът трябва да бъде поставен в посоката на движение, така че сензорът да е от лявата страна на черната линия. Лесно се забелязва, че движението по линията на P-регулатора е плавно. а в някои области на работа се движи почти право или точно следвайки завоите на линията.

Калибриране на сензора

Нека да разгледаме числото 48, използвано във формулата. Това е средноаритметичната стойност на показанията на сензора за светлина върху черно и бяло, например (40+56)/2=48. Въпреки това показанията на сензорите често се променят поради различни причини: различна повърхност, промяна на цялостната осветеност в помещението, лека модификация на дизайна и др. Затова ще калибрираме робота ръчно, като определим показанията на сензора за светлина върху бяло и черно.

Движение по линия с два светлинни сензора с помощта на P-контролер
Доста трудно е да навигирате правилно на кръстовище с един светлинен сензор. Ако искате да направите това с достатъчно висока скорост, имате нужда от поне два сензора, разположени на разстояние от две ширини на линията (или по-широко).
При шофиране са възможни четири състояния на сензора:

  • двете на бяло - движение направо;
  • ляво (s1) не на черно, дясно (s2) на бяло - движение наляво;
  • ляво върху бяло, дясно върху черно - движение надясно;
  • и двете на черно - право напред.
това. при равни показания на сензора (и двата бели или и двата черни), роботът кара направо. Преди да стартираме робота, ще калибрираме автоматично двата сензора. Тогава алгоритъмът за движение по линия с P-регулатор ще изглежда така:

Коефициентът k може да варира в доста широк диапазон (от 1 до 20 или повече) в зависимост от кривината на линията, маневреността на робота и разликата между черно и бяло на полето.
Важно условие. Автоматичното калибриране трябва да се извърши върху едноцветна повърхност и за предпочитане при осветеността, която ще заема най-голямата част от пътя. Например, ако роботът се движи по черна линия върху бяло поле, тогава той трябва да бъде калибриран върху бяло поле. Тези. Позицията на робота в началото трябва да бъде следната:


И още една забележка. Има сензори, чиито показания се различават с 10-20%. Препоръчително е да не ги свързвате с регулатор с голям коефициент, тъй като при рязка промяна в общата осветеност, дори на равномерно бяло поле, отклоненията могат да се окажат различни, което ще доведе до неочаквани последици. Подробности Автор: Коновалов Игор     Пропорционалният контролер е подобрение. Основният недостатък на релето е, че не се интересува как текущите стойности се различават от нормалната стойност на сензора. Той има само две състояния - или опитайте да увеличите стойностите на сензора с определено постоянно число, ако те са по-малки от нормалната стойност, или го увеличете. Поради това възникват трептения с постоянна амплитуда, което е много неефективно.
    Много по-логично е да се определи колко „далеч“ са текущите показания от нормалното и да се промени амплитудата в зависимост от това. За да стане по-ясно, нека разгледаме един пример. Примерът, както в предишната статия, е същият: робот от Lego Mindstorms EV3 се движи по черна линия, използвайки един цветен сензор в светъл режим.

Роботът се опитва да се движи по границата между бяло и черно и там сензорът показва приблизително 50% от осветеността. И колкото по-далеч е от нормалното положение, толкова повече усилия полага роботът, за да се върне на 50%.
    За да напишем програма, ще използваме термините "грешка" и "контролно действие". Грешка е разликата между текущото показание на сензора и нормалното. В нашия случай, ако роботът сега вижда 20% от осветеността, тогава грешката е 20-50 = -30%. Знакът за грешка показва в коя посока трябва да се обърне роботът, за да се отърве от грешката. Сега трябва да кажем на двигателите в каква посока да завъртят робота, с каква скорост и колко рязко. Необходимо е да се упражни контролен ефект върху двигателите, което означава колко бързо трябва да се върне в нормалното си положение. Контролното действие (UP) се изчислява като грешката (грешката), умножена по коефициента на пропорционалност (k). Този коефициент се използва за подобряване или намаляване на влиянието на грешката върху управляващото действие. Управляващото действие се предоставя на управление, където се задава средната скорост на робота.
    Как да коригирате коефициента на пропорционалност? Изберете стойностите експериментално; за движение по траекторията може да бъде например от 0,2 до 1,5, в зависимост от скоростта и конструкцията на робота. Ако коефициентът е твърде голям, тогава роботът ще се люлее много; ако е малък, ще кара плавно, но в даден момент ще се изплъзне при завиване поради недостатъчен контрол. Нека напишем две версии на програмата - с променливи (за тези, които вече са ги изучавали) и без.


    Но този регулатор може да бъде подсилен и чрез въвеждане на пропорционален и интегрален компонент, описанието ще бъде в следващите статии. До скоро!

Пропорционален контролер

Описание

При автоматичното управление управляващото действие u(t) обикновено е функция на динамичната грешка - отклонението e(t) на управляваната променлива x(t) от нейната зададена стойност x0(t):

e(t) = x0(t) – x(t).

Това е принципът на Ползунов-Ват за регулиране чрез отклонение или принципът на обратната връзка. Математическият израз на функционалната зависимост на желаното управляващо действие u0(t) от величините, измерени от регулатора, се нарича закон или управляващ алгоритъм, разгледан по-горе.

Пропорционалният регулатор е устройство, което упражнява управляващ ефект върху даден обект пропорционално на неговото отклонение от дадено състояние:

Тук k е печалбата на контролера.

Даденото състояние x0 обикновено се нарича задание, а отклонението от него e се нарича остатък. По-долу за категоричност ще означаваме остатъка със съкращението err (от английска дума"грешка" - грешка).

Управление на двигателя

Един опитен воин няма да размахва меч, както прави робот на релеен контролер. Трябва да измислим алгоритъм, който да държи двигателя, държащ меча, в строго фиксирана позиция (фиг. 7.1). P-регулаторът ще помогне с това.

Нека e ​​1 - показанията на сензора за скорост 1 на мотор A - да бъде регулируема променлива. Настройката x0 = 45 и остатъчното e = 45 – e 1. Тогава управляващото действие върху двигателя се дава по формулата

u = k ∙ (45 – e 1).

Тук k е коефициентът на усилване, например 5, който ще подобри реакцията на двигателя дори при малки отклонения от зададената точка.

1 Не бъркайте математическото обозначение на остатъка e (от грешка) с показанията на енкодера e 1 (от енкодер), предварително дефинирана променлива на средата на Robolab.

Ако има отклонение в положителна странакъм двигателя ще бъде приложен отрицателен контролен вход и обратно. Това управление може да се приложи към двигателя в цикъл с кратко забавяне от 1-10 ms за облекчаване на контролера (фиг. 7.8).

ориз. 7.8. Алгоритъм за управление на двигателя с помощта на пропорционален контролер.

Ако коефициентът на усилване се увеличи от 5 на 100, нашият пропорционален контролер ще започне да действа като реле, причинявайки силни колебания поради ефекта на превишаване.

Езикът RobotC няма такава удобна нотация за четене на енкодер, както в Robolab, така че програмата изглежда малко по-дълга:

int k=5, u; nMotorEncoder=0; докато (вярно)

u=k*(45-nMotorEncoder); двигател=u;

Освен това, за да нанесете „удар с меч“, достатъчно е да имате променлива вместо числото 45 и да промените стойността й отвън, например от паралелна задача. Това е разгледано в раздела за роботи барабанисти в глава 8.

Сега нека изградим регулатор, който контролира не само статичното положение на двигателя, но и скоростта на неговото движение. Следвайки логиката на алгоритъма, заданието, което до момента е константа и не се е променяло, трябва да започне да се движи към увеличаване или намаляване. Подчинявайки се на регулатора, двигателят неизбежно ще го последва. Най-простият инструмент за непрекъснато увеличаване на зададената стойност е таймер.

Контролерът NXT има четири вградени таймера, всеки от които може да измерва времето в десети, стотни и хилядни от секундата. Нека овладеем първия таймер, който изпълнява 10 „съвета“ в секунда.

ков". В Robolab той е обозначен като T1 или Timer100ms1, а в RobotC е timer100.

Нека направим ъгъла на отклонение на двигателя алфа, посочен в предишния пример на 45, зависим от показанията на таймера с ускоряващ коефициент k 2:

алфа = k2 ∙ T1.

Контролното действие ще остане същото с коефициент на усилване k 1:

u = k 1 ∙ (алфа – e 1).

Накратко, в програмата на езика Robolab ще приложим контролното действие директно към двигателя, като предварително сме инициалирали таймера

ориз. 7.9. Контролът на скоростта на двигателя е един оборот в секунда.

Коефициентът k 2 = 36 определя, че за една секунда алфа стойността нараства до 360, което съответства на един пълен оборот на двигателя:

int k1=2, k2=36, u, алфа; nMotorEncoder=0; ClearTimer (T1); докато (вярно)

алфа=таймер100*k2; u=k1*(алфа-nMotorEncoder); двигател=u;

Използвайки целочислено деление, както е прието в C (и Robolab) за променливи от целочислен тип, е възможно да се постигнат дискретни промени в ъглите, т.е. увеличава го веднъж в секунда:

алфа = T 1 / 10 ∙ k 2.

С коефициент k 2 = 60 движението на лъча ще съответства на движението на секундната стрелка на циферблата на часовника. Но това не е достатъчно

забележим. За по-голяма яснота можете да зададете k2 = 30, тогава стрелката ще направи пълен оборот в 12 „отметки“ от 30 градуса всяка. Бъдете внимателни с последователността на операциите за целочислено деление и умножение; промяната на техния ред или „намаляването“ със сигурност ще промени резултата (фиг. 7.10).

ориз. 7.10. Ускорена имитация на движението на стрелката на часовника.

И накрая, пример за математически барабанист. Вместо постоянно да се движи напред, иглата ще осцилира напред-назад под контрола на P-регулатора. За това ще помогне операцията деление с остатък, която в C се обозначава със знака %. Остатъкът от неотрицателно цяло число, разделен на 2, винаги ще бъде 0 или 1:

алфа = T 1% 2 ∙ k 2.

Увеличавайки отклонението с k 2 = 15 пъти, получаваме осцилираща зададена точка алфа, която ще принуди контролера да движи двигателя 5 пъти в секунда, или 0º, или 15 градуса. Промените в програмата са незначителни. Нека да разгледаме пример в RobotC:

int k1=3, k2=15, u, алфа; nMotorEncoder=0; ClearTimer (T1); докато (вярно)

алфа=таймер100%2*k2; u=k1*(алфа-nMotorEncoder); двигател=u;

Този прототип на барабанист удря масата на редовни интервали. Основното нещо е да започнете в правилната позиция. Използвайки целочислена математика, можете да зададете по-сложен ритмичен модел, например (Таблица 7.1):

алфа = T 1% 5% 2 ∙ k 2.

център = S3.

Коефициентът се определя в цикъла:

k 1 = c + (S 3 - център) / k 2.

ориз. 7.36. Движение по линията на пропорционален регулатор с плаващ коефициент.

Полученият закон за контрол на усилването може да се приложи не само към пропорционалния компонент, но и към всеки друг компонент, както и към управляващото действие като цяло (фиг. 7.36).

ПИД контролер

Пропорционално-интегрално-производният (PID) контролер е един от най-популярните и се използва в огромен брой устройства от най- различни видове, които изискват бърза реакция и точност на позициониране на системата. Както подсказва името, този регулатор се състои от сбора от три компонента и е графично изобразен на фиг. 7.37.

ориз. 7.37. Схема на PID контролера.

Това е опростена диаграма. Стойността на динамичната грешка e (t) се подава на входа на контролера, а управляващото действие u (t) се генерира на изхода:

u (t) = p + i + d = k p ∙ e (t) + k i ∙ ò t

e (τ)d τ + k d ∙

де.

Пропорционалната компонента, показана на диаграмата като триъгълник, отговаря за позиционирането на системата в дадено състояние. В някои случаи може да причини превишаване с последващи собствени колебания. Тоест, P-регулаторът може да „прекали“ и роботът ще започне да се движи от една страна на друга.

Интегралният компонент натрупва отрицателен опит (обобщава грешките) и произвежда компенсиращ ефект. При минимални отклонения пропорционалният компонент „отслабва“, а интегралният компонент, поради бързото си нарастване чрез сумиране, спомага за „достигане“ на контролираната стойност до зададената стойност.

Диференциалният компонент (D-компонент) следи скоростта на промяна в състоянието на системата и предотвратява евентуално превишаване. В някои случаи D-компонентата е противоположна по знак на пропорционалната, а в други е еднаква.

Вече сме запознати с пропорционалния компонент, диференциалният е описан в предишната глава 6. Нека вземем интегралния. Този компонент се определя динамично, сумиран с предишната стойност:

i = i + ki × e(t) × dt.

Физическото значение на количеството e(t) × dt е, че то е

пропорционално на продължителността на системата в състояние на грешка. Тъй като коефициентът k i е изваден извън скоби, можем да говорим за стойността i като сбор от продължителностите на грешката. Така намираме интеграла чрез сумиране.

Нека разгледаме използването на PID контролер, използвайки примера на робот, балансиращ на две колела. Този класически проблем може да бъде разрешен с помощта на различни сензори по различни начини. В предложения пример се използва сензор за светлина и най-простата формаПИД контролер. Постигането на стабилизация на робота обаче ще изисква използването на по-точни показания на сензора.

RAW формат

Данните от сензора влизат в контролера NXT в необработена, необработена форма. Всички сензори предават операционна системацифрова стойност от 0 до 1023, която след това се обработва от съответния драйвер и се редуцира до по-разбираема форма (разстояние 0...255, осветеност 0...100, докосване 0 или 1 и т.н.). Но данните могат да се получават директно, заобикаляйки драйвера. Този необработен формат обикновено се нарича RAW (от английски „суров“). В някои случаи може да се използва за постигане на по-голяма точност. Например, обхватът на стойностите на сензора за светлина може да се увеличи приблизително 10 пъти. Именно тази възможност се използва допълнително.

Можете да получавате данни в RAW формат както в Robolab, така и в RobotC. За да направите това, сензорът се инициализира съответно и данните се четат от него с помощта на специална предварително дефинирана променлива.

Балансиращ робот

Дизайнът на робота Segway е показан на фиг. 7.38: вертикално позициониран контролер, близко разположени колела и обърнат надолу сензор за светлина. Алгоритъмът ще бъде малко по-сложен.

Принципът за стабилизиране на Segway в балансирана позиция е следният. Ако роботът се наведе напред, отчитането на светлинния сензор се увеличава поради отразената светлина. В отговор на това се генерира контролно действие, принуждаващо робота да се движи напред и по този начин отново да заеме вертикална позиция.

При движение назад показанията на сензора намаляват и роботът започва да се движи назад. За всичко това е отговорен пропорционалният компонент. Ролята на интегралните и диференциалните компоненти се играе от застраховка срещу превишение.

ориз. 7.38. Балансиращ робот Segway.

На фиг. 7.39 показва алгоритъма в Robolab. По-голямата част от него е заета от инициализацията на променливи. За да се подобри точността, не само данните от сензора се четат в RAW формат, но повечето променливи се декларират в реален плаващ формат. Самият PID алгоритъм е в цикъл.

ориз. 7.39. Алгоритъмът за балансиране се основава на PID контролер.

Следвайки традицията на движение по линията, използваме сивата променлива като зададена точка - средните показания на светлинния сензор в равновесно положение. Новият параметър за мащабиране определя мащабирането на контролното действие. Това по същество е фактор на затихване, тъй като стойността, произведена от регулатора, е твърде висока за двигатели NXT. Би било възможно да го добавите в съществуващите коефициенти, но за RobotC този параметър ще бъде различен, но коефициентите ще бъдат същите.

С дадените коефициенти роботът се стабилизира добре върху обикновен, светъл линолеум или бюро. Тоест не му трябва бялоповърхности. За да стартирате, трябва точно да поставите Segway в равновесно положение. Ако роботът започне с известен наклон напред или назад, той незабавно ще започне да се движи в посоката на наклона.

Подобен пример в RobotC е малко по-различен поради редица причини. Първо, производителността на NXT с фърмуера на тази среда е приблизително 1,4 пъти по-висока от тази на Robolab, така че коефициентът на мащабиране трябва да се увеличи. Второ, RAW стойностите се прехвърлят към в правилния реди ще трябва да настроите двигателите на заден ход или просто да приложите отрицателно контролно действие:

int gray=SensorRaw; int err, errold=0;

float kp=25, ki=350, kd=0.3; плаваща скала=14;

float dt=0,001; float p, i=0, d, u; докато (вярно)

err= сиво-SensorRaw; //Отклонение с обратен знак p=kp*err;

i=i+ki*err*dt; d=kd*(грешка-грешка)/dt; грешка=грешка; u=(p+i+d)/скала; двигател=u; двигател=u; изчакайте1Msec(1);

Елементи на теорията на автоматичното управление в училище1

Важна и интересна методическа задача е да „хвърли мост“ между областите на познание на специалист и студент, като помага на учениците да видят перспективите на бъдеща специалност, т.е. осъществяват кариерно ориентиране, а учениците виждат практическата приложимост на своите професионални познания. За да се постигне подобен ефект, бяха разработени методи за изчисляване на регулаторите с помощта на математически инструменти, които не надхвърлят училищни програмипо математика и физика. По-специално, вместо диференциални уравненияизползват се разностни, които добре отговарят на дискретния характер на взаимодействието между обект и контролер при компютърно управление.

Нека разгледаме например проблема за конструиране на пропорционални (P) и пропорционално-производни (PD) контролери в проблема за управление на движението на мобилен робот по протежение на стена. Нека с x t означим разстоянието между робота и стената, с θt - ъгъла на насочване на робота и с u t - управляващото действие в момента с пореден номер t, съответно, където t = 0, 1, 2, ... - брой моменти на промяна

рений. Смята се, че запитването на сензорите и промените в големината на управляващото действие се извършват на равни интервали от време h. За контролните задачи на роботите Lego NXT е естествено да се предположи, че контролното действие е разликата ъглови скоростивъртене на колелото, пропорционално на скоростта на промяна на ъгъла на посоката:

Ако приемем, че отклоненията на курса от номиналното θt =0 са малки и средната скорост на робота е постоянна: vt=v, динамиката на промените в променливите на състоянието на робота може да бъде описана с първо приближение линейни уравнениязаявява:

където g = h2vr / b.

Нека зададем желаното разстояние до стената x*> 0 и определим контролната цел (CT) чрез връзката

xt → x* като t→∞.

Сега нека естествено въведем на същностно ниво концепцията за асимптотична стабилност като свойство на решенията на система (4), осигуряващо постигането на целевата стойност (5) при всякакви начални условия, които се различават доста малко от целевите. Лесно се вижда, че за u t = 0, решението на уравнение (4) е всяка постоянна стойност x t = x*. Но тъй като уравнение (4), съответстващо на модела на двоен интегратор (двоен суматор), няма свойството на асимптотична стабилност, контролният център (5) при постоянно управлениене се постига. Това лесно се демонстрира аналитично чрез сумиране на редица



 


Прочетете:



Отчитане на разчети с бюджета

Отчитане на разчети с бюджета

Сметка 68 в счетоводството служи за събиране на информация за задължителни плащания към бюджета, удържани както за сметка на предприятието, така и...

Чийзкейкове от извара на тиган - класически рецепти за пухкави чийзкейкове Чийзкейкове от 500 г извара

Чийзкейкове от извара на тиган - класически рецепти за пухкави чийзкейкове Чийзкейкове от 500 г извара

Продукти: (4 порции) 500 гр. извара 1/2 чаша брашно 1 яйце 3 с.л. л. захар 50 гр. стафиди (по желание) щипка сол сода бикарбонат...

Салата Черна перла със сини сливи Салата Черна перла със сини сливи

Салата

Добър ден на всички, които се стремят към разнообразие в ежедневната си диета. Ако сте уморени от еднообразни ястия и искате да зарадвате...

Рецепти за лечо с доматено пюре

Рецепти за лечо с доматено пюре

Много вкусно лечо с доматено пюре, като българско лечо, приготвено за зимата. Така обработваме (и изяждаме!) 1 торба чушки в нашето семейство. И кой бих...

feed-image RSS