12
Руководство пользователя
×

4.1 Стабилизация груза

В примере рассматривается стабилизация груза в требуемом положении. В начальный момент времени груз находится в состоянии покоя на заданном расстоянии от требуемого положения. К центру масс груза прикладывается управляющая сила, которая перемещает груз в требуемое положение. Схема рассматриваемой системы показана на рис.6.
 
 
Рис. 6. Схема стабилизации положения груза
 
Стабилизация положения груза осуществляется управляющей силой. Для управления используется классический регулятор следующего вида:
где  –  коэффициент управляющей силы,
 –  параметр управления;
 – рассогласование по положению;
 – производная рассогласования;
 – коэффициенты регулятора.
Исходные данные для расчета:
      масса груза 1 [kg],
      радиус груза 0.1 [m],
      коэффициент управляющей силы  1 [N],
      требуемое положение груза 1 [m],
      период обновления сигнала системы управления 0.001 [s],
      коэффициент усиления системы управления   -30  [s/m],
      коэффициент усиления системы управления  -1000 [1/m].
Моделирование управляющей силы может производиться как непосредственно в проекте EULER, так и в отдельной модели, созданной в MATLAB/Simulink и включенной в проект EULER.
Файл stabG_EULER.elr содержит модель стабилизации груза. Моделирование управляющей силы выполняется непосредственно в EULER (текст файла приведен ниже).
 
 
Текст проекта stabG_EULER.elr
// Стабилизация положения груза в заданной точке.
//
// Датчик сигнала управления
sensor signal "сигнал управления"=var( 0 );
//
// Инерциальное звено
color color_base=index( 5 );
body base=body( color = color_base );
set ground = base;
//
// Управляемый груз
scalar mG "масса груза"=1 [kg];
scalar Ku "коэффициент управляющей силы"=1 [N];
point point1=point( 0 [ m ], 0 [ m ], 0 [ m ] );
solid solid1=sphere( point1, 0.1 [ m ], mass = mG );
color color_G=index( 63 );
body G=body( color = color_G );
body G < ( solid1 );
joint joint1=translational( base, G, point1, projectX );
sensor Fu "значение управляющей силы"=signal*Ku;
force force_Fu "управляющая сила"=force( G, point1, projectX, Fu, list(  ) );
//
sensor X "положение груза"=joint1.s;
sensor Xt "скорость груза"=derivative( X );
//
// Система управления:
scalar XP "требуемое положение груза"=1 [m];
//        параметры рассогласования
sensor d "рассогласование"=X-XP;
sensor dt "производная рассогласования"=Xt;
//        алгоритм управления
scalar Kd=-30 [s/m];
scalar Kp=-1000 [1/m];
sensor signal_1=Kd*dt+Kp*d;
//
// Переопределение сигнала управления
sensor signal_2=currentValue( signal, signal_1 );
//
command dynam_RK4_p001 "команда расчета движения"=constRK4( 1.00000e+000 [ s ], 1.00000e-003 [ s ] );
//
 
/\///////////////////////////////////////////////////////////////////////////////////
/\   Список главных команд;
set dynamics = dynam_RK4_p001;
 
/\///////////////////////////////////////////////////////////////////////////////////
/\   Единицы измерения;
set units = SI;
 
 
Файл stabG_EULER_Simulink.elr (текст файла приведен ниже) содержит модель стабилизации груза с моделированием управляющей силы в DLL-модуле, который создан в MATLAB/Simulink. Входными данными этого модуля управления являются данные о движении груза ( – координата груза и  – производная координаты груза). В соответствии с представленным алгоритмом в модуле формируется сигнал управления и его значение в виде выходного параметра возвращается в общую модель стабилизации груза (в программный комплекс EULER). Схема (алгоритм расчета) модуля управления в программном комплексе MATLAB/Simulink представлена на рис.7.
 
 
Рис. 7. Схема управляющего модуля в программном комплексе MATLAB/Simulink
 
 
Текст проекта stabG_EULER_Simulink.elr
// Стабилизация положения груза в заданной точке.
//
// Датчик сигнала управления
sensor signal "сигнал управления"=var( 0 );
//
// Инерциальное звено
color color_base=index( 5 );
body base=body( color = color_base );
set ground = base;
//
// Управляемый груз
scalar mG "масса груза"=1 [kg];
scalar Ku "коэффициент управляющей силы"=1 [N];
point point1=point( 0 [ m ], 0 [ m ], 0 [ m ] );
solid solid1=sphere( point1, 0.1 [ m ], mass = mG );
color color_G=index( 63 );
body G=body( color = color_G );
body G < ( solid1 );
joint joint1=translational( base, G, point1, projectX );
sensor Fu "значение управляющей силы"=signal*Ku;
force force_Fu "управляющая сила"=force( G, point1, projectX, Fu, list(  ) );
//
sensor X "положение груза"=joint1.s;
sensor Xt "скорость груза"=derivative( X );
//
 
// Система управления:
//        алгоритм управления
string U="sensor X [ m ], sensor Xt [ m / s ]";
string Y="sensor signal [ ]";
sensor signal_1=Simulink(Gruz.DLL, U, Y, "", 1e-3 [ s ]);
//
 
// Переопределение сигнала управления
sensor signal_2=currentValue( signal, signal_1 );
//
command dynam_RK4_p001 "команда расчета движения"=constRK4( 1.00000e+000 [ s ], 1.00000e-003 [ s ] );
//
 
/\///////////////////////////////////////////////////////////////////////////////////
/\   Список главных команд;
set dynamics = dynam_RK4_p001;
 
/\///////////////////////////////////////////////////////////////////////////////////
/\   Единицы измерения;
set units = SI;
 
 
В результате расчета стабилизации положения груза при помощи моделей stabG_EULER.elr и stabG_EULER_SimInTech.elr получены совпадающие результаты.
На рис.8-9 представлены графики управляющей силы и положения груза, полученные при расчете модели stabG_EULER.elr, на рис.10 – совпадающие графики положения груза, полученные при расчете моделей stabG_EULER.elr и stabG_EULER_SimInTech.elr.
 
 
Рис. 8. Управляющая сила
 
 
Рис. 9. Положение груза, рассчитанное в модели stabG_EULER.elr
 
Рис. 10. Совпадающие результаты расчета положения груза в моделях stabG_EULER_SimInTech.elr и stabG_EULER.elr