Тема: Немного о PID регуляторах, пропорциональная часть.  (Прочитано 59777 раз)

0 Пользователей и 1 Гость просматривают эту тему.


Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #165 : 09 Ноябрь, 2013, 14:09:33 pm »
ты меня убеждаешь, что в твоем случае будет меньше колебаний около целевой точки.
...пропустив пару страниц занудства... В моём случае I компонента будет агрессивно давить колебания ( т.е. компенсировать "динамическую ошибку") А в твоём будет выводить нулевую точку ( т.е. компенсировать "статическую ошибку"). Т.е. регуляторы построены для регулирования разных величин.

Нет понятия УДОБНО для регулятора.
ну вот тут  -поспорю. Когда ты едешь на авто и включаешь круиз контроль для удержания текущей скорости..то круизконтроль из текущего положения дросселя и текущей скорости продолжает поддерживать текущую скорость.  И это - удобно... А вариант, чтобы он сбросил дроссель и потом бы сам его подтянул к нужному значению - не очень удобно.. ( т.е. нажал круиз - машина тормознула, потом газанула и только потом вернулась к нужной скорости). Но удобство -величина субъективная :)

Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #166 : 09 Ноябрь, 2013, 14:22:21 pm »
ты меня убеждаешь, что в твоем случае будет меньше колебаний около целевой точки.
...пропустив пару страниц занудства... В моём случае I компонента будет агрессивно давить колебания ( т.е. компенсировать "динамическую ошибку") А в твоём будет выводить нулевую точку ( т.е. компенсировать "статическую ошибку"). Т.е. регуляторы построены для регулирования разных величин.
Да, у меня эту функцию (гашение колебаний, прогноз перелетов) выполняет D.  I действительно компенсирует "статическую ошибку", а заодно выполняет функцию Heading Lock. Предлагаю дальше на эту тему не спорить - бесполезно. Сделай пример - увидим.
Нет понятия УДОБНО для регулятора.
ну вот тут  -поспорю. Когда ты едешь на авто и включаешь круиз контроль для удержания текущей скорости..то круизконтроль из текущего положения дросселя и текущей скорости продолжает поддерживать текущую скорость.  И это - удобно... А вариант, чтобы он сбросил дроссель и потом бы сам его подтянул к нужному значению - не очень удобно.. ( т.е. нажал круиз - машина тормознула, потом газанула и только потом вернулась к нужной скорости). Но удобство -величина субъективная :)
А ей тормознуть понадобится на несколько милисекунд. Ты даже не успеешь понять. Все, не буду об этом спорить, не знаю, как работает круиз в машине, возможно и твоим методом. Надо ставить опыты и проверять её поведение, чтобы понять как там все настроено. К сожалению времени на это нету, уехал летать :)

Оффлайн Kulichik

  • Старейшина клуба
  • Administrator
  • Сообщений: 10618
« Ответ #167 : 09 Ноябрь, 2013, 16:05:54 pm »
А как бы так вежливо прервать ваш высконаучный , но глубоко нудный, спор и
мягко вернуть к первоначальной идее:
в трёх-пяти страницах доходчиво и наглядно описать влияния P , I , D ?

Оффлайн Helimen

  • Сообщений: 2666
  • Пробежала полоса, зверем залегла, Расколола небеса
    • Игорь
    • Коноплёв
  • Город: Магадан
« Ответ #168 : 09 Ноябрь, 2013, 17:11:35 pm »
А как бы так вежливо прервать ваш высконаучный , но глубоко нудный, спор и мягко вернуть к первоначальной идее: в трёх-пяти страницах доходчиво и наглядно описать влияния P , I , D ?



    Искренне поддерживаю :).   

    У меня столько вопросов, что я боюсь начать попытку излагать их, чтобы не запутаться в их формулировке, и донести мысль доходчиво до учёных, как Вы.  Но попытаюсь всё-таки некоторые изложить:
   
      1.) Какое поведение, с точки зрения "идеального", по-вашему, должно быть  у вертолёта с FBL-системой, и соответстующими сервоприводами? К чему идёт стремление?
      2.) Карбоновые лопасти бывают разные(менее жёсткие, жёсткие, очень жёсткие) на такие типы деформаций, как кручение и изгиб. Если я применяю лопасти "менее жёсткие"(гибкие), то в какую сторону я должен регулировать компоненту "I"(увеличивать, или уменьшать от среднего значения)? И какое поведение при этом у вертолёта должно быть в полёте и при каких режимах, чтобы я понимал, что этот параметр настроен верно(ну или неверно)?
     3.) Почему бы на хвост не установить самое максимальное значение компоненты "I"?  Неужели, я могу нарушить адекватную работу хвоста таким образом в режиме "Удержания"? То есть, бывает ли этот параметр избыточным в этом режиме? И если ДА , то как понять: где та граница за которую нельзя переходить?
Люди перестают играть не потому что стареют, а стареют потому что перестают играть.

Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #169 : 09 Ноябрь, 2013, 18:44:30 pm »
Не претендую на истину в последней инстанции, все что приведено ниже - мое понимание процесса полученное в результате изучения интернета, в процессе написания собственного эмулятора, ну и настройки MSH BRAIN на TRex 450.
      1.) Какое поведение, с точки зрения "идеального", по-вашему, должно быть  у вертолёта с FBL-системой, и соответстующими сервоприводами? К чему идёт стремление?
Хочу, чтобы вертолет максимально точно и быстро выполнял команды пилота, максимально гасил любые внешние воздейтсвия, устранял последствия их проявления и при этом не вносил "отсебятины".

2.) Карбоновые лопасти бывают разные(менее жёсткие, жёсткие, очень жёсткие) на такие типы деформаций, как кручение и изгиб. Если я применяю лопасти "менее жёсткие"(гибкие), то в какую сторону я должен регулировать компоненту "I"(увеличивать, или уменьшать от среднего значения)? И какое поведение при этом у вертолёта должно быть в полёте и при каких режимах, чтобы я понимал, что этот параметр настроен верно(ну или неверно)?
Ничего не могу сказать по этому поводу. Не знаю как ведут себя разные лопасти. Знаю как ведет себя PID контроллер :) Если опишете в чем конкретно проблема и чего хочется от поведения вертолета, можно попытаться понять, какими комбинациями параметров этого достичь. Но не гарантирую правильности ответа :)
3.) Почему бы на хвост не установить самое максимальное значение компоненты "I"?  Неужели, я могу нарушить адекватную работу хвоста таким образом в режиме "Удержания"? То есть, бывает ли этот параметр избыточным в этом режиме? И если ДА , то как понять: где та граница за которую нельзя переходить?
На мой взгляд, компонента I является вредной, т.к. вносит нелинейность, а также задержку и инерционность, а также приводит к медленным колебаниям.
Поэтому максимальное значение I не нужно, нужно минимально достаточное для удержания хвоста.
Проверяется просто - при выполнении пируэта скорость пируэта должна быть равномерной. После чего проверить пируэт на скорости. I компонента должна обеспечивать равномерность пируэта в любых условиях. (При условии конечно, что хватает эффективности хвоста)
Слишком маленькое I - и пируэт будет неравномерный,слишком большое I могут начаться колебания хвоста (медленные колебания, плавающие), и будут проблемы с остановкой хвоста и "перелетом". Поэтому как обычно идеальный вариант - "золотая середина"

Оффлайн almus

  • Сообщений: 552
« Ответ #170 : 09 Ноябрь, 2013, 19:21:13 pm »
1.) Какое поведение, с точки зрения "идеального", по-вашему, должно быть  у вертолёта с FBL-системой, и соответстующими сервоприводами? К чему идёт стремление?
Абсолютно согласен с предыдущим оратором!

  2.) Карбоновые лопасти бывают разные(менее жёсткие, жёсткие, очень жёсткие) на такие типы деформаций, как кручение и изгиб. Если я применяю лопасти "менее жёсткие"(гибкие), то в какую сторону я должен регулировать компоненту "I"(увеличивать, или уменьшать от среднего значения)? И какое поведение при этом у вертолёта должно быть в полёте и при каких режимах, чтобы я понимал, что этот параметр настроен верно(ну или неверно)?
Менее жесткие лопасти вносят очень сложную дополнительную математику в работу и так непростой системы и однозначно только вредят ее работе. Хорошая ФБЛ система будет летать и на мягких лопастях, и с не очень быстрыми аналоговыми сервами, но однозначно хуже, чем с жесткими лопастями и быстрыми сервами. Плохая система в таких условиях просто сходит с ума. А насчет поведения вертолета - хозяин барин, как ему нравится - так он и настраивает.

3.) Почему бы на хвост не установить самое максимальное значение компоненты "I"?  Неужели, я могу нарушить адекватную работу хвоста таким образом в режиме "Удержания"? То есть, бывает ли этот параметр избыточным в этом режиме? И если ДА , то как понять: где та граница за которую нельзя переходить?
Компонента "I" нужна для сведения к нулю ошибки управления, если ее убрать совсем - обязательно останется ошибка, эта ошибка зависит от компоненты "P", но ее наличие принципиально! Компонента "D" необходима для компенсации задержки и "перебегов", возникающих вследствие компоненты "I". Все эти три компоненты вместе и образуют PID-регулятор, и его настройка в принципе не может быть однозначной, при разных критериях получаются разные сочетания параметров, это сродни искусству!

Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #171 : 09 Ноябрь, 2013, 19:29:29 pm »
А как бы так вежливо прервать ваш высконаучный , но глубоко нудный, спор и мягко вернуть к первоначальной идее: в трёх-пяти страницах доходчиво и наглядно описать влияния P , I , D ?
Спасибо, что прервали. Сил нет уже его продолжать :)

Могу рассказать как я понимаю эти параметры. Предлагаю рассматривать для простоты только одну ось вращения, т.е. управление хвостом. Управление по оставшимся двум осям в принципе очень похоже и отличается только другими итоговыми параметрами P, I, D.
Сначала общее понимание процесса без тонкостей. Первые 3 пункта - в идеальных условиях, без ветра.

1. Пилот передает команду в FBL начать вращение. FBL измеряет текущую угловую скорость и вычисляет разницу между желаемым и действительным.
Ошибок у нас в этот момент еще нет, поэтому I компонента еще не действует. Скорость первоначального отклика вертолета на команду пилота зависит исключительно от компоненты P. Чем выше значение - тем быстрее и резче реагирует вертолет на команду пилота.
2. Вертолет начинает вращение. Но т.к. он в любом случае начал вращение с запаздыванием (пока обработка шла, пока серва сдвинулась), у нас успела накопиться небольшая ошибка, т.е. отставание. Тут начинает работать компонента I. Она добавляется к P и чутка подгоняет вращение, до тех пор, пока мы чутка не догоним, и даже перегоним, с тем чтобы выбрать ошибку. В итоге средняя скорость получается такая, как требовал пилот.
3. Вертолет вращается на скорости, которая необходима пилоту. Ошибка в I компоненте 0, в P тоже 0, потому что отсутствует разница между желаемым и действительным. D тоже 0, все хорошо.
4. Тут вмешивается ветер. (ну или мы полетели вперед с пируэтом, появился набегающий поток воздуха). Хвост начинает отставать от необходимой скорости пируэта. Появляется разница между желаемой скоростью и действительной. Начинает работать P компонента, но её может не хватить на компенсацию ветра.
Все что сможет сделать P - остановить дальнейший разгон вращения по ветру.
Начинает накапливаться ошибка в I компоненте. Чем больше накопилось ошибки, тем больше влияние I, тем больше хвост начинает сопротивляться ветру.
Когда значение ошибки уравновешивает силу ветра, хвост начинает вращаться равномерно с необходимой скоростью.
5. С ветром понятно, убираем его,  Хвост продолжает вращение по команде с пульта, ошибка из I плавно выбирается, и уходит в 0.
6. Пилот дает команду резко остановить хвост. Первым как обычно действует P, пропорционально разнице желаемого (остановка) и действительного(вращаемся). Вырабатывается тормозящая команда на серву.  Но опять у нас задержки на выполнение, инерция хвоста, опять начинает накапливаться ошибка  в I. Когда мы по факту уже остановились, нам бы надо вернуть серву в обычное положение, для нейтрального полета, но у нас есть накопленная ошибка в I. (мы же пролетели то место, в котором пилот дал команду - тормоз в пол). Поэтому I попытается вернуть хвост в то место, где он был в момент получения команды. И получаем отскок хвоста.
7. Я не рассказал про D компоненту. Основное её назначение - анализировать скорость с которой уменьшается ошибка. и противостоять "перелету". Т.е. словами можно описать так: что-то мы слишком быстро приближаемся месту парковки, похоже пора тормозить.

Это про то, как оно работает.
Как понять что крутить, что на что влияет.
1. P - скорость реакции на команду пилота. Маленькая P - более вялая реакция, запаздывание на команду. (команда может выполнится и за счет I, но будет выполняться с задержкой и нелинейно.)
Большое P может приводить к колебаниям хвоста. (слишком резко среагировали на команду, двинули серву слишком далеко, получили "перелет", среагировали на новую ошибку, двинули обратно, и т.д.)
Я видел рекомендацию настраивать P на уровень 2/3 от того на котором начинаются колебания. Т.е. если колебания начинаются на 70. то установить P на 47. Чтобы оставить пространство для маневра двум оставшимся компонентам (I и D)
2. I - устранение ошибок вызванных внешним воздействиям. Начинать с маленького значение, увеличивать до тех пор пока пируэт во всех условиях будет выполняться равномерно. (На месте, на скорости, при ветре, при ветре на скорости). Если начинает вызывать медленные плавающие колебания хвоста - необходимо уменьшить I. Большое I не полезно, мешает работе системы, внося в нее инерционность. Поэтому еще раз подчеркну - необходимо подобрать минимально достаточное значение.
3. D - в основном влияет на остановку. Не дает I компоненте "перелететь" за нужное значение. Сложный параметр. Везде пишут - большое D - мягкая остановка хвоста. маленькое D - более резкая и четкая остановка. Слишком большое D вызывает быстрые высокочастотные колебания хвоста.
Еще D помогает I гасить резкие порывы ветра.

P.S. думал-думал про D и пришел к выводу, что D по идее должна работать так:
Большая D - мягкая остановка,  мы слишком сильно и слишком заранее начинаем тормозить.
Маленькая D - резкая остановка с отскоком, т.к. не тормозим, и пролетаем мимо - начинается движение в обратную сторону, отскок.



« Последнее редактирование: 09 Ноябрь, 2013, 20:21:45 pm от alienn »

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #172 : 09 Ноябрь, 2013, 22:49:03 pm »
Как было показано в предыдущих частях - регулятор, содержащий задержки, P и D компоненты рано или поздно приходит к колебанию около целевой точки. Причем это не просто колебания, а полноценные автоколебания, которые "подпитываются" задержками, а "тормозятся" - D компонентой... И, в общем, лучшее, чего можно добиться - это достаточно быстро снизить амплитуду этих колебаний и уменьшить частоту до каких-то приемлемых значений... Т.е. система будет не слишком суетливо и не слишком сильно болтаться около целевого значения.

"А как же статистическая ошибка!!!"

Собственно, что есть эта ошибка... В самом простом случае - это неотцентрованная точка 0 исполнительного механизма, постоянный ветер, разници между скоростью набора оборотов и скоростью снижения оборотов и т.п. 
 В том случает, если она невелика, то "болтанка" системы просто сместится...Т.е. она всё равно будет проходить через целевое точное значение, но, условно говоря, будет находится "слева" от нужного значения больше времени, чем "справа"... И в какой-то момент....верное значение не будет достигнуто, да и колебательный режим может развалиться. ( строго говоря, колебания с вещественной частотой - это синус и косинус, с нулевой частотой - это константа, а колебания с мнимой частотой- это экспонента, либо затухающая, либо возрастающая - это всё-решения исходных дифф. уравнений).

Ну, и решение очевидно - надо сделать предкомпенсацию, т.е. можно где-то накапливать эту ошибку (интегрально вообще всю, от момента включения регулятора) и это накопление будет обладать одним замечательным свойством...пока ошибка есть- её интеграл будет нарастать (конечно неравномерно), а как только система подойдет к нужной точке -ошибка уменьшится до нуля и значение интеграла ошибки - стабилизируется в точности на значении той самой "статистической ошибки".  (если совсем строго- стабилизируется и будет тоже болтаться около этого значения)

Но самое то неприятное заключается в том, что компенсация статистической (классическим методом накопления от момента включения) ошибки НИКАК вообще не улучшила ситуацию с колебанием системы около искомой точки. Т.е. всё было зря- I компонента просто "отцентровала " систему относительно текущей "статистической ошибки". Дальше (пропустив много занудства) таким образом можно неплохо компенсировать внешние не слишком быстрые воздействия и будет исполнять команды перевода системы из одного заданного состояния в другое заданное и это будет работать, но это практически никак не улучшит ситуации с болтанкой по достижении цели. Более того, если значение коэффициента при I  сделать небольшим - оно будет набирать компенсацию ошибки очень долго, а если слишком большим - начнёт заводить систему не хуже P компоненты.

Собственно на этом факте кончается изложение во всяких википедиях, и начинается самое интересное.

Интересное начинается снова с того, что у нас есть колебательная система, построенная так, чтобы статистически ошибки были максимально скомпенсированы (это несложно, берем другие пары переменных, к примеру)... И получаем опять эти проклятые колебания, которые всё таки хочется погасить....Как убедились выше - гасить колебания методом "трения" - вполне допустимо, но это не слишком быстро, т.к. "трение" работает тогда, когда система уже набрала скорость.  А что же можно сделать?!

А всёго навсего нужно заставить регулятор начать срабатывать чуть раньше ("запаздываение провоцирует разгон", а "опережение - торможение"). Причём сделать это надо чисто арифметическим трюком, без "частотного анализа", просто подставив два числа в регулятор. И здесь на помощь приходит тот факт, что у нас система вышла на периодические колебания. Ну а дальше - математический трюк, когда синус и косинус можно выразить через друг друга, через интерграл друг друга и т.п. И, соответсвенно, можно получить арифметически опережающее значение рассогласования через интеграл рассогласования от некоторого предыдущего отрезка времени.

Пропустив еще страницу про то, как I компонента начинает влиять на регулировку в целом и на себя, в частности, улучшая сходимость...:)

Таким образом тонкая работа с I компонентой позволяет гасить колебания в системе, которые принципиально невозможно гасить ни D ни P компонентой.

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #173 : 09 Ноябрь, 2013, 22:53:21 pm »
1.) Какое поведение, с точки зрения "идеального", по-вашему, должно быть  у вертолёта с FBL-системой, и соответстующими сервоприводами? К чему идёт стремление?
В общих чертах задача системы - вести вертолёт "за стиками". Только надо договориться, что будут означать стики...
в одном варианте положения стика - это величина крена ( как в квадриках на автопилоте)
В другом положение стика - это желаемая угловая скорость
в третьем - желаемое угловое ускорение.

Но еще крайне немаловажно - это гасить лишние перекрёстные связи, т.е. выполнять все предкомпенсации, чтобы при резкой остановке хвоста вертолёт не просаживался и т.п.


Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #174 : 10 Ноябрь, 2013, 00:37:23 am »
... Таким образом тонкая работа с I компонентой позволяет гасить колебания в системе, которые принципиально невозможно гасить ни D ни P компонентой.
Спасибо, реально интересно, и меня есть два вопроса.
1. Каким образов в твоей системе будет осуществляться Heading Lock? Какой компонент PID регулятора будет за это отвечать?  Допустим очень сильному порыву ветра все таки удалось свернуть хост градусов на 45, какой компонент твоего PID регулятора даст команду вернуться в прежнюю точку?
2. Когда будет рабочий пример? Если нужна помощь по исходникам - обращайся.

Оффлайн ilyxa

  • Старейшина клуба
  • Сообщений: 4645
  • Foto & RC Hobby
  • Город: Rostov-na-Donu
« Ответ #175 : 10 Ноябрь, 2013, 01:15:40 am »
     3.) Почему бы на хвост не установить самое максимальное значение компоненты "I"?  Неужели, я могу нарушить адекватную работу хвоста таким образом в режиме "Удержания"? То есть, бывает ли этот параметр избыточным в этом режиме? И если ДА , то как понять: где та граница за которую нельзя переходить?

система войдет в режим автоколебаний, если коротко - да, параметр I бывает избыточным. Граница - наступление автоколебаний на живой системе (принцип настройки чуйки гиры хвостовой - поднимаем до тех пор, пока не начнет помахивать, опускаем чутку вниз, пока система не станет как скала :) ). Система не идеальна - дискретная, прерывистая по умолчанию, имеет конечное быстродействие, возмущение извне же - всегда непрерывно.

Строго говоря - ПИД-регулятор - в нашем случае это FBL или гира - это некий способ совместить ежа с ужом - то есть воздействие всегда линейно и непрерывно, а вот система компенсации и реакции на воздействие - увы, в основе своей - дискретна - прерывиста - ВСЕГДА (несмотря на относительно безумную мощность и кажущуюся в результате относительную беспрерывность). Сыр в том, что как бы не пытались поиметь физику - механический флайбар по сути своей ВСЕГДА лучше, потому как в основе своей непрерывен и всегда следует за воздействием as is, а FBL - это удачная попытка реализации. Нет предела совершенству, и к нашему счастью, процессы на РУ вертолете не настолько быстрые, чтобы с ними не справились современные процессора ;)
« Последнее редактирование: 10 Ноябрь, 2013, 01:22:16 am от ilyxa »

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #176 : 10 Ноябрь, 2013, 02:34:49 am »
1. Каким образов в твоей системе будет осуществляться Heading Lock?
Heading Lock - это стабилизация курса, а не угловой скорости...За входной параметр берешь рассогласование курса, а не угловой скорости и поехали... А вот откуда на вертолёте взять значение курса - это отдельная борьба с интегрированием данных с ДУСов, фильтрацией его совершенно бешенных шумов и т.п. 


Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #177 : 10 Ноябрь, 2013, 09:00:21 am »
1. Каким образов в твоей системе будет осуществляться Heading Lock?
Heading Lock - это стабилизация курса, а не угловой скорости...За входной параметр берешь рассогласование курса, а не угловой скорости и поехали... А вот откуда на вертолёте взять значение курса - это отдельная борьба с интегрированием данных с ДУСов, фильтрацией его совершенно бешенных шумов и т.п. 
Андрей, простой ответ на данный вопрос для твоей системы - "никак" :) Твой PID не сможет реализовать эту функцию без введения дополнительных модулей. По сути, тебе необходим второй PID контроллер.

Оффлайн alienn

  • Сообщений: 104
    • Вадим
    • Юнак
  • Город: Санкт-Петербург
« Ответ #178 : 10 Ноябрь, 2013, 09:15:43 am »
... возмущение извне же - всегда непрерывно.
... то есть воздействие всегда линейно и непрерывно, а вот система компенсации и реакции на воздействие - увы, в основе своей - дискретна - прерывиста - ВСЕГДА..
А ты уверен, что возмущение всегда непрерывно? А что если мы живем в матрице, и возмущение рассчитывается на таких же компьютерах  :-X  :D

Оффлайн almus

  • Сообщений: 552
« Ответ #179 : 10 Ноябрь, 2013, 10:27:33 am »
Строго говоря - ПИД-регулятор - в нашем случае это FBL или гира - это некий способ совместить ежа с ужом - то есть воздействие всегда линейно и непрерывно, а вот система компенсации и реакции на воздействие - увы, в основе своей - дискретна - прерывиста - ВСЕГДА (несмотря на относительно безумную мощность и кажущуюся в результате относительную беспрерывность). Сыр в том, что как бы не пытались поиметь физику - механический флайбар по сути своей ВСЕГДА лучше, потому как в основе своей непрерывен и всегда следует за воздействием as is, а FBL - это удачная попытка реализации. Нет предела совершенству, и к нашему счастью, процессы на РУ вертолете не настолько быстрые, чтобы с ними не справились современные процессора ;)
Насчет "ежа с ужом" - это верно, так как подобная задача никогда не имеет одного оптимума и человек вынужден выбирать из многих вариантов наиболее для себя приемлемый. А вот насчет дискретности - зело неверно! ПИД-регуляторы придумали не вчера, и изначально они все были аналоговыми и непрерывными, и все в них было точно так же! Это с развитием микропроцессорной электроники они стали цифровыми, но при грамотной реализации, а на современной базе это сделать достаточно легко, погрешностями дискретизации и квантования можно смело пренебречь. Это как с цифровым звуком, 20 лет назад МП3 действительно невозможно было слушать, а сейчас при грамотном кодировании даже упертые любители "теплого лампового звука" не находят никаких изъянов. ПИД-регуляторы прошли этот этап значительно раньше.