www.gusucode.com > Triplex_Pump_Simscape > Triplex_Pump_Simscape_R19a/ParamEst/sm_pump_triplex_sweep_chkv_pressSet.m

    % Code to sweep check valve pressure settings for the triplex pump
% example and plot results.
%
% Copyright 2017-2019 The MathWorks, Inc.

mdlname =  'sm_pump_triplex';
crp_set = linspace(30000,100000,8);
mxp_set = linspace(120000,120000*2,10);

set_param([mdlname '/Driver'],'popup_driver_type','Dyno');
set_param([mdlname '/Pump'],'chkv_press_set_popup_P','Tune at Run Time');
set_param(mdlname,'StopTime','0.2');

%% Store simulation inputs
clear simInput
run_num = 0;
for ci= 1:length(crp_set)
    for mi = 1:length(mxp_set)
        if (mxp_set(mi)>crp_set(ci))
            run_num = run_num+1;
            simInput(run_num) = Simulink.SimulationInput(mdlname);
            simInput(run_num) = ...
                simInput(run_num).setVariable('chkv_in_crkP_WKSP',...
                crp_set(ci));
            simInput(run_num) = ...
                simInput(run_num).setVariable('chkv_out_crkP_WKSP',...
                crp_set(ci));
            simInput(run_num) = ...
                simInput(run_num).setVariable('chkv_in_maxOpenP_WKSP',...
                mxp_set(mi));
            simInput(run_num) = ...
                simInput(run_num).setVariable('chkv_out_maxOpenP_WKSP',...
                mxp_set(mi));
        end
    end
end

%% Run tests
simOut = sim(simInput,'ShowProgress','on','UseFastRestart','on');

%% Get and plot results
run_num = 0;
clear simlog_test
for ci= 1:length(crp_set)
    for mi = 1:length(mxp_set)
        if (mxp_set(mi)>crp_set(ci))
            run_num = run_num+1;
            simlog_run = simOut(run_num).simlog_sm_pump_triplex;
            simlog_test(run_num).t = simlog_run.Pump.Plunger_1.Check_Valve_Outlet.flow_rate.series.time;
            simlog_test(run_num).q1 = simlog_run.Pump.Plunger_1.Check_Valve_Outlet.flow_rate.series.values('lpm');
            simlog_test(run_num).q2 = simlog_run.Pump.Plunger_2.Check_Valve_Outlet.flow_rate.series.values('lpm');
            simlog_test(run_num).q3 = simlog_run.Pump.Plunger_3.Check_Valve_Outlet.flow_rate.series.values('lpm');
            simlog_test(run_num).qA = simlog_run.Sensing_pq_Out.Flow_Rate_Sensor.q.series.values('lpm');
            simlog_test(run_num).wP = simlog_run.Pump.Crank_Bearing.Rz.w.series.values('rpm');
            simlog_test(run_num).crp = crp_set(ci);
            simlog_test(run_num).mxp = mxp_set(mi);
        end
    end
end

%% Plot Results
if ~exist('h9_sm_pump_triplex', 'var') || ...
        ~isgraphics(h9_sm_pump_triplex, 'figure')
    h9_sm_pump_triplex = figure('Name', 'sm_pump_triplex');
end
figure(h9_sm_pump_triplex)
clf(h9_sm_pump_triplex)

temp_colororder = get(gca,'defaultAxesColorOrder');

% Plot simulation results

%hold on
numplots = 0;
for i=1:length(simlog_test)
    numplots = numplots+1;
    simlog_t = simlog_test(i).t;
    simlog_q1 = simlog_test(i).q1;
    simlog_q2 = simlog_test(i).q2;
    simlog_q3 = simlog_test(i).q3;
    simlog_qA = simlog_test(i).qA;
    
    simlog_wP = simlog_test(i).wP;
    
    % Plot results
    simlog_handles(1) = subplot(2, 1, 1);
    hold on
    plot(simlog_t, simlog_qA,'LineWidth', 1)
    simlog_handles(2) = subplot(2, 1, 2);
    plot(simlog_t, simlog_wP, 'LineWidth', 1)
    hold on
    legendstr{numplots} = ['crp ' num2str(floor(simlog_test(i).crp)) '; mxp ' num2str(floor(simlog_test(i).mxp))];
end

simlog_handles(1) = subplot(2, 1, 1);hold off; box on
legend(legendstr)
title('Volumetric Flow Rate at Output')
ylabel('Flow Rate (lpm)')
simlog_handles(2) = subplot(2, 1, 2);hold off; box on
title('Speed (rpm)')
grid on

set_param([mdlname '/Driver'],'popup_driver_type','Motor');
set_param([mdlname '/Pump'],'chkv_press_set_popup_P','Set in Mask');
set_param(mdlname,'StopTime','0.7');