how to change the rise time of step input in simulink
조회 수: 12 (최근 30일)
이전 댓글 표시
Hello,
I want to change the rise time of the step input in simulink. I tried the transfer function 1/(s+1) but not satifying my requirement. Can someone suggest me some tricks. Thanks in advace.
Regards,
Swasthik
댓글 수: 2
Sam Chak
2022년 9월 19일
Can you specify all the performance requirements?
What did you mean by "tried the transfer function"? What is that transfer function for? For Plant, Actuator, or Compensator, or Prefilter? If possible, please the Plant transfer function.
채택된 답변
Sam Chak
2022년 9월 21일
편집: Sam Chak
2022년 9월 22일
Edit: I created a general one so that you can enter the desired ramp up parameters:
% u = min(1, max(0, "Linear Line function"));
ramp_start = 5;
ramp_end = 8;
t = linspace(0, 25, 251);
u = min(1, max(0, 1/(ramp_end - ramp_start)*(t - ramp_start)));
plot(t, u, 'linewidth', 1.5), grid on, ylim([-1 2])
If you have Fuzzy Logic Toolbox license, then you can use this linsmf() function. Here is a demo for a Double Integrator:
% Plant
Gp = tf(1, [1 0 0])
% PID
kp = 0;
ki = 0;
kd = 0.8165;
Tf = kd;
Gc = pid(kp, ki, kd, Tf)
% Closed-loop system
Gcl = feedback(Gc*Gp, 1)
% Saturated Ramp Response
t = linspace(0, 25, 251);
u = linsmf(t, [5 8]); % rise time is from 5 to 8 sec
lsim(Gcl, u, t), ylim([-1 2]), grid on
댓글 수: 3
Sam Chak
2022년 9월 21일
I forgot to mention that although linsmf is user-friendly, it requires the Fuzzy Logic Toolbox.
If you don't have Toolbox, then you can try this alternative. It produces the same time-delayed saturated ramp signal.
% Syntax:
% u = min(1, max(0, "Linear Line function"));
t = linspace(0, 25, 251);
u = min(1, max(0, 1/3*(t - 5)));
plot(t, u, 'linewidth', 1.5), grid on, ylim([-1 2])
추가 답변 (3개)
Timo Dietz
2022년 9월 20일
편집: Timo Dietz
2022년 9월 20일
Hello,
what about using a single-sided ramp function: b * (1 - exp(-a*s)) / s^2
The gradient of the rising slope is '1', so after the time 'a' the amplitude 'a' is reached. The factor 'b' should finally allow you to control the steepness of the 'step'.
Does this meet your requirement?
댓글 수: 3
Timo Dietz
2022년 9월 21일
편집: Timo Dietz
2022년 9월 21일
Hello,
I thought you are searching for a solution in the frequency/laplace domain since you mentioned the pT1.
So, with 'H_slope = b/a * (1 - exp(-a*s)) / s^2' you can control the slope (in time domain) via a and b:
syms s;
a = 1.5; % time after which amplitude is reached
b = 2; % amplitude
% frequency domain
H_slope = b/a * (1 - exp(-a*s)) / s^2;
% time domain
f_slope = ilaplace(H_slope);
fplot(f_slope, [0 2]);
grid on;
Swasthik Baje Shankarakrishna Bhat
2022년 9월 21일
댓글 수: 1
Sam Chak
2022년 9월 21일
It's great to hear that it works. If you find the solution is helpful, please consider accepting ✔ and voting 👍 the Answer. Thanks!
참고 항목
카테고리
Help Center 및 File Exchange에서 General Applications에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!