Code matlab PID numerique

Fermé
bamboutcha1790 Messages postés 2 Date d'inscription jeudi 5 avril 2012 Statut Membre Dernière intervention 5 avril 2012 - 5 avril 2012 à 11:35
ila112 Messages postés 6 Date d'inscription mercredi 15 octobre 2014 Statut Membre Dernière intervention 15 octobre 2014 - 15 oct. 2014 à 18:23
Bonjour,

j'ai un code matlab de regulation PID telle qu'on lit les donnees d'une carte d'acquisition PCI-DAS 1002 puis on effectue la correction PID.
je voudrais savoir si ce code est correcte car j'en doute a propos de l'equation de PID.voici le code et merci d'avance ^^

clc
clear all

AOutput=analogoutput('mcc',0); % initialisation sortie analogique
chan=addchannel(AOutput,[0 0]); % choix du canal DAC0

AInput = analoginput('mcc',0); % initialisation entrée analogique
chans = addchannel(AInput,[0],1); % choix des canaux (numéros 0, 1)

data=[];

Te=0.2;
Kp=0.1 %gain proportionel du PID
Ti=0.01
Kd=0.02 % constante de tempd integral
yc=50 % consigne
for k=1: 100
tic;
analo_input; % lecture entrée analogique
data = [data; getdata(AInput)]; % transfert de la valeur anal. dans data


e(k)=yc-data;
u(k)=u(k-1)+Kp*e(k)+Kp*((Te/Ti)-1)*e(k-1) %PI equation
u(K)=u(K-1)+Kp*(e(K)-e(K-1)]+Ki*Te(K)+Kd/T[e(K)-2*e(K-1)+e(K-2)] %PID equation

% datatst1 = 0; % la valeur analogique sur sortie DAC1

datatst0 = u(k); % la valeur analogique sur sortie DAC0
analog_output; % ecriture sur la sortie analogique


t=toc;
while t<Te,
t=toc;
end
k
end

save('c:\z4.mat','data')

plot(data),grid,zoom on
xlabel('Samples')
ylabel('Signal (Volts)')
A voir également:

1 réponse

ila112 Messages postés 6 Date d'inscription mercredi 15 octobre 2014 Statut Membre Dernière intervention 15 octobre 2014
15 oct. 2014 à 18:23
bjr est que tu a arrivé a resoudre ton problèmr
bon courage
0