How do I change the mechanical properties of the cable in a belt-pulley system in Simscape Multibody?
21 ビュー (過去 30 日間)
古いコメントを表示
Hi guys, sorry to bother you, but I am not able to solve this system: I need to simulate a transmission with a belt-pulley system, where I can change the mechanical properties of the belt. Multibody is not able to make me do these changes, thus I built the pulley system using the Foundation Library. As you can see in the image, now I am trying to connect the Multibody part with the Foundation one, but I cannot understand how to connect these ports. Am I missing something? Can you help me please? I put some notes in the image to a better understanding of what I did
PS how the transmission works: The system consists of a tube with two perfectly equal revolute joints at each end, connected by a cross pulley system. If I apply a torque to one of the joints, this opens by a number of degrees and in the simulation I would see that the other joint also opens by the same amount.
1 件のコメント
Yifeng Tang
2024 年 11 月 20 日 15:00
Try connect the two C ports to a rotational reference.
I also wonder whether you will need some mass in your "pulley line". See this "Cable" block from the Driveline library:
Maybe you can use that directly? Sounds like it's easier to parameterize. Physics the same as what you have.
回答 (1 件)
Pavl M.
2024 年 11 月 13 日 10:21
These are codes produced by blend of Matlab AI helper and Copilot AI by up to 1/2 hour of training / tuning it from prompt (my work as prompt engineer + AI work, only in this scope experiment).
% Example setup for connecting Multibody and Foundation Library components
% Define the Multibody revolute joint
revoluteJoint = simscape.multibody.RevoluteJoint;
% Define the Foundation Library component (e.g., a rotational spring-damper)
rotationalSpringDamper = simscape.foundation.mechanical.rotational.springdamper;
% Connect the rotational port of the revolute joint to the rotational port of the spring-damper
revoluteJoint.R = rotationalSpringDamper.R;
% Set the mechanical properties of the spring-damper
rotationalSpringDamper.Stiffness = 100; % Example stiffness value
rotationalSpringDamper.Damping = 10; % Example damping value
% Add the components to the model and connect them
model = simscape.multibody.Model;
model.addComponent(revoluteJoint);
model.addComponent(rotationalSpringDamper);
model.connect(revoluteJoint.R, rotationalSpringDamper.R);
% Define the rotational spring-damper component
rotationalSpringDamper = simscape.foundation.mechanical.rotational.springdamper;
% Set the mechanical properties
rotationalSpringDamper.Stiffness = 100; % Example stiffness value (N*m/rad)
rotationalSpringDamper.Damping = 10; % Example damping value (N*m*s/rad)
% Define the pulley component with inertia
pulley = simscape.foundation.mechanical.rotational.inertia;
pulley.Inertia = 0.01; % Example inertia value (kg*m^2)
% Define the belt component with friction
belt = simscape.foundation.mechanical.translational.friction;
belt.FrictionCoefficient = 0.5; % Example friction coefficient
% Add the components to the model and connect them
model = simscape.multibody.Model;
model.addComponent(rotationalSpringDamper);
model.addComponent(pulley);
model.addComponent(belt);
model.connect(rotationalSpringDamper.R, pulley.R);
model.connect(belt.T, pulley.T);
% Define the model parameters
stiffness_values = linspace(50, 150, 10); % Example range for stiffness
damping_values = linspace(5, 15, 10); % Example range for damping
% Initialize arrays to store results
output_variation = zeros(length(stiffness_values), length(damping_values));
% Loop over all combinations of stiffness and damping values
for i = 1:length(stiffness_values)
for j = 1:length(damping_values)
% Set the current parameter values
stiffness = stiffness_values(i);
damping = damping_values(j);
% Run the simulation with the current parameters
% (Assume simulate_system is a function that runs your model and returns the output)
output = simulate_system(stiffness, damping);
% Store the output variation
output_variation(i, j) = output;
end
end
% Analyze the results (e.g., using a heatmap)
figure;
heatmap(damping_values, stiffness_values, output_variation);
xlabel('Damping');
ylabel('Stiffness');
title('Sensitivity Analysis of CNC Machinery System');
% Define the dynamics of the Multibody part
% State variables: x1, x2, x3, x4, x5
% Non-linear dynamics: x_dot = f(x, t)
% Define the state-space representation of the Multibody part
A = [0.1 -0.2 0.3 0 0; 0 0.2 -0.1 0 0; 0.2 0 0 -0.1 0; 0 0 0.1 0 -0.2; 0 0 0 0.1 0.2];
B = [1; 0; 0; 0; 0];
C = [1 0 0 0 0];
D = 0;
% Define the dynamics of the Foundation part
% State variables: y1, y2, y3, y4, y5
% Non-linear dynamics: y_dot = g(y, t)
% Define the state-space representation of the Foundation part
A_foundation = [0.3 -0.1 0.2 0 0; 0.1 0 -0.2 0 0; 0.2 0.1 0 -0.1 0; 0 0 0.1 0 -0.2; 0 0 0 0.1 0.2];
B_foundation = [1; 0; 0; 0; 0];
C_foundation = [1 0 0 0 0];
D_foundation = 0;
% Connect the output of the Multibody part to the input of the Foundation part
output_multibody = x5; % Output port of the Multibody part
input_foundation = y3; % Input port of the Foundation part
% Simulate the connected system
t = 0:0.1:10; % Time vector
x0 = [1; 2; 3; 0; 0]; % Initial state of the Multibody part
y0 = [0; 0; 0; 0; 0]; % Initial state of the Foundation part
% Define the differential equations for the connected system dynamics
dxdt = @(t, x) A*x + B*output_multibody; % Dynamics of the Multibody part
dydt = @(t, y) A_foundation*y + B_foundation*input_foundation; % Dynamics of the Foundation part
% Solve the differential equations for the connected system
[~, x] = ode45(dxdt, t, x0);
[~, y] = ode45(dydt, t, y0);
% Visualize the simulation results or perform further analysis as needed
Let me know which AI produced the solution path more optimal.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Assembly についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!