Моделируйте руку экскаваторной медведицы как гибкое тело

Блок Reduced Order Flexible Solid моделирует деформируемое тело на основе модели пониженного порядка, которая характеризует геометрические и механические свойства тела. Основные данные, импортированные из модели пониженного порядка, включают:

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

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

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

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

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

Шаг 1: Определите геометрию и свойства материала руки диппера

Файл sm_flexible_dipper_arm.STL содержит триангуляцию, которая задает геометрию CAD руки диппера. Чтобы просмотреть геометрию, хранящуюся в этом файле, используйте функции 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™, такие как соединения, ограничения, силы и датчики:

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

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

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

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

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: Создайте Конечный Элемент Mesh

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

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: Установите многоточечные ограничения для систем координат интерфейса

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

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

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

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

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 (Partial Differential Equation Toolbox) для определения MPC для граничных узлов в этих гранях:

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

Шаг 5: Сгенерируйте модель пониженного порядка

Функция reduce (Partial Differential Equation Toolbox) применяет метод сокращения порядка Крейга-Бэмптона и сохраняет все режимы фиксированного интерфейса до частоты 104 радианы в секунду.

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

Сохраните результаты сокращения в структуре данных arm. Транспонируйте ReferenceLocations матрица для расчета различных условий размещения, используемых Partial Differential Equation Toolbox и 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 для настройки параметров блока Reduction Order Flexible Solid. В блоке эти параметры импортируют данные пониженного порядка:

  • Источники: arm.P

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

  • Большая матрица: arm.M(1:24,1:24)

  • Матрица демпфирования: arm.C(1:24,1:24)

Для получения дополнительной информации смотрите Гибкую Руку Диппера.

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

Эта функция вычисляет модальную демпфирующую матрицу, связанную с матрицей жесткости K и большая матрица M. Эта функция применяет один скалярный коэффициент затухания ко всем гибким (нежестким) режимам normal mode, связанным с 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

См. также

| | | (Partial Differential Equation Toolbox) | (Набор Partial Differential Equation Toolbox производными) | (Набор Partial Differential Equation Toolbox производными) | (Набор Partial Differential Equation Toolbox производными) | (Набор Partial Differential Equation Toolbox производными) | (Набор Partial Differential Equation Toolbox производными) | (Набор Partial Differential Equation Toolbox)

Похожие темы