4.1 Стабилизация груза
Данный пример демонстрирует расчет в программном комплексе EULER с использованием внешнего управляющего сигнала. Управляющий сигнал формируется в DLL-библиотеке, подготовленной по алгоритму модели в программной среде SimInTech.
В примере рассматривается стабилизация груза в требуемом положении. В начальный момент времени груз находится в состоянии покоя на заданном расстоянии от требуемого положения. К центру масс груза прикладывается управляющая сила, которая перемещает груз в требуемое положение. Схема рассматриваемой системы показана на рис.31.

Рис. 31. Схема стабилизации положения груза
Стабилизация положения груза осуществляется управляющей силой. Для управления используется классический регулятор следующего вида:

где
– коэффициент управляющей силы,





Исходные данные для расчета:
− масса груза 1 [kg],
− радиус груза 0.1 [m],
− коэффициент управляющей силы
1 [N],

− требуемое положение груза 1 [m],
− период обновления сигнала системы управления 0.001 [s],
− коэффициент усиления системы управления
-30 [s/m],

− коэффициент усиления системы управления
-1000 [1/m].

Шаг интегрирования и обмена данными в примере установлен равным 0.001[s], шаг прогноза совпадает с шагом обмена, данными.
В расчета в качестве модели используется описанная на языке программного комплекса EULER модель stabG_EULER_SimInTech.elr (текст проекта приведен ниже), из которой данные о движении груза (
– координата груза и
– производная координаты груза) передаются в управляющий модуль. Управляющий модуль (DLL-библиотека), формирует в соответствии с запрограммированным алгоритмом сигнал, управляющий перемещением груза. Управляющий сигнал передается в расчетную модель программного комплекса EULER. Схема (алгоритм расчета) управляющего модуля в программном комплексе SimInTech представлена на рис.32.



Рис. 32. Схема управляющего модуля в программном комплексе SimInTech
Текст проекта stabG_EULER_SimInTech.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;
// алгоритм управления
string U="sensor d [ m ], sensor dt [ m / s ]";
string Y="sensor signal [ ]";
string P="Kd=-30 [s/m], Kp=-1000 [1/m]";
scalar step "шаг интегрирования"=1e-3 [ s ];
sensor signal_1=simintech(Gruz.DLL, U, Y, P, step, integrMethod = constRK4);
//
// Переопределение сигнала управления
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;