Hey all,(adsbygoogle = window.adsbygoogle || []).push({});

I've been trying to debug a model I've created of a 4DOF geared system within Simulink by reproducing the results in MATLAB going from a 2DOF upwards to verify the dynamics are acting correctly.

At the moment I am purely trying to model the stiffness between two gears, my equations are simply:

From my reduced Simulink model, applying an initial displacement of the pinion of 1e-3m I get this response (sorry its hard to make out):

Obviously from the figure above, you can see the equal amplitude oscillations with opposite direction (as these gears are not on the same shaft). I zoomed into the plot and verified that the initial condition of the gear is what I set it to be.

However, I've written the following MATLAB code to try and recreate the above, but to no avail. I'm not sure where I am going wrong here..

Mainscript

Code (Text):

clear all;

clc;

%% Defining global variables

global r_p r_g I_p I_g k_mb

% Assignment of ODE variable values:

r_p = 0.1297; % Pinion radius (m)

r_g = 0.1297; % Gear radius (m)

I_p = 0.0025; % Pinion inertia (kg.m^2)

I_g = 0.0025; % Gear inertia (kg.m^2)

k_mb = 100;

%==========================================================================

%% initial coditions for ode solver

%==========================================================================

z0 = [1e-3,0,0,0]; % Initial Conditions for ODE45.

t_span = [0 1]; % Timespan 0 - 1 second

opts = odeset('Reltol', 1e-3, 'AbsTol', 1e-3);

[t,z] = ode45(@ode2dof, t_span, z0, opts);

%==========================================================================

%% Post Processing

%==========================================================================

% Renaming the ode45 outputs for easier usage.

theta_2 = z(:,1);

theta_2d = z(:,2);

theta_3 = z(:,3);

theta_3d = z(:,4);

% Plotting

subplot(2,1,1)

plot(t,theta_2,t,theta_3), xlabel('Time (s)'), ...

ylabel('Angular Displacement (rad)'),title('Angular Displacements'),...

legend('theta 2','theta 3','Location', 'northwest'),grid;

subplot(2,1,2)

plot(t,theta_2d,t,theta_3d), xlabel('Time (s)'), ...

ylabel('Angular Velocity (rad/s)'), title('Angular Velocities'),...

legend('theta 2d', 'theta 3d','Location', 'northwest'),grid;

ODE Script

The output plot looks like this instead:Code (Text):

function zdot = ode2dof(t,z)

% defining global variables

global r_p r_g I_p I_g k_mb

%% S.S.E:

zdot(2) = ((k_mb*r_p)/I_p)*(z(3)*r_g-z(1)*r_p); % theta_2dd

zdot(4) = ((k_mb*r_g)/I_g)*(z(1)*r_p-z(3)*r_g); % theta_3dd

z(2) = zdot(1);

z(4) = zdot(3);

% Outputs

zdot = zdot';

Any help would be appreciated, as I'm lost at what's going on here even though its quite a simple system.

**Physics Forums - The Fusion of Science and Community**

The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

# Issues Replicating Simulink Model within MATLAB (2DOF)

Have something to add?

Draft saved
Draft deleted

Loading...

Similar Threads - Issues Replicating Simulink | Date |
---|---|

MATLAB sum loop issue | Feb 18, 2016 |

MATLAB plotting issue | Oct 21, 2015 |

Maxima questions and issues | Feb 11, 2015 |

Issue with ListPlot3D Mathematica | Feb 9, 2015 |

MATLAB 2010a surf bug? Can someone try to replicate? | Oct 25, 2010 |

**Physics Forums - The Fusion of Science and Community**