Перейти к содержанию
    

RHnd

Свой
  • Постов

    518
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные RHnd


  1. Действительно, самым разумным выглядит подключение датчика к dSpace. Сейчас у вас между датчиком и dSpace стоит комп с операционной системой не реального времени, правильно?. Вы как бы не шаманили с библиотеками и упаковкой переменных, но в такой съеме рассчитывать на быструю передачу данных и отсутствие задержек не стоит.

     

    Кстати, Матлаб вроде позволяет на лету преобразовывать типы данных и считать, что приходит массив из двух элементов float. Но деталей так с ходу не скажу.

  2. Ситуация: человек работает с розеткой и то ли коротит, то ли через него пробивает на корпус, но яркая вспышка, обугленный проводок, у человека копоть на пальцах. Вроде все обошлось, человек ходит, говорит, адекватно себя ведет. Но через 2-3 минуты заваливается, обмякает, начинает неуверенно говорить, запинаться.

    Я полный дилетант в этих вопросах и хочу спросить у более опытных людей - может ли быть такая отложенная реакция на ток? Или это нервное, реакция на стресс?

  3. Я может что-то не понимаю, но в чем загвоздка? Взятие среднего - пропуск сигнала через фильтр (для третьего порядка) (z^2+z+1)/(3*z^3). Пропустите полученный сигнал через обратный фильтр (3*z^3)/(z^2+z+1) и будет исходный сигнал.

  4. Да, правильно поняли.

    Частотно богатый - это такой жаргноизм, в системах управления ему соответствует понятие неисчезающего возбуждения (PE condition). В вашем случае, если вы для температуры t1 сформируете вектор X1, для t2 вектор X2, а потом составите матрицу [X1; X2; ...; Xn], то получившаяся матрица должна быть матрицей полного ранга. Это зависит не только от шума в измерениях d, но и от соотношения между табличными значениями x1, x2.

  5. Я правильно понимаю, что d(t) - набор измеренных значений сигнала d для разных значений t: t1, t2,..., tn? И аналогично для x1 и x2? И вы ищете такие k1, k2, k3, чтобы функция F(t)=d(t)*(x1(t)*k1 + x2(t)*k2 + k3) имела одно и то же значение для всех t? Скажем, C. Тогда у вас линейная регрессия с 4 неизвестными параметрами: Y=X*Q, Y=0(t), X=[d(t)*x1(t), d(t)*x2(t), d(t), -1], Q'=[k1, k2, k3, C]. Решается в лоб через МНК. Надеюсь, у вас много этих t и сигналы достаточно "частотно богаты".

  6. Первая мысль сама правильная - ввести насыщение на интеграторе. Только аккуратно сделать, с учетом коэффициента усиления и всего такого.

    А вообще нужно поискать по термину anti-windup. Там есть и более сложные схемы.

  7. Еще информация: ваша система называется Acrobot. Поиск по названию должен дать и матмодель, и методы управления. Вот пример стабилизации. Хотя я уверен, что они используют данные об угле первого звена, который вы не измеряете.

  8. ЗЫ а от этой темы на данном форуме я хотел решения принципиального вопроса - оставлять свою ПОС и пытаться реализовывать с ней или вдруг бы кто сказал: да там проще так-то и сяк-то, и без ПОСа и устойчивее )))

    Я думаю, что есть решения и без ПОС. Но без мат. модели искать их придется подбором. :)

    Поставьте интегральный коэффициент в ноль. Задание не отрабатывает, но балансирует.

  9. Как я вижу из описания, в вашем "одномерном" (некорректный термин) случае можно предположить, что первое звено закреплено в точке контакта с землей, так? Тогда вы имеете дело с классическим двузвенным маятником. Мат. модель такого маятника должно быть не сложно найти. Да и составить ее должен без особых проблем человек, недавно прослушавший курс теормеха или робототехники.

     

    Вообще, неполноприводными многозвенными маятниками активно занимаются некоторые ученые в области теории управления и робототехники. Например, вот ребята из Цюриха сделали - вы что-то подобное хотели?

  10. Разделение модели на подсистемы было бы очень удобно для анализа поведения. Ну и просто правила хорошего моделирования. :)

    Вы, к сожалению, несколько заблуждаетесь по поводу пунктов 2 и 3. Конечно, угол у вас датчик показывает в отсчетах, а скорость гироскоп показывает в попугаях. Задание же на двигатель вы вообще выдаете в бубликах, всё правильно. И, кончено, все масштабирующие коэффициенты можно явно внести прямо в коэффициенты регуляторов. Но для анализа так делать не надо, для анализа сигналы регулятора и сигналы модели надо сводить в единую систему измерений. Впрочем, поскольку вы анализом не занимаетесь, а подбираете значения, то на данный момент вам это действительно не актуально. Просто поставьте себе пометку, что в этом месте вы заготовили хороший запас граблей. :)

     

     

    А что у вас за скорость измеряется гироскопом? Я сначала думал, что это скорость той же координаты, что и измеряемый энкодером угол, но, похоже, это не так.

     

    А вот с ПОС так и непонятно. Хотя только что посмотрел выходы сигналов с двух ПИД-ов и их сумму, картинка производит впечатление, но хорошо это или плохо и что делать дальше пока не понял.

     

    Я еще посмотрел вашу модель. У вас неполноприводная механическая система, где вы измеряете положение одной координаты и еще какую-то скорость. Вам вообще повезло, что для нее удалось найти какой-то простой регулятор в семействе ПИД, так как аналитический синтез таких систем дело непростое.

    Действительно, у вас есть положительная обратная связь. Да, это выглядит неприятно. С другой стороны, это система нелинейная и тут нет такой обязательной закономерности "положительная"="плохо". Хотя, конечно, смущает.

    Если вы доверяете вашей механической модели, то хорошо. Попробуйте еще поварьировать параметры самой системы, проверить на чувствительность.

     

    Чтобы проводить какой-то дальнейший анализ, хорошо бы посмотреть математическую модель системы, а не механическую в sim mechanics. Я в этом mechanics не разбираюсь, увы.

  11. По модели:

    1) К сожалению, у вас не очень хорошо оформлена модель. Рекомендуется разделять по разным подсистемам группы элементов. В вашем случае надо, как минимум, разделить сам объект управления и регуляторы. Т.е. создать одну подсистему, в которой вся механика, привод и датчики, и вторую подсистему, в которой регуляторы. Соответственно, от второй к первой идет сигнал управления, а от первой ко второй - сигналы от датчиков. Это позволит в дальнейшем продуктивнее работать с моделью, поддерживать ее и даже кому-то передавать. При этом первую подсистему так же можно делить на блоки. Есть такое эмперическое правило - не более 8-10 элементов в одной логической группе (в одной подмодели).

    2) На данный момент я вижу, что угол измеряется в градусах, а скорость в радианах в секунду.

    3) Перед PID гиро и PID энкодер стоят множители K и K1, а после сумматора - множитель K2. Эти множители относятся к регулятору или они как-то связаны с самой системой, двигателем, датчиками? Чтобы таких вопросов не было, как раз и надо делить систему на логические подсистемы.

    4) А почему у вас люфт стоит перед двигателем, т.е. в канале управления? Разве в sim mechanics нету нормального механического люфта? Я сам не знаю, я с sim mechanics не работал.

    5) Не увидел в модели трения. Странно для детального моделирования механической системы. Я его пропустил?

    6) А так же не увидел динамику самого двигателя. Вы ею сознательно пренебрегаете?

     

     

    По управлению.

    1) Когда я предлагал сглаживающий фильтр, я имел ввиду в канал задания, т.е. между switch и сумматором. Это не будет задержкой управления, если только у вас не накручено еще контуров управления сверху, не показанных в модели. Если же такие контура есть, то это они должны заботиться, чтобы не было скачков в задании. С выбранной вами структурой регулятора нельзя избавиться от скачков управления: из-за скачка в задании у вас возникает скачок в ошибке, а он через пропорциональный коэффициент в PID энкодера проходит прямо в управление. Очевидных решения два. Первое - построение регулятора без пропорциональной составляющей. Второе - формирование гладкого задания. Лучше оба, но вам, как мне кажется, больше подходит второй. Попробуйте поставить на выходе switch апериодическое звено первого порядка 1/(a*s+1). Начните с a=0.01 и поэкспериментируйте.

    2) Чтобы говорить про сам контроллер, надо разобраться с K,K1,K2 и с размерностями измерений. Чтобы понять, что же именно является контроллером. :)

  12. Я подозреваю, что у вас матлаб 2013? У них новый формат файлов, мой матлаб его не открывает. Пересохраните, пожалуйста, модель в формате Simulink 7.4(2009b). Если будут проблемы с сохранением, то выложите хотя бы картинку, на которой структура регулятора, от двух входов (угол и скорость) к выходному сигналу - заданию на двигатель.

     

    Если вас тревожат выбросы при скачкообразном изменении уставки, то, может, сглаживающий префильтр поставить? Или там есть какие-то физические причины, что уставка должна именно скачком меняться?

  13. Сейчас уже поздно писать развернутый ответ, постараюсь завтра. Но вот так сходу:

     

    Вы рассматриваете систему как линейную или как нелинейную? Для линейной:

    Если получается ПОС по интегралу угла, то это плохо, так как даже при наблюдаемой устойчивости системы могут быть скрытые неустойчивые состояния. Если получается ПОС по углу, то, возможно, она компенсируется ООС по интегралу скорости, так как для анализа устойчивости это, вообще-то, "эквивалентные" сигналы. Если, конечно, они заведены в одну точку.

     

    Вообще по вашему описанию полноценная картина не складывается, лучше действительно посмотреть симулинковскую модель.

  14. по-моему, все гораздо проще.

     

    Да, хороший целочисленный вариант и ни одного умножения. Единственная загвоздка - а точно ли даны все точки контурной линии? Если для какого-то значения Y точка пропущена, мало ли вдруг, то контур придется аппроксимировать прямой и начинать вычисления.

     

    Даже более того. Предположим, для какого-то Y вы нашли три точки X: 5, 10, 50. Как определить, это однопиксельное касание в точке 5 и отрезок длинной 40, или отрезок длиной 5 и однопиксельное касание в точке 50? Или вообще три касания?

  15. Способов множество, все они относятся к теории управления.

     

    Во-первых, надо определиться с моделью той системы, выходом которой вы хотите управлять. Линейная-нелинейная, порядок системы, быстродействие.

    Во-вторых, не всякую функцию можно воспроизвести. Как правило, она должна быть достаточно гладкая. Значит, надо определить класс воспроизводимых функций. В вашем случае - синусоида и экспонента. Далее, а как сигнал задания может меняться в ходе работы?

    В-третьих, надо определиться, а какую точность слежения надо обеспечить? Нужно ли воспроизводить только форму сигнала с возможной задержкой, или же обязательно синхронно во времени? Если синхронно, то какое время переходного процесса допустимо?

    В-четвертых, какие возмущения могут действовать на систему, внешние и внутренние? На сколько они будут влиять на точность и как с ними бороться?

     

    В зависимости от этих вопросов может оказаться, что вооще нельзя решить задачу. А может можно вообще без датчиков, только за счет правильным образом сформированного сигнала уставки. А может надо какую-то обратную связь заводить и еще какой-то пре-фильтр строить. А может есть хорошее решение в классе нелинейных, например, релейное управление.

  16. Подождите, а как вы предлагаете реализовывать заливку, не определяя, внутри фигуры точка или нет?

    Предложили два аналитических метода - по трапециям и по ориентированным треуголькам. Зачем накручивать более ресурсоемкие, и медленные методы подсчета точек?

  17. Заливать всю площадь и считать интенсивность это обалдеть как ресурсозатратно. Одна только заливка произвольной фигуры чего стоит. Тогда уж проще прямо в процессе заливки и посчитать, скольким точкам был присвоен цвет заливки и помножить на площадь пикселя.

     

    Для вашей задачи неплохим, как мне кажется, решением будет именно метод трапеций, о котором я говорил в начале. Точки у вас, как я понимаю, заданы в порядке обхода. Каждые две точки соединяются прямой, т.е. фигура описывается многоугольником. Затем, начиная с некоторой точки, считаем площадь прямоугольной трапеции, заданной вершинами (x(i),0) — (x(i),y(i)) — (x(i+1),y(i+1)) — (x(i+1),0). Тут для простоты считается, что все y больше нуля:

    dS = (x(i+1)-x(i)) *(y(i+1)+y(i))/2;

    S=S+dS.

    Когда обойдем все точки, в S будет площадь аппроксимирующего прямоугольника. Естественно, dS может быть как положительным, так и отрицательным.

  18. Вообще площадь произвольной замкнутой несамопересекающейся фигуры на плоскости можно считать методом трапеций. Но лично мне не совсем ясна задача - что значит "значение получено из ацп по всему периметру"? Это какая-то фигура на плоскости или что?

×
×
  • Создать...