1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| function test
%% informations I U P en fonction du temps
% U est fixe sur un canal 1
%% Paramètres
%clear;clc;
periode=0.99; %interval de temps 0.99 fait exactement 1s
iterrations=10 ; %Nombre d'itétations
CH=1; %canal de sortie 1 2 3
Umaxi=12; %tension sur CH1
Imaxi=2; %intensité maxi
Uvariable=true;
incr=0.1
%% connexion
alim = visadev( 'TCPIP::192.168.0.13::INSTR' ); %connexion à l'objet VISA
%% Parametre timer
t = timer();
t.ExecutionMode = 'fixedRate';
t.Period = periode;
t.TasksToExecute = inf;
t.TimerFcn = @acqAlim;
t.StopFcn = @stop;
t.TasksToExecute = iterrations;
%% Initialisation alim
source=[':SOUR',num2str(CH)]; %syntaxe sélection d'une source
chaine=[ source,':VOLT ',num2str(Umaxi)]; %tension choisie
write(alim,chaine); %tension maxi
chaine=[source,':CURR ',num2str(Imaxi)]; %intensité maxi
write(alim,chaine ); %courant départ
chaine=[':OUTP CH',num2str(CH),',ON']; %activation CH
write(alim,chaine);
Tension= nan(1,iterrations);
Courant = nan(1,iterrations);
Puissance= nan(1,iterrations);
i=0;
%% figure
figure
axu=subplot(3,1,1);
hu=plot(Tension);
xlabel('Durée (s)')
ylabel('Tension (V)');
titrelabelu='Tension ';
titreuniteu=' V';
title(['\fontsize{18}',titrelabelu,num2str(Umaxi),titreuniteu]);
typeu=[':MEAS:VOLT? CH',num2str(CH)];
grid on
grid minor
axi=subplot(3,1,2);
hi=plot(Courant);
xlabel('Durée (s)')
ylabel('Intensité (A)');
titrelabeli='Intensité ';
titreunitei=' A';
title(['\fontsize{18}',titrelabeli,'---' ,titreunitei]);
typeI=[':MEAS:CURR? CH',num2str(CH)];
grid on
grid minor
axp=subplot(3,1,3);
hp=plot(Puissance);
xlabel('Durée (s)')
ylabel('Puissance (W)');
titrelabelp='Puissance ';
titreunitep=' W';
title(['\fontsize{18}',titrelabelp,'---',titreunitep]);
typeP=[':MEAS:POWE? CH',num2str(CH)];
grid on
grid minor
%% début période
start(t)
%% mesure U I P
%chaine=[':MEAS:VOLT? CH',num2str(CH)];
%write(alim, chaine);
%data= readline(alim);
%Tension(index)=str2double (data); % passage cellule-> ASCII -> entier
%% fonction acquisition
function acqAlim(obj, event)
i=i+1;
write(alim, typeI);
acq= readline(alim);
mesure=str2double(acq);
Tension(i)=mesure;
set(hu, 'ydata', Tension);
axes=axu;
title(['\fontsize{18}',titrelabelu,num2str(mesure),titreuniteu]);
write(alim, typeI);
acq= readline(alim);
mesure=str2double(acq);
Courant(i)=mesure;
set(hi, 'ydata', Courant);
axes=axi;
title(['\fontsize{18}',titrelabeli,num2str(mesure),titreunitei]);
write(alim, typeP);
acq= readline(alim);
mesure=str2double(acq);
Puissance(i)=mesure;
set(hp, 'ydata', Puissance);
axes=axp;
title(['\fontsize{18}',titrelabelp,num2str(mesure),titreunitep]);
drawnow()
end
%% fonction arrêt
function stop(obj, event)
chaine=[':OUTP CH',num2str(CH),',OFF'];
write(alim, chaine);
clear alim
save Alimentation.mat
end
end |
Partager