Simulink pump transfer function output remains zero
Show older comments
Hello,
I am working on a pump station model in MATLAB/Simulink with a 110 kW induction motor and centrifugal pump.
I derived the transfer function of the pump, but my system output stays at zero during simulation.
Transfer function:
Gp(s) = ...
Why does the output remain zero?
Is my model structure correct?
Thank you.
6 Comments
Nabiyev Muslim
on 26 Feb 2026 at 5:56
Sam Chak
on 26 Feb 2026 at 7:34
You did not post the transfer function Gp(s) or the complete Simulink model.
Assuming the input to the transfer function is nonzero (a constant), then mathematically, if Gp(s) contains a factor s in the numerator (i.e., a zero at s = 0), the output of the transfer function block will be zero for a constant (DC) input.
Nabiyev Muslim
on 26 Feb 2026 at 10:26
Nabiyev Muslim
on 26 Feb 2026 at 10:29
Edited: Nabiyev Muslim
on 26 Feb 2026 at 11:14
Nabiyev Muslim
on 26 Feb 2026 at 10:31
Nabiyev Muslim
on 26 Feb 2026 at 10:35
Answers (2)
I cannot help you with all aspects of the problem due to the lack of certain info, and the original plant system is nonlinearized with saturation blocks. However, you can explore the following design approach and adjust the master control gain Kc to ensure that the outputs of Ga and G2 remain within the signal constraints.
Since the four individual subsystems (G1 to G4) are stable 1st-order systems, the overall plant (Gp) behaves as a 4th-order system, similar to a 1st-order system. The auxiliary compensator (Ga) uses the characteristics of Gp to reshape its response. A PI controller (Gc) has been found to be sufficient for the control task. If a fuzzy controller is required in your research, the PI controller can be fuzzified to maintain the effectiveness of the designed control strategy.


% individual subsystems
G1 = tf(5, [0.003, 1]);
G2 = tf(29.6, [0.3, 1]);
G3 = tf(0.0622, [0.15, 1]);
G4 = tf(1000, [2, 1]);
G5 = tf(0.0001);
% plant
Gp = minreal(series(G1, series(G2, series(G3, series(G4, G5)))))
[num, den] = tfdata(Gp, 'v');
pp = pole(Gp)
% auxiliary compensator
Ga = zpk([pp(2), pp(3)], [pp(1), pp(1)], pp(4)*pp(1)^3/num(5))
% cascaded system Ga*Gp with the dominant pole at s = pp(4)
Gap = (minreal(series(Ga, Gp)))
dcgain(Gap)
[y1, t1] = step(Gp, 20);
[y2, t2] = step(Gap, 20);
% plot Open-loop step response
figure
yyaxis left
plot(t1, y1)
ylabel('y_{Gp}(t)')
yyaxis right
plot(t2, y2)
ylabel('y_{Gap}(t)')
grid on
legend('Gp', 'Gap', 'location', 'east')
xlabel('Time (seconds)')
title('Open-loop step response')
% PI controller for Gp (without Ga)
Kc1 = 1;
Gc1 = pid(1, -pp(4))/(-pp(4))*Kc1
% PI controller for Gap (with Ga)
Kc2 = 2;
Gc2 = pid(1, -pp(4))/(-pp(4))*Kc2
Nabiyev Muslim
about 4 hours ago
Edited: Nabiyev Muslim
about 4 hours ago
0 votes
Categories
Find more on Fuzzy Logic Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

