How to give input from sensor to pid in matlab (mfile)

3 Ansichten (letzte 30 Tage)
Beenish Mazhar
Beenish Mazhar am 21 Okt. 2012
I am trying to implement the system in matlab(mfile)which I have uploaded at:
My system has two portions Image processing(sensor) & control systems. The piece of code is:
clear,close
%your model and its input output
mot=tf(1,[1 1]),
model=ss(mot);
[F,h,c,d]=ssdata(model);
%your pid controller
r=pid(5,1/0.05,10)
sys.inputname='u'
sys.outputname='y'
Ci.inputname='e';
Ci.outputname='u';
som1 = sumblk('e = r - y');
%global model with all conneection
modelg=connect(som1,r,model,'r','y')
%simulation
step(modelg)
Above code is the model representing the PID then statespace and then its output as feedback but I have to give input from my sensor(image processing part e.g 3) and compare it with my reference value. I need to know where that input value will be adjusted in this code. Any guidance would be highly appreciated.

Antworten (1)

Arkadiy Turevskiy
Arkadiy Turevskiy am 23 Okt. 2012
Bearbeitet: Arkadiy Turevskiy am 23 Okt. 2012
Your code does not make sense at the moment. Specific issues:
  1. You define input and output names for variables sys and Ci, as if they are meant to represent a plant and the controller, but your plant is stored in variable mot, and your controller is in variable r
  2. You use function connect in the wrong way - please see documentation on the input arguments and their right order
The correct code would be:
clear,close
%your model and its input output
mot=tf(1,[1 1]);
mot.inputname='u';
mot.outputname='y';
%your pid controller
r=pid(5,1/0.05,10);
r.inputname='e';
r.outputname='u';
% summation junction
som1 = sumblk('e = r - y');
%global model with all conneection
modelg=connect(mot,r,som1,'r','y');
%simulation
step(modelg);
% another way to do the same
step(feedback(r*mot,1));
Arkadiy
  1 Kommentar
Beenish Mazhar
Beenish Mazhar am 5 Nov. 2012
It was a certain typing mistake. My code is: clear,close
%your model and its input output
mot=tf(1,[1 1]),
Ci=pid(5,1/0.05,10)
[ne,de]=tfdata(mot,'v');
[A,B,C,D]=tf2ss(ne,de);
inputs = {'u'};
output = {'y'};
sys = ss(A,B,C,D,'inputname',inputs,'outputname',output);
sys.inputname='u';
sys.outputname='y';
Ci.inputname='e';
Ci.outputname='u';
%adding a reference r with som2=r-y
som1 = sumblk('e','r','y','+-');
%global model with all connection
modelg=connect(sys,Ci,som1,'r','y')
I have to add the value taken from sensor as mentioned above. How to adjust that in the above code.

Melden Sie sich an, um zu kommentieren.

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by