필터 지우기
필터 지우기

Numeric answer for PID command

조회 수: 1 (최근 30일)
Mohsina Zafar
Mohsina Zafar 2019년 7월 3일
댓글: Jon 2019년 7월 8일
I used a Simulink PD model and used values:
P=100; D=10; N=100
The input I am giving is
[0;0;0]-[0.05*(10-t);0.04*(10-t);0.03*(10-t)] where t=1:10
I get numeric values from the simulation.
I am trying to implement the same in script file but I get answer in transfer function format. I want the answer to be in numeric form like that from Simulink, Here is my MATLab code:
for t = 1:10
T_d = [0;0;0];
T_o = [0.05*(10-t);0.04*(10-t);0.03*(10-t)];
T_e = T_d-T_o;
C = pid(100,0,10,100)
T_u=T_e*C
end
Kindly help me in this regard.

채택된 답변

Jon
Jon 2019년 7월 3일
In order to simulate the time response of a system using the MATLAB control system toolbox you can use the lsim function. Note it is not valid to multiply a transfer function by a time domain signal as you have done in your code.
I made an example following what I think you were trying to accomplish below
% define time domain reference (setpoint), measured output, and error
% signals
% signals must have a row for each time value and a column for each channel
t = 0:10; % start at initial time equal to zero continue to 10
T_d = [0 0 0];
T_o = [0.05*(10-t);0.04*(10-t);0.03*(10-t)]'; % note transpose, columns of T_o are channels
T_e = T_d-T_o;
% define PID controller parameters
Kp = 100; % proportional gain
Ki = 0; % integral gain
Kd = 10; % derivative gain
Tf = 100; % filter time constant
c = pid(Kp,Ki,Kd,Tf); % individual pid controller
C = [c 0 0;0 c 0;0 0 c]; % identical pid controllers for each channel
% simulate response of pid controller to error signal
T_u = lsim(C,T_e,t);
  댓글 수: 3
Mohsina Zafar
Mohsina Zafar 2019년 7월 4일
After this, I want to simulate a motor model but its output is not consistent with the input:
load('Motor_Param.mat')
a = sim('Motor_Control','SimulationMode','normal');
out = a.get('T_l')
Jon
Jon 2019년 7월 8일
I'm glad that you are now able to use the pid function successfully. Regarding your question on the motor control simulation. I did try to replicate your problem, but I could not find the variable T_u in your .mat file, and it is needed for the simulation to run. In any case, I would suggest opening this as a new question, as it is a new topic.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 PID Controller Tuning에 대해 자세히 알아보기

제품


릴리스

R2016a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by