exponenta event banner

Модель экскаваторного манипулятора в качестве гибкого корпуса

Блок гибкого тела с уменьшенным порядком моделирует деформируемое тело на основе модели с уменьшенным порядком, которая характеризует геометрические и механические свойства тела. Основные данные, импортированные из модели сокращенного заказа, включают:

  • Список троек координат, задающих положение всех исходных точек кадра интерфейса относительно общего опорного кадра.

  • Симметричная матрица жесткости, описывающая упругие свойства гибкого тела.

  • Матрица симметричной массы, описывающая инерционные свойства гибкого тела.

Существует несколько способов создания данных сокращенного порядка, необходимых для этого блока. Как правило, подструктуру (или вираж) генерируют с помощью инструментов анализа конечных элементов (КЭА).

В этом примере используется Toolbox™ Дифференциальное уравнение в частных производных (Partial Differential Equation) для создания модели с уменьшенным порядком для гибкого манипулятора, такого как манипулятор экскаватора или задний лап. Начните с CAD-геометрии манипулятора, создайте конечноэлементную сетку, примените метод субструктурирования КЭА Крейга-Бэмптона и создайте модель с уменьшенным порядком. Модель sm_flexible_dipper_arm использует данные сокращенного порядка из этого примера. В модели рычаг погружения монтируется поверх вращающейся башни как часть испытательной установки. Дополнительные сведения см. в разделе Гибкий манипулятор.

Шаг 1. Определение геометрии и свойств материала манипулятора

Файл sm_flexible_dipper_arm.STL содержит триангуляцию, определяющую геометрию САПР манипулятора. Для просмотра геометрии, сохраненной в этом файле, используйте функции MATLAB ®stlread и trisurf:

stlFile = 'sm_flexible_dipper_arm.STL';
figure
trisurf(stlread(stlFile))
axis equal

Кронштейн погружателя выполнен из стали. Для представления свойств материала задайте следующие значения для модуля Юнга, коэффициента Пуассона и плотности массы:

E = 200e9;     % Young's modulus in Pa
nu = 0.26;     % Poisson's ratio (nondimensional)
rho = 7800;    % Mass density in kg/m^3

Шаг 2: Определение местоположения кадров интерфейса

Рычаг погружения имеет три рамки интерфейса, в которых можно соединить другие элементы Simscape™ Multibody™, такие как соединения, зависимости, силы и датчики:

  • Точка соединения цилиндра, в которой рычаг соединяется с гидравлическим цилиндром, приводящим рычаг в действие вертикально.

  • Точка соединения ковша, где рычаг соединяется с ковшем экскаватора.

  • Точка опоры, где рычаг соединяется со стрелой экскаватора.

Положения всех источников рамок интерфейса задаются в метрах относительно одной и той же общей опорной рамки, используемой геометрией САПР.

origins = [-0.500  0      0      % Frame 1: Cylinder connection point
            1.500  0      0      % Frame 2: Bucket connection point
            0     -0.130  0];    % Frame 3: Fulcrum point
numFrames = size(origins,1);

Шаг 3: Создание сетки конечных элементов

Чтобы создать сетку для манипулятора, сначала вызовите createpde(Панель инструментов дифференциальных уравнений в частных производных), которая создает структурную модель для модального анализа твердотельной (3-D) задачи. После импорта геометрии и свойств материала рычага, generateMesh(Панель инструментов дифференциальных уравнений в частных производных) создает сетку.

feModel = createpde('structural','modal-solid');
importGeometry(feModel,stlFile);
structuralProperties(feModel, ...
    'YoungsModulus',E, ...
    'PoissonsRatio',nu, ...
    'MassDensity',rho);
generateMesh(feModel, ...
    'GeometricOrder','quadratic', ...
    'Hmax',0.2, ...
    'Hmin',0.02);

Шаг 4: Настройка многоточечных ограничений для кадров интерфейса

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

В этом примере используется многоточечное ограничение (MPC) для сохранения шести степеней свободы в каждом граничном узле. Чтобы определить геометрические области (такие как грани, ребра или вершины) для связи с каждым MPC, сначала постройте график геометрии плеча с помощью функции pdegplot(Панель инструментов дифференциального уравнения в частных производных):

figure
pdegplot(feModel,'FaceLabels','on','FaceAlpha',0.5)

Можно масштабировать, поворачивать и панорамировать это изображение для определения меток граней, соответствующих граничным узлам. Эти грани определяют MPC, связанные с граничными узлами в рычаге погружения:

  • Точка соединения цилиндра: грань 1

  • Точка соединения ковша: грань 27

  • точка опоры: грань 23

faceIDs = [1,27,23];    % List in the same order as the interface frame origins

Чтобы проверить эти значения, постройте график сетки и выделите выбранные грани:

figure
pdemesh(feModel,'FaceAlpha',0.5)
hold on
colors = ['rgb' repmat('k',1,numFrames-3)];
assert(numel(faceIDs) == numFrames);
for k = 1:numFrames
    nodeIdxs = findNodes(feModel.Mesh,'region','Face',faceIDs(k));
    scatter3( ...
        feModel.Mesh.Nodes(1,nodeIdxs), ...
        feModel.Mesh.Nodes(2,nodeIdxs), ...
        feModel.Mesh.Nodes(3,nodeIdxs), ...
        'ok','MarkerFaceColor',colors(k))
    scatter3( ...
        origins(k,1), ...
        origins(k,2), ...
        origins(k,3), ...
        80,colors(k),'filled','s')
end
hold off

Вызовите функцию structuralBC(Панель инструментов дифференциальных уравнений в частных производных) для определения MPC для граничных узлов в этих гранях:

for k = 1:numFrames
    structuralBC(feModel, ...
        'Face',faceIDs(k), ...
        'Constraint','multipoint', ...
        'Reference',origins(k,:));
end

Шаг 5: Создание модели уменьшенного порядка

Функция reduce(Панель инструментов дифференциальных уравнений в частных производных) применяет метод уменьшения порядка Крейга-Бэмптона и сохраняет все режимы фиксированного интерфейса до частоты 104 радиана в секунду.

rom = reduce(feModel,'FrequencyRange',[0 1e4]);

сохранять результаты сокращения в структуре данных; arm. Транспонировать ReferenceLocations для учета различных соглашений о компоновке, используемых панелью инструментов дифференциальных уравнений в частных производных и Simscape Multibody.

arm.P = rom.ReferenceLocations';  % Interface frame locations (n x 3 matrix)
arm.K = rom.K;                    % Reduced stiffness matrix
arm.M = rom.M;                    % Reduced mass matrix

Функция computeModalDampingMatrix, которая определена в нижней части этой страницы, вычисляет уменьшенную модальную матрицу демпфирования с коэффициентом демпфирования 0,05:

dampingRatio = 0.05;
arm.C = computeModalDampingMatrix(dampingRatio,rom.K,rom.M);

Граничные узлы в модели с уменьшенным порядком должны быть указаны в том же порядке, что и соответствующие фреймы интерфейса в блоке. Этот порядок задается строками массива origins. Если порядок MPC отличается от порядка, указанного в originsперестановка строк и столбцов различных матриц таким образом, чтобы они соответствовали исходному порядку.

frmPerm = zeros(numFrames,1);    % Frame permutation vector
dofPerm = 1:size(arm.K,1);       % DOF permutation vector

assert(size(arm.P,1) == numFrames);
for i = 1:numFrames
    for j = 1:numFrames
        if isequal(arm.P(j,:),origins(i,:))
            frmPerm(i) = j;
            dofPerm(6*(i-1)+(1:6)) = 6*(j-1)+(1:6);
            continue;
        end
    end
end
assert(numel(frmPerm) == numFrames);
assert(numel(dofPerm) == size(arm.K,1));

arm.P = arm.P(frmPerm,:);
arm.K = arm.K(dofPerm,:);
arm.K = arm.K(:,dofPerm);
arm.M = arm.M(dofPerm,:);
arm.M = arm.M(:,dofPerm);
arm.C = arm.C(dofPerm,:);
arm.C = arm.C(:,dofPerm);

Шаг 6: Импорт данных сокращенного заказа

Модель sm_flexible_dipper_arm использует структуру данных arm для настройки параметров блока «Гибкое твердое тело с уменьшенным порядком». В блоке эти параметры импортируют данные уменьшенного порядка:

  • Истоки: arm.P

  • Матрица жесткости: arm.K(1:24,1:24)

  • Массовая матрица: arm.M(1:24,1:24)

  • Демпфирующая матрица: arm.C(1:24,1:24)

Дополнительные сведения см. в разделе Гибкий манипулятор.

Вычисление матрицы модального демпфирования

Эта функция вычисляет модальную демпфирующую матрицу, связанную с матрицей жесткости. K и матрица массы M. Эта функция применяет один коэффициент скалярного демпфирования ко всем гибким (нежестким) нормальным режимам, связанным с K и M.

function C = computeModalDampingMatrix(dampingRatio,K,M)

% To avoid numerical issues (such as complex eigenvalues with very small
% imaginary parts), make the matrices exactly symmetric.

    K = (K+K')/2;    % Stiffness matrix
    M = (M+M')/2;    % Mass matrix

% Compute the eigen-decomposition associated with the mass and stiffness
% matrices, sorting the eigenvalues in ascending order and permuting
% the corresponding eigenvectors.

    [V,D] = eig(K,M);
    [d,sortIdxs] = sort(diag(D));
    V = V(:,sortIdxs);

% Due to small numerical errors, the six eigenvalues associated with the
% rigid-body modes may not be exactly zero. To avoid numerical issues,
% check that the first six eigenvalues are close enough to zero. Then
% replace them with exact 0 values.

    assert(all(abs(d(1:6))/abs(d(7)) < 1e-9),'Error due to "zero" eigenvalues.');
    d(1:6) = 0;

% Vectors of generalized masses and natural frequencies

    MV = M*V;
    generalizedMasses = diag(V'*MV);
    naturalFrequencies = sqrt(d);

% Compute the modal damping matrix associated with K and M

    C = MV * diag(2*dampingRatio*naturalFrequencies./generalizedMasses) * MV';

end

См. также

| | | (Панель инструментов дифференциального уравнения в частных производных) | (Панель инструментов дифференциальных уравнений в частных производных) | (Панель инструментов дифференциальных уравнений в частных производных) | (Панель инструментов дифференциальных уравнений в частных производных) | (Панель инструментов дифференциальных уравнений в частных производных) | (Панель инструментов дифференциальных уравнений в частных производных) | (Панель инструментов дифференциальных уравнений в частных производных)

Связанные темы