реклама на сайте
подробности

 
 
> Посоветуйте источники информации по ТАУ, с доступным порогом вхождения
_Ivana
сообщение Feb 19 2014, 06:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Порекомендуйте пожалуйста книги/учебники/статьи (буду искать в электронном виде), сайты/форумы и что еще можно найти в интернете, что помогло бы мне освоить теорию управления системами на уровне, достаточном для построения и реализации математических моделей прикладных задач. ПИД, нелинейные системы, пространство состояний, фильтры альфа/бета и Калмана и т.п. Спрашиваю в этом разделе, т.к. теория общая, и применяется от механики до социологии (хотя мне в первую очередь интересны механические приложения).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Ivana
сообщение Feb 24 2014, 22:29
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Вести с полей - навскидку накидал программку анимации двойного маятника в Матлабе (теория отсюда: http://www.math24.ru/double-pendulum.html ), со своим доморощенным кустарным методом решения системы линейных/нелинейных диффуров (придуман на коленке, допускаю, что далеко не оптимальный), желающие могут поиграться длинами/массами, временем/интервалом дискретизации и начальными условиями (с ними есть одна тонкость).
ЗЫ правда, мне придется вывести свою систему диффуров - у меня центр масс первого звена не в точке соединения звеньев а где-то между ней и точкой подвеса и надо заложить функцию внешнего воздействия в точке соединения звеньев. А потом и к симуляции ПИДа можно переходить.
CODE
function Main()
global l1 m1 l2 m2 g dt y
l1 = 1; m1 = 3;
l2 = 1.5; m2 = 1;
dt = 0.01;
t_max = 150;
g = 9.8;

function r = system_1_point(v)
r = [(m1+m2)*l1*v(3) + m2*l2*v(6)*cos(v(1)-v(4)) + m2*l2*v(5)^2*sin(v(1)-v(4)) + (m1+m2)*g*sin(v(1));
-v(1) + dt*v(2) + y(ii-1, 1);
-v(2) + dt*v(3) + y(ii-1, 2);
l2*v(6) + l1*v(3)*cos(v(1)-v(4)) - l1*v(2)^2*sin(v(1)-v(4)) + g*sin(v(4));
-v(4) + dt*v(5) + y(ii-1, 4);
-v(5) + dt*v(6) + y(ii-1, 5);
];
end
function r = system_2_point(v)
r = [(m1+m2)*l1*v(3) + m2*l2*v(6)*cos(v(1)-v(4)) + m2*l2*v(5)^2*sin(v(1)-v(4)) + (m1+m2)*g*sin(v(1));
-1.5*v(1) + dt*v(2) - 0.5*y(ii-2, 1) + 2*y(ii-1, 1);
-1.5*v(2) + dt*v(3) - 0.5*y(ii-2, 2) + 2*y(ii-1, 2);
l2*v(6) + l1*v(3)*cos(v(1)-v(4)) - l1*v(2)^2*sin(v(1)-v(4)) + g*sin(v(4));
-1.5*v(4) + dt*v(5) - 0.5*y(ii-2, 4) + 2*y(ii-1, 4);
-1.5*v(5) + dt*v(6) - 0.5*y(ii-2, 5) + 2*y(ii-1, 5)];
end

t = 0:dt:t_max;
N = numel(t);
y = zeros(N, 6); % 1,2,3 - угол первого звена с производными, 4,5,6 - второго

% начальные условия - задание примерных
% и потом пересчет их же для удовлетворения системе
y(1, 1) = 2; y(1, 2) = 0; y(1, 3) = 1;
y(1, 4) = y(1, 1); y(1, 5) = 0; y(1, 6) = 1;
ii = 2;
options = optimoptions('fsolve', 'Display','off');
v = fsolve(@system_1_point, y(ii - 1, :), options);
y(1, :) = v;

hf = figure(1);
clf reset
set(hf,'color', 'black');
axis off, axis equal
xlim([-(l1+l2) (l1+l2)]); ylim([-(l1+l2) (l1+l2)]);
title(['See Double Pendulum Run! ( l1=', num2str(l1), ', m1=', num2str(m1),....
', l2=', num2str(l2), ', m2=', num2str(m2), ' )'],'Color','white');
hold on
plot(0, 0, 'o', 'LineWidth', 3, 'color', [160/255 160/255 160/255]);
ht = plot(0, 0, ':w');
hl = plot([0, 0, 0], [0, 0, 0], '-', 'LineWidth', 4, 'color', [43/255 84/255 126/255]);
ha = plot(0, 0, 'o', 'LineWidth', 1 + round((m1*50)^(1/2)), 'color', [160/255 160/255 160/255]);
hb = plot(0, 0, 'o', 'LineWidth', 1 + round((m2*50)^(1/2)), 'color', [160/255 160/255 160/255]);
for ii = 2:N
options = optimoptions('fsolve', 'Display','off');
if ii == 2
v = fsolve(@system_1_point, y(ii - 1, :), options);
else
v = fsolve(@system_2_point, y(ii - 1, :), options);
end
y(ii, :) = v;

xa = l1.*sin(y(ii, 1));
ya = -l1.*cos(y(ii, 1));
xb = xa + l2.*sin(y(ii, 4));
yb = ya - l2.*cos(y(ii, 4));
set(hl,'XData',[0, xa, xb]); set(hl,'YData',[0, ya, yb]);
set(ha,'XData',xa); set(ha,'YData',ya);
set(hb,'XData',xb); set(hb,'YData',yb);
set(ht,'XData', l1.*sin(y(1:ii, 1)) + l2.*sin(y(1:ii, 4)))
set(ht,'YData', -l1.*cos(y(1:ii, 1)) - l2.*cos(y(1:ii, 4)))
drawnow
end
end
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Ivana   Посоветуйте источники информации по ТАУ   Feb 19 2014, 06:47
- - TSerg   Их читать - не перечитать На торренте как-то была ...   Feb 19 2014, 07:14
- - _Ivana   Спасибо за ответ и список. Я подозревал, что там м...   Feb 19 2014, 07:23
- - SSerge   Мне вот эта понравилась: Гродинз Ф. Теория регулир...   Feb 19 2014, 08:14
- - ukpyr   http://www.twirpx.com/files/automation/tau/   Feb 19 2014, 12:43
- - _Ivana   Спасибо всем отписавшимся. Теперь буду выбирать из...   Feb 19 2014, 16:50
|- - Xenia   Цитата(_Ivana @ Feb 19 2014, 20:50) Тепер...   Feb 19 2014, 19:01
- - _Ivana   Xenia, спасибо что напомнили, слона то я и позабыл...   Feb 19 2014, 20:13
- - vzelenuk   Посмотрите еще вот здесь, целый курс с лабами, док...   Feb 20 2014, 12:40
- - _Ivana   vzelenuk спасибо. Я надеялся, что в инете должны б...   Feb 21 2014, 10:00
- - octobus   Отлично, поиграемся, выкладывайте еще, очень интер...   Feb 25 2014, 02:31
- - Marusis   Незнаю, будет ли вам интересен и полезен http://mg...   Apr 21 2014, 10:00


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th September 2025 - 00:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.14 секунд с 7
ELECTRONIX ©2004-2016