Skip to content

Commit 954853b

Browse files
committed
Initial commit v1p*8
1 parent 6f15522 commit 954853b

File tree

145 files changed

+1313
-74
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

145 files changed

+1313
-74
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
%% Script to plot results for all blocks of a certain type
2+
3+
% Model to be searched
4+
modelName = 'Excavator_Complete';
5+
6+
% Search parameters
7+
f = Simulink.FindOptions('FollowLinks',true,'LookUnderMasks','All',...
8+
'MatchFilter', @Simulink.match.activeVariants);
9+
10+
% List of reference blocks and variable names
11+
refBlks = {...
12+
'SimscapeFluids_lib/Isothermal Liquid/Valves & Orifices/Directional Control Valves/Check Valve (IL)','mdot_A';
13+
'SimscapeFluids_lib/Isothermal Liquid/Valves & Orifices/Pressure Control Valves/Pressure Relief Valve (IL)','mdot_A'};
14+
15+
% Load libraries where reference blocks live
16+
load_system('SimscapeFluids_lib')
17+
18+
% Loop over list of reference blocks
19+
for rb_i = 1:size(refBlks,1)
20+
21+
% Create one figure per entry in refBlks
22+
figure(rb_i)
23+
ax_h = gca;
24+
refBlkName = get_param(refBlks{rb_i,1},'Name');
25+
crInds = findstr(refBlkName,char(10));
26+
refBlkName(crInds) = ' ';
27+
28+
% Find all blocks in model that have Reference Block type
29+
bh = Simulink.findBlocks(modelName,'ReferenceBlock',refBlks{rb_i,1},f);
30+
31+
% Loop over blocks that were found
32+
for i=1:length(bh)
33+
34+
% Get path through simlog to plot variable
35+
blkName = get_param(bh(i),'Name');
36+
37+
% Eliminate carriage returns
38+
crInds = findstr(blkName,char(10));
39+
blkName(crInds) = ' ';
40+
pth = getfullname(bh(i));
41+
repStr = modelName;
42+
pth = pth(length(repStr)+2:end);
43+
nodeData = get(simOut.simlog_Excavator_Complete,pth);
44+
varData = get(nodeData,refBlks{rb_i,2});
45+
46+
% Plot results
47+
plot(ax_h,varData.series.time,varData.series.values,'DisplayName',blkName)
48+
hold(ax_h,'on');
49+
end
50+
hold(ax_h,'off');
51+
legend(ax_h,'Location','Best')
52+
title(ax_h,[refBlkName ', ' strrep(refBlks{rb_i,2},'_','\_')])
53+
end
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
%% Excavator Design with Simscape(TM): Model Soil Loads on Bucket with Mevea
2+
%
3+
% <<Excavator_Mevea_Overview_Image.png>>
4+
%
5+
% (<matlab:web('Excavator_Design_Overview.html') return to Excavator Design Overview>)
6+
%
7+
% This example models an excavator acting against soil loads modeled using
8+
% discrete element modeling in Mevea software. The motion of the
9+
% actuators is prescribed and the simulation calculates the amount of force
10+
% or torque required to execute the motion. Cosimulation is used to
11+
% connect the Simscape Multibody model to Mevea.
12+
%
13+
% Running this model requires Mevea software. Open the Simulink model,
14+
% start the simulation in Simulink, and when Mevea software opens press the
15+
% Start button. Both tools will be open simultaneously and the results can
16+
% be seen in both animation windows.
17+
%
18+
% Copyright 2022-2024 The MathWorks, Inc.
19+
20+
%% Model
21+
%
22+
% <matlab:open_system('Excavator_Mevea_Bucket'); Open Model>
23+
24+
open_system('Excavator_Mevea_Bucket')
25+
ann_h = find_system('Excavator_Mevea_Bucket','MatchFilter',@Simulink.match.allVariants,'FindAll', 'on','type','annotation','Tag','ModelFeatures');
26+
for i=1:length(ann_h)
27+
set_param(ann_h(i),'Interpreter','off');
28+
end
29+
30+
%% Excavator Subsystem
31+
%
32+
% <matlab:open_system('Excavator_Mevea_Bucket');open_system('Excavator_Mevea_Bucket/Excavator','force'); Open Subsystem>
33+
34+
set_param('Excavator_Mevea_Bucket/Excavator','LinkStatus','none')
35+
open_system('Excavator_Mevea_Bucket/Excavator','force')
36+
37+
%% Excavator Machine Subsystem
38+
%
39+
% <matlab:open_system('Excavator_Mevea_Bucket');open_system('Excavator_Mevea_Bucket/Excavator/Machine','force'); Open Subsystem>
40+
41+
set_param('Excavator_Mevea_Bucket/Excavator/Machine','LinkStatus','none')
42+
open_system('Excavator_Mevea_Bucket/Excavator/Machine','force')
43+
44+
%% Excavator Mevea Loads
45+
%
46+
% <matlab:open_system('Excavator_Mevea_Bucket');open_system('Excavator_Mevea_Bucket/Excavator/Machine/Mevea','force'); Open Subsystem>
47+
48+
set_param('Excavator_Mevea_Bucket/Excavator/Machine/Mevea','LinkStatus','none')
49+
open_system('Excavator_Mevea_Bucket/Excavator/Machine/Mevea','force')
50+
51+
%% Excavator Hydraulics Subsystem
52+
%
53+
% <matlab:open_system('Excavator_Mevea_Bucket');open_system('Excavator_Mevea_Bucket/Excavator/Hydraulics','force'); Open Subsystem>
54+
55+
set_param('Excavator_Mevea_Bucket/Excavator/Hydraulics','LinkStatus','none')
56+
open_system('Excavator_Mevea_Bucket/Excavator/Hydraulics','force')
57+
58+
%% Excavator Hydraulic Valve Block (Left) Subsystem
59+
%
60+
% <matlab:open_system('Excavator_Mevea_Bucket');open_system('Excavator_Mevea_Bucket/Excavator/Hydraulics/ValveBlocks/LeftValveBlock','force'); Open Subsystem>
61+
62+
set_param('Excavator_Mevea_Bucket/Excavator/Hydraulics/ValveBlocks/LeftValveBlock','LinkStatus','none')
63+
open_system('Excavator_Mevea_Bucket/Excavator/Hydraulics/ValveBlocks/LeftValveBlock','force')
64+
65+
%% Excavator Hydraulic Boom Cylinder Subsystem
66+
%
67+
% <matlab:open_system('Excavator_Mevea_Bucket');open_system('Excavator_Mevea_Bucket/Excavator/Hydraulics/Functions/Boom','force'); Open Subsystem>
68+
69+
set_param('Excavator_Mevea_Bucket/Excavator/Hydraulics/Functions/Boom','LinkStatus','none')
70+
open_system('Excavator_Mevea_Bucket/Excavator/Hydraulics/Functions/Boom','force')
71+
72+
%% Excavator Controller
73+
%
74+
% <matlab:open_system('Excavator_Mevea_Bucket');open_system('Excavator_Mevea_Bucket/Controller/Function%20Commander','force'); Open Subsystem>
75+
76+
set_param('Excavator_Mevea_Bucket/Controller/Function Commander','LinkStatus','none')
77+
open_system('Excavator_Mevea_Bucket/Controller/Function Commander','force')
78+
79+
%% Dig Cycle Test
80+
%
81+
% Simulate a complete dig cycle and plot operator commands, actuator
82+
% positions, cylinder pressures, and the load on the bucket due to the
83+
% soil.
84+
85+
mdl = 'Excavator_Mevea_BucketDriveline';
86+
87+
simOut = sim(mdl);
88+
89+
Excavator_Complete_plot1operatorcmds
90+
Excavator_Complete_plot2position
91+
Excavator_Complete_plot3pressure
92+
Excavator_Mevea_plot4loadsoil
93+
Excavator_Energy_Calc
94+
95+
96+
%%
97+
98+
%clear all
99+
close all
100+
bdclose all
101+
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
%% Excavator Design with Simscape(TM): Model Soil Loads on Bucket and Ground Interaction with Mevea
2+
%
3+
% <<Excavator_Mevea_Overview_Image.png>>
4+
%
5+
% (<matlab:web('Excavator_Design_Overview.html') return to Excavator Design Overview>)
6+
%
7+
% This example models an excavator acting against soil loads modeled using
8+
% Mevea software. The motion of the actuators is prescribed and the
9+
% simulation calculates the amount of force or torque required to execute
10+
% the motion. Cosimulation is used to connect the Simscape Multibody model
11+
% to Mevea.
12+
%
13+
% Additionally, terrain interaction with the tracks is modeled in Mevea.
14+
% An electric CVT is modeled in Simscape, and the shaft from that
15+
% powertrain model is connected via cosimulation to a shaft in the Mevea
16+
% model that controls the movement of the tracks. The tracks interact with
17+
% deformable terrain modeled in Mevea.
18+
%
19+
% Running this model requires Mevea software. Open the Simulink model,
20+
% start the simulation in Simulink, and when Mevea software opens press the
21+
% Start button. Both tools will be open simultaneously and the results can
22+
% be seen in both animation windows.
23+
%
24+
% Copyright 2022-2025 The MathWorks, Inc.
25+
26+
%% Model
27+
%
28+
% <matlab:open_system('Excavator_Mevea_BucketDriveline'); Open Model>
29+
30+
open_system('Excavator_Mevea_BucketDriveline')
31+
ann_h = find_system('Excavator_Mevea_BucketDriveline','MatchFilter',@Simulink.match.allVariants,'FindAll', 'on','type','annotation','Tag','ModelFeatures');
32+
for i=1:length(ann_h)
33+
set_param(ann_h(i),'Interpreter','off');
34+
end
35+
36+
%% Excavator Subsystem
37+
%
38+
% <matlab:open_system('Excavator_Mevea_BucketDriveline');open_system('Excavator_Mevea_BucketDriveline/Excavator','force'); Open Subsystem>
39+
40+
set_param('Excavator_Mevea_BucketDriveline/Excavator','LinkStatus','none')
41+
open_system('Excavator_Mevea_BucketDriveline/Excavator','force')
42+
43+
%% Excavator Machine Subsystem
44+
%
45+
% <matlab:open_system('Excavator_Mevea_BucketDriveline');open_system('Excavator_Mevea_BucketDriveline/Excavator/Machine','force'); Open Subsystem>
46+
47+
set_param('Excavator_Mevea_BucketDriveline/Excavator/Machine','LinkStatus','none')
48+
open_system('Excavator_Mevea_BucketDriveline/Excavator/Machine','force')
49+
50+
%% Excavator Mevea Loads
51+
%
52+
% <matlab:open_system('Excavator_Mevea_BucketDriveline');open_system('Excavator_Mevea_BucketDriveline/Excavator/Machine/Mevea','force'); Open Subsystem>
53+
54+
set_param('Excavator_Mevea_BucketDriveline/Excavator/Machine/Mevea','LinkStatus','none')
55+
open_system('Excavator_Mevea_BucketDriveline/Excavator/Machine/Mevea','force')
56+
57+
%% Excavator Hydraulics Subsystem
58+
%
59+
% <matlab:open_system('Excavator_Mevea_BucketDriveline');open_system('Excavator_Mevea_BucketDriveline/Excavator/Hydraulics','force'); Open Subsystem>
60+
61+
set_param('Excavator_Mevea_BucketDriveline/Excavator/Hydraulics','LinkStatus','none')
62+
open_system('Excavator_Mevea_BucketDriveline/Excavator/Hydraulics','force')
63+
64+
%% Excavator Hydraulic Valve Block (Left) Subsystem
65+
%
66+
% <matlab:open_system('Excavator_Mevea_BucketDriveline');open_system('Excavator_Mevea_BucketDriveline/Excavator/Hydraulics/ValveBlocks/LeftValveBlock','force'); Open Subsystem>
67+
68+
set_param('Excavator_Mevea_BucketDriveline/Excavator/Hydraulics/ValveBlocks/LeftValveBlock','LinkStatus','none')
69+
open_system('Excavator_Mevea_BucketDriveline/Excavator/Hydraulics/ValveBlocks/LeftValveBlock','force')
70+
71+
%% Excavator Hydraulic Boom Cylinder Subsystem
72+
%
73+
% <matlab:open_system('Excavator_Mevea_BucketDriveline');open_system('Excavator_Mevea_BucketDriveline/Excavator/Hydraulics/Functions/Boom','force'); Open Subsystem>
74+
75+
set_param('Excavator_Mevea_BucketDriveline/Excavator/Hydraulics/Functions/Boom','LinkStatus','none')
76+
open_system('Excavator_Mevea_BucketDriveline/Excavator/Hydraulics/Functions/Boom','force')
77+
78+
%% Excavator Controller
79+
%
80+
% <matlab:open_system('Excavator_Mevea_BucketDriveline');open_system('Excavator_Mevea_BucketDriveline/Controller/Function%20Commander','force'); Open Subsystem>
81+
82+
set_param('Excavator_Mevea_BucketDriveline/Controller/Function Commander','LinkStatus','none')
83+
open_system('Excavator_Mevea_BucketDriveline/Controller/Function Commander','force')
84+
85+
%% Dig Cycle Test
86+
%
87+
% Simulate a complete dig cycle and plot operator commands, actuator
88+
% positions, cylinder pressures, and the load on the bucket due to the
89+
% soil.
90+
91+
mdl = 'Excavator_Mevea_BucketDriveline';
92+
93+
simOut = sim(mdl);
94+
95+
Excavator_Complete_plot1operatorcmds
96+
Excavator_Complete_plot2position
97+
Excavator_Complete_plot3pressure
98+
Excavator_Mevea_plot4loadsoil
99+
Excavator_Energy_Calc
100+
101+
%%
102+
103+
%clear all
104+
close all
105+
bdclose all
106+

0 commit comments

Comments
 (0)