Maybe a mistake in the documentation of function ”robgain”
Please refer to this documentation: robgain
as well as this system:
In the example "Robust Performance of Closed-Loop System", it says that "Create a model of the controller, and build the closed-loop sensitivity function, S. The sensitivity measures the closed-loop response at the plant output to a disturbance at the plant input."
The corresponding codes are:
k = ureal(‘k’,10,’Percent’,40);
delta = ultidyn(‘delta’,[1 1]);
G = tf(18,[1 1.8 k]) * (1 + 0.5*delta);
C = pid(2.3,3,0.38,0.001);
S = feedback(1,G*C);
tf(S)
However, when I refer to the documentation of feedback, it seems that the code feedback(1,G*C) actually refers to the closed-loop response at the plant input, instead of that at the plant output. I use the function connect to prove this:
G.InputName = ‘e2’;
G.OutputName = ‘y’;
C.InputName = ‘e1’;
C.OutputName = ‘u’;
S1 = sumblk("e1 = r – y");
S2 = sumblk("e2 = u + d");
inputs = {‘d’};
outputs = {‘e2’};
S = connect(G,C,S1,S2,inputs,outputs);
tf(S)
The preceding two results are the same, which prove my assumption.
To measure the closed-loop response at the plant output to a disturbance at the plant input, the codes should be:
S = feedback(G,C);
tf(S)
or in the "connect" version
G.InputName = ‘e2’;
G.OutputName = ‘y’;
C.InputName = ‘e1’;
C.OutputName = ‘u’;
S1 = sumblk("e1 = r – y");
S2 = sumblk("e2 = u + d");
inputs = {‘d’};
outputs = {‘y’};
S = connect(G,C,S1,S2,inputs,outputs);
tf(S)
Please check other documentatins which also use this sensitivity function.
Best regards.Please refer to this documentation: robgain
as well as this system:
In the example "Robust Performance of Closed-Loop System", it says that "Create a model of the controller, and build the closed-loop sensitivity function, S. The sensitivity measures the closed-loop response at the plant output to a disturbance at the plant input."
The corresponding codes are:
k = ureal(‘k’,10,’Percent’,40);
delta = ultidyn(‘delta’,[1 1]);
G = tf(18,[1 1.8 k]) * (1 + 0.5*delta);
C = pid(2.3,3,0.38,0.001);
S = feedback(1,G*C);
tf(S)
However, when I refer to the documentation of feedback, it seems that the code feedback(1,G*C) actually refers to the closed-loop response at the plant input, instead of that at the plant output. I use the function connect to prove this:
G.InputName = ‘e2’;
G.OutputName = ‘y’;
C.InputName = ‘e1’;
C.OutputName = ‘u’;
S1 = sumblk("e1 = r – y");
S2 = sumblk("e2 = u + d");
inputs = {‘d’};
outputs = {‘e2’};
S = connect(G,C,S1,S2,inputs,outputs);
tf(S)
The preceding two results are the same, which prove my assumption.
To measure the closed-loop response at the plant output to a disturbance at the plant input, the codes should be:
S = feedback(G,C);
tf(S)
or in the "connect" version
G.InputName = ‘e2’;
G.OutputName = ‘y’;
C.InputName = ‘e1’;
C.OutputName = ‘u’;
S1 = sumblk("e1 = r – y");
S2 = sumblk("e2 = u + d");
inputs = {‘d’};
outputs = {‘y’};
S = connect(G,C,S1,S2,inputs,outputs);
tf(S)
Please check other documentatins which also use this sensitivity function.
Best regards. Please refer to this documentation: robgain
as well as this system:
In the example "Robust Performance of Closed-Loop System", it says that "Create a model of the controller, and build the closed-loop sensitivity function, S. The sensitivity measures the closed-loop response at the plant output to a disturbance at the plant input."
The corresponding codes are:
k = ureal(‘k’,10,’Percent’,40);
delta = ultidyn(‘delta’,[1 1]);
G = tf(18,[1 1.8 k]) * (1 + 0.5*delta);
C = pid(2.3,3,0.38,0.001);
S = feedback(1,G*C);
tf(S)
However, when I refer to the documentation of feedback, it seems that the code feedback(1,G*C) actually refers to the closed-loop response at the plant input, instead of that at the plant output. I use the function connect to prove this:
G.InputName = ‘e2’;
G.OutputName = ‘y’;
C.InputName = ‘e1’;
C.OutputName = ‘u’;
S1 = sumblk("e1 = r – y");
S2 = sumblk("e2 = u + d");
inputs = {‘d’};
outputs = {‘e2’};
S = connect(G,C,S1,S2,inputs,outputs);
tf(S)
The preceding two results are the same, which prove my assumption.
To measure the closed-loop response at the plant output to a disturbance at the plant input, the codes should be:
S = feedback(G,C);
tf(S)
or in the "connect" version
G.InputName = ‘e2’;
G.OutputName = ‘y’;
C.InputName = ‘e1’;
C.OutputName = ‘u’;
S1 = sumblk("e1 = r – y");
S2 = sumblk("e2 = u + d");
inputs = {‘d’};
outputs = {‘y’};
S = connect(G,C,S1,S2,inputs,outputs);
tf(S)
Please check other documentatins which also use this sensitivity function.
Best regards. robust control toolbox, control, help, robgain MATLAB Answers — New Questions