В этом примере показано, как линеаризовать структурную модель камертона и вычислить время и частотную характеристику, когда это подвергается импульсу на одном из зубцов. Эта загрузка приводит к поперечной вибрации зубцов и осевой вибрации указателя конца на той же частоте. Для получения дополнительной информации о структурной модели, смотрите Структурную Динамику Камертона (Partial Differential Equation Toolbox).
Этот пример требует программного обеспечения Partial Differential Equation Toolbox™.
Используя Partial Differential Equation Toolbox, создайте структурную модель камертона.
Используйте createpde
(Partial Differential Equation Toolbox), чтобы создать структурную модель.
model = createpde('structural','transient-solid');
Импортируйте и постройте геометрию камертона.
importGeometry(model,'TuningFork.stl');
figure
pdegplot(model)
Задайте модуль Молодежи, отношение Пуассона и массовую плотность, чтобы смоделировать линейное эластичное существенное поведение. Задайте все физические свойства в сопоставимых модулях.
E = 210E9; nu = 0.3; rho = 8000; structuralProperties(model,'YoungsModulus',E, ... 'PoissonsRatio',nu, ... 'MassDensity',rho); generateMesh(model,'Hmax',0.005);
Идентифицируйте поверхности для применения граничных ограничений и загрузок путем графического вывода геометрии с метками поверхности.
figure('units','normalized','outerposition',[0 0 1 1]) pdegplot(model,'FaceLabels','on') view(-50,15) title('Geometry with Face Labels')
Первый режим вибрации зубцов составляет приблизительно 2 926 рад/с. Можно определить это значение модальным анализом (см. Структурную Динамику Камертона (Partial Differential Equation Toolbox)), или из Диаграммы Боде в разделе Linear Analysis этого примера.
Вычислите соответствующий период колебаний.
T = 2*pi/2926;
Добавьте граничные условия, чтобы предотвратить движение твердого тела при применении импульса к зубцу. Как правило, вы содержите камертон вручную или монтируете его на таблице. Упрощенное приближение к этому граничному условию фиксирует область около пересечения зубцов, и указатель (стоит 21 и 22).
structuralBC(model,'Face',[21,22],'Constraint','fixed');
Чтобы смоделировать импульсную нагрузку на зубец, примените загрузку давления в течение 2% основного периода колебания T
использование structuralBoundaryLoad
(Partial Differential Equation Toolbox). При помощи этого очень короткого импульса давления вы гарантируете, что только основной режим камертона взволнован. Задайте метку Pressure
использовать эту загрузку в качестве входа линеаризации.
Te = 0.02*T; structuralBoundaryLoad(model,'Face',11,'Pressure',5e6,'EndTime',Te,'Label','Pressure');
Установите начальные условия для модели с помощью structuralIC
(Partial Differential Equation Toolbox).
structuralIC(model,'Displacement',[0;0;0],'Velocity',[0;0;0]);
Для этой модели камертона вы хотите получить линейную модель из нагрузки давления на зубец к y-смещению совета зубца (столкнитесь 12), и x-смещение указателя конца (стоят 6).
Для этого сначала задайте входные параметры и выходные параметры линеаризовавшей модели в терминах структурной модели. Здесь, вход является давлением, заданным с structuralBoundaryLoad
(Partial Differential Equation Toolbox) и выходные параметры являются y и x степенями свободы поверхностей 12 и 6, соответственно.
linearizeInput(model,'Pressure'); linearizeOutput(model,'Face',12,'Component','y'); linearizeOutput(model,'Face',6,'Component','x');
Затем используйте linearize
(Partial Differential Equation Toolbox) команда, чтобы извлечь mechss
модель.
sys = linearize(model)
Sparse continuous-time second-order model with 26 outputs, 1 inputs, and 3240 degrees of freedom. Use "spy" and "showStateInfo" to inspect model structure. Type "properties('mechss')" for a list of model properties. Type "help mechssOptions" for available solver options for this model.
В линеаризовавшей модели используйте sys.OutputGroup
определять местоположение выходных параметров, сопоставленных с каждой поверхностью.
sys.OutputGroup
ans = struct with fields:
Face12_y: [1 2 3 4 5 6 7 8 9 10 11 12 13]
Face6_x: [14 15 16 17 18 19 20 21 22 23 24 25 26]
Выберите один узел из каждой выходной группы, чтобы создать модель с одним входом и двумя выходными параметрами.
sys = sys([1,14],:)
Sparse continuous-time second-order model with 2 outputs, 1 inputs, and 3240 degrees of freedom. Use "spy" and "showStateInfo" to inspect model structure. Type "properties('mechss')" for a list of model properties. Type "help mechssOptions" for available solver options for this model.
sys.OutputName = {'y tip','x base'};
Результирующая модель задана следующей системой уравнений:
Используйте spy
визуализировать разреженность mechss
модель sys
.
figure spy(sys)
Включите параллельные вычисления и выберите 'tfbdf3'
как решатель дифференциального алгебраического уравнения (DAE).
sys.SolverOptions.UseParallel = true;
sys.SolverOptions.DAESolver = 'trbdf3';
Используйте bode
вычислить частотную характеристику этой модели.
w = logspace(3,6,1000);
figure
bode(sys,w)
grid
title('Frequency Response from Pressure to Y Tip and X Base')
График ясно показывает, что зубец и указатель конца вибрируют на той же частоте. Первый режим приблизительно в 2 926 рад/с, и второй резонанс на частоте приблизительно в шесть раз выше.
Затем используйте lsim
получить импульсную характеристику линеаризовавшей модели камертона в течение 20 периодов основного режима. Чтобы ограничить ошибку из-за линейной интерполяции давления между выборками, используйте размер шага Te/10.
Давление подано для временного интервала [0 Te
].
ncycle = 20; Tf = ncycle*T; h = Te/10; t = 0:h:Tf; u = zeros(size(t)); u(t<=Te) = 5e6; y = lsim(sys,u,t);
Постройте поперечное смещение в совете зубца и осевое смещение указателя конца.
figure plot(t,y(:,1)) title('Transverse Displacement at Tine Tip') xlim([0,Tf]) xlabel('Time') ylabel('Y-Displacement') legend('Linearized model')
figure plot(t,y(:,2)) title('Axial Displacement at End of Handle') xlim([0,Tf]) ylabel('X-Displacement') xlabel('Time') legend('Linearized model')
showStateInfo
| spy
| mechss
| solve
(Partial Differential Equation Toolbox) | structuralBC
(Partial Differential Equation Toolbox) | structuralIC
(Partial Differential Equation Toolbox) | createpde
(Partial Differential Equation Toolbox) | linearize
(Partial Differential Equation Toolbox) | linearizeInput
(Partial Differential Equation Toolbox) | linearizeOutput
(Partial Differential Equation Toolbox)