|
|
Endlosschleife für Messung mit DAQ Messkarte |
|
Lara85 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2009, 12:44
Titel: Endlosschleife für Messung mit DAQ Messkarte
|
|
hallo zusammen,
ich versuche mit einer DAQ NI 6014 eine durchlaufende Ausgabe meiner Messung zu plotten.
Bisher hab ich es hinbekommen das gemessene Signal durch Drücken eines Pushbuttons in einer Axes auszugeben. Die Karte misst also für 4ms das Signal und gibt dies aus.
Kann mir vielleicht jemand helfen, wie ich vielleicht den Pushbutton zu programmieren habe um zB aufzurufen, dass
solange der "Messen" button gedrückt ist,
Messung durchführen und plotten
und beenden, wenn
"Stop" button gedrückt wurde.
bisher habe ich unter den "Messen" button nur den Befehl die Messung durchzuführen und dann zu plotten (und zusätzlich Werte auszugeben, was hierfür aber nicht relevant ist). ...und was kommt eigentlich in die OpeningFcn und was in die OutputFcn?
Ich hoffe mir kann jmd helfen. bin noch nicht lange am Programmieren und aller Anfang ist bekanntlich schwer...
vielen Dank und Gruß,
Lara
|
|
|
|
|
Dagnabit |
Forum-Century
|
|
Beiträge: 244
|
|
|
|
Anmeldedatum: 23.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2009, 17:32
Titel:
|
|
Servus Lara
Wie werden Deine Messungen ausgelöst?
Vermutlich gibt es ein "Objekt" das dazu erstellt wird.
Dieses Objekt musst Du stoppen.
Vielleicht postest Du ein Beispiel oder die Funktion selbst.
_________________
lg
Martin
|
|
|
Lara85 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2009, 12:29
Titel:
|
|
|
|
|
hallo martin,
ich poste dir mal mein Callback für den "Messen" button. hiermit erhalte ich eine einfache Messung
Zitat: |
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
HW=daqhwinfo;
HW.InstalledAdaptors
ans='nidaq'
'parallel'
'winsound'
NI=daqhwinfo('nidaq');
NI.BoardNames
ans='PPCI-6014'
NI.InstalledBoardIds
ans='Dev1'
AI=analoginput('nidaq','Dev1');
addchannel(AI,2);
R=1000;
set(AI,'SampleRate',R);
N=1000;
set(AI,'SamplesPerTrigger',N);
start(AI)
[U,t]=getdata(AI);
T_string=get(handles.edit10,'String')
T=str2num(T_string)
U_kV=T/1000*(max(U)/sqrt(2));
U_kV_nm=T/1000*(U);
U_Mean=mean(U) %Mittelwert der Spannung
U_wurzel=max(U)/sqrt(2)
U_max=max(U);
set(handles.text13,'String',num2str(U_max));
set(handles.text1,'String',num2str(U_Mean));
set(handles.text2,'String',num2str(U_wurzel));
set(handles.text11,'String',num2str(U_kV));
Daten(:,1)=t;
Daten(:,2)=U;
save('D.dat','Daten','-ascii');
axes1=plot(t,[U*T/1000])
axes1(title('Spannungsverlauf'),ylabel('Spannung in kV'),xlabel('Zeit in s'))
delete(AI);
clear(AI);
|
vielen Dank schonmal
vlg
|
|
|
Dagnabit |
Forum-Century
|
|
Beiträge: 244
|
|
|
|
Anmeldedatum: 23.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2009, 12:45
Titel:
|
|
Servus Lara
Um die Messung zu stoppen, erweitere zuerst die entsprechende Stelle im pushbutton2_Callback derart-
Als nächstes fügst Du in Deinem Stop- pushbutton folgenden Code ein:
Ich habs nicht probiert, sollte ansatzweise aber korrekt sein.
_________________
lg
Martin
|
|
|
Lara85 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2009, 12:58
Titel:
|
|
hallo Martin,
danke für die schnelle antwort.
allerdings hab ich zunächst das problem, dass ich gerne wie auf einem Oszilloskop das (zB) Sinussignal "wandern" sehen möchte.
ich suche also nach einer Möglichkeit diese einzelne Messung die ich bereits erhalte und plotte zu einer wiederholten Messung bzw Plottung zu programmieren.
das mit der Stopfunktion macht er eigentlich von alleine, da er nur diese eine Messung durchführt.
ich hoffe ich habe es jetzt besser erklärt. wenn nicht, einfach nochmal nachhaken tschuldigung und danke!!!
|
|
|
Dagnabit |
Forum-Century
|
|
Beiträge: 244
|
|
|
|
Anmeldedatum: 23.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2009, 13:09
Titel:
|
|
Ok, da hab ich Dich missverstanden.
Es geht Dir also um den Plot.
Ich hab mit der daq-Toolbox keine Erfahrung, also weiß ich jetzt nicht wie das normal so abläuft:
Du löst durch Deinen Button eine Messung aus? Als Ergebnis gibts eine Matrix; in Deinem Fall mx2?
Bei erneutem Drücken des Button wird wieder gemessen, und was soll nun passieren?
Den bestehenden Plot überschreiben?
Über den bestehenden Plot legen?
_________________
lg
Martin
|
|
|
Lara85 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2009, 13:20
Titel:
|
|
ja genau, wenn ich den button ein weiteres mal drücke, wird die aktuell angezeigte Kurve durch die der neuen Messung ersetzt.
diesen Vorgang des Messbuttondrücken und plotten würde ich gerne automatisieren
vlg
|
|
|
Dagnabit |
Forum-Century
|
|
Beiträge: 244
|
|
|
|
Anmeldedatum: 23.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2009, 13:32
Titel:
|
|
Zitat: |
ja genau, wenn ich den button ein weiteres mal drücke, wird die aktuell angezeigte Kurve durch die der neuen Messung ersetzt. |
Wenn Du vor dem plot Befehl ein
setzt, wird der alte plot nicht überschrieben.
Zitat: |
diesen Vorgang des Messbuttondrücken und plotten würde ich gerne automatisieren
|
????
Versuche bitte in ganzen (schönen) Sätzen zu sagen was jetzt passieren soll. Ich kann mir nicht vorstellen, was Du mit ...Vorgang des Messbuttondrücken....automatisieren...meinen könntest
_________________
lg
Martin
|
|
|
Lara85 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2009, 13:33
Titel:
|
|
martin,
vielleicht kannst du mir aber hierbei helfen. erhalte immer folgende fehlermeldung:
Zitat: |
??? Subscript indices must either be real positive integers or logicals.
Error in ==> Ausgabe_weiter>pushbutton2_Callback at 164
axes1(title('Spannungsverlauf'),ylabel('Spannung in kV'),xlabel('Zeit in s'))
Error in ==> gui_mainfcn at 96
feval(varargin{:});
Error in ==> Ausgabe_weiter at 42
gui_mainfcn(gui_State, varargin{:});
??? Error while evaluating uicontrol Callback |
|
|
|
Lara85 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2009, 13:54
Titel:
|
|
also...
sorry
ich versuchs nochmal!
wenn ich den Messbutton drücke, misst die Karte ein generiertes Signal. Dies ist Sinusförmig. so habe ich es eingestellt.
das Signal lass ich mir testweise auch auf einem Oszilloskop ausgeben.
Das Signal wird soweit auch richtig ausgegeben. das Problem ist jedoch, dass ich nur ein "gefrorenen" Plot erhalte. ähnlich folgendem:
http://www.lkw-modellbau-berlin.de/.....analog/op-amp_inv1_k3.gif
ein Standbild halt. <-- So soll es nicht sein
ich würde es gerne als dynamisches Bild darstellen, ihn also immer den Wert messen lassen und gleichzeitig plotten. So, dass man einen schwingenden Plot erhält. Einen flüssigen, bewegten Plot.
|
|
|
Dagnabit |
Forum-Century
|
|
Beiträge: 244
|
|
|
|
Anmeldedatum: 23.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2009, 22:13
Titel:
|
|
Servus Lara
Wie gesagt, ich habe keine Ahnung von der daq- Toolbox!
Was erhältst Du für [U,t] nachdem Du den Button gedrückt hast?
Einen einzelnen Wert für U und t, oder mehrere?
Damit Du kontinuierlich/ dynamisch Deinen Plot erweitern kannst, musst Du auch kontinuierlich Daten bekommen.
Ich sehe in Deinem Button_callback weder eine Schleife noch eine "Timerfunktion".
Du startest Ai, fragst Daten ab, plottest diese und beendest Ai.
Damit das dynamisch wird, musst Du andauernd den Messbutton betätigen- oder?
_________________
lg
Martin
|
|
|
Lara85 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.07.2009, 12:23
Titel:
|
|
hallo,
also ich hab das jetzt mit einer while-schleife hinbekommen, wie ich es wollte.
hatte zuvor noch ein paar fehler, weil ich eine gui unter anderem namen abgespeichert hatte. daher hab ich eine neue gui erstellt, den messen-button mit einer whileschleife versehen und nun läufts. frag mich jetzt nur wie ich den stop button am besten programmiere...
habe folgendes mit eingebaut:
|
|
|
Lara85 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.07.2009, 10:46
Titel: Start - Stop Button
|
|
hallo zusammen,
ich bin aus dem Urlaub zurück und wieder bei der Sache
wie zuletzt geschrieben läuft meine Messung nun unendlich. jedoch lässt sich diese nur durch schließen des Fensters beenden, was mit einer Fehlermeldung verbunden ist.
ich würde gerne die While schleife durch betätigen eines Stop Buttons beenden.
hab es so gemacht, dass ich den Stop Button folgendermaßen definiere
meine Messung beginnt nach Betätigen des Start Buttons
jedoch reagiert mein Figure nicht auf den Stop Button.
was soll ich tun oder muss ich ändern.
lg und Danke
edit by steve: Bitte den "Code"-Button und nicht den "Quote"-Button verwenden
|
|
|
Dagnabit |
Forum-Century
|
|
Beiträge: 244
|
|
|
|
Anmeldedatum: 23.04.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.07.2009, 11:03
Titel:
|
|
Servus Lara
Versuche mal folgendes:
_________________
lg
Martin
|
|
|
Lara85 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.07.2009, 11:21
Titel:
|
|
@steve: Sorry
@Martin: sobald ich die funktion
einfüge bin ich nicht mehr in der Endlosschleife. Dh ich muss immer wieder den Meen Button drücken um die Messung neu zu plotten.
versteh das nicht
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|