Einstellungen, Aufnehmen, Abspielen

Aufbau und Planung von Softwareprojekten, UML, Zustandsautomaten, Softwaremodule, OOP
Ответить
dimitri84
beginner
beginner
Сообщения: 29
Зарегистрирован: 10 сен 2009, 10:28
Версия LabVIEW: 8.2
Контактная информация:

Einstellungen, Aufnehmen, Abspielen

Сообщение dimitri84 »

Hallo zusammen,

ich beginne jetzt mit einem (für meine Verhältnisse!) größeren Programm. Bestehen soll das Ganze aus 3 Reitern auf dem FP:
1) Einstellungen (Chan. Parameters, Physical Chan., Sampling rate/size, etc...)
2) Aufnahme (Anzeige Roh-Signal, Spektrum, Markerfunktion)
3) Player (laden von *.lvm oder *.tdms und abspielen des Signals, ggf. tdms-datei viewer benutzen)

Mich würde die Meinung von erfahrenen Programmierern interessieren wie ich das am besten verpacken soll im BD? Eventstructure/ oder gehts auch mit ner State Machine? Worauf soll ich besonders achten?

Das Programm (exe) soll später auch auf Rechnern ohne LV laufen (nur die Player Funktion). Wie kann ich da die Initialisierung der Signalerfassung (DAQ Task) automatisch verhindern?

Crosspost #18

Beste Grüße
dimtri
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение Eugen Graf »

Hallo Dimitri!

Ich würde vorschlagen, wenn die Aufnahme und Player parallel arbeiten sollen, du machst zwei parallele While-Schleifen:
1. Aufnahme
2. Player

Die ganzen Einstellungen (Eingabeparameter) machst du im Reiter 1, zwei grafische Anzeigen im Reiter 2 und eine Grafik und Tabellenanzeige im Reiter 3.

Dann brauchst du noch zwei Start/Stop Buttons je im Reiter 2 und 3.

In den While-Schleifen je eine Case-Struktur, die den Start/Stop-Button als Bedingung hat.

Zur Aufnahme:
Wenn Start-Button True, dann startest du DAQ-Task und DAQ Lesen und setzt dabei einen boolschen Flag "Verbunden". Die Referenz zum DAQ Task merkst du dir in einem Schieberegister. Wenn nun du im Case True bist und wenn der boolsche Flag "Verbunden" auch True ist, brauchst du die DAQ Task nicht noch mal aufzumachen, sondern benutzt zum DAQ Lesen die gemerkte Referenz. Wenn du im Case False bist (Also Start-Button ist False) und der boolsche Flag True ist, dann schliesst du die DAQ Task und setzt den boolschen Flag auf False. Wenn Case-False und Flag False, dann nichts machen, sondern 100 ms warten (damit die CPU Auslastung nicht auf 100% geht).

Zum Player:
Er muss ja nicht immer arbeiten, sondern du Startest den Player liest die Datei ein und zeigst diese in einer Grafik an. Hier brauchst du also keinen Flag. Eine einfache Case-Struktur sollte ausreichen. Also Start-Button (mit dem Latch-Schaltverhalten) True - Datei einlesen und anzeigen.

Noch Fragen?
dimitri84
beginner
beginner
Сообщения: 29
Зарегистрирован: 10 сен 2009, 10:28
Версия LabVIEW: 8.2
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение dimitri84 »

Danke für die ausführliche Antwort! Ich werds mir noch 2-3 mal durchlesen um alles ganz zu verstehen. :think: Hört sich aber einfacher an als ichs mir vorgestellt habe ... so ganz ohne event structure.
...setzt dabei einen boolschen Flag "Verbunden"

Was ist ein Flag?
Die Referenz zum DAQ Task merkst du dir in einem Schieberegister
Einfach den Task Draht mit dem Schleifenrand verbinden?

Wenn ich ne VI mit dem groben Gerüst habe frag ich hier bestimmt nochmal was.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение Eugen Graf »

Boolshes Flag kannst du z.B. über Schieberegister realisieren. Ja an den Schleifenrand rechtsklicken und Schieberegister hinzufügen. Diesen dann mit einer boolschen False-Konstante initialisieren.
dimitri84
beginner
beginner
Сообщения: 29
Зарегистрирован: 10 сен 2009, 10:28
Версия LabVIEW: 8.2
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение dimitri84 »

Hallo Eugen,

also ich habe wirklich versucht das mal alleine hinzubekommen und mir nicht alles vorkauen zu lassen ... vergeblich. Das Ergebnis ist absolut sinnfrei!

Wenn ich das richtig sehe habe ich doch 4 "Zustände"

1) Case true, Flag false => Task initialiesieren
2) Case true, Flag true => DAQ lesen ohne nochmaliger Task Initilisirung
3) Case false, Flag false=> Task schließen
4) Case false, Flag false=> 100ms warten

Was ich nicht verstehe ist, wie ich auf einer Case Ebene zwei verschiedene (in Abhängigkeit vom Flag) Aufgaben unterbringe. Hier meine Baustelle von der Aufnahme (habs echt lange alleine probiert....):
EMG10.vi
(77.63 КБ) 341 скачивание
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение Eugen Graf »

Du musst die Initialisierung in eine Case-Struktur (die nur vom Flag abhängt) packen. Diese Case-Struktur platzierst du in den True Case der äusseren Case-Struktur.
Вложения
Flag.png
Flag.png (7.3 КБ) 13041 просмотр
dimitri84
beginner
beginner
Сообщения: 29
Зарегистрирован: 10 сен 2009, 10:28
Версия LabVIEW: 8.2
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение dimitri84 »

Danke nochmal. Die ganze Geschichte springt jetzt immer genau dahin wo sie auch hin soll bzw. bleibt wo sie bleiben soll ... jedenfalls beim Recorder.

Sollte man nicht vielleicht noch eine "numerisch gesteuerte" Case Struktur um der Recorder und Player ziehen damit der Player nur dann läuft, wenn auch der Reiter angewählt ist? Bzw. wie erreiche ich, dass die Schleife des Players nur dann läuft, wenn der richtige Reiter im Vordergrund ist?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение Eugen Graf »

Sie können ja ruhig parallel laufen. CPU wird ja fast nicht ausgelastet, solange du im Wartemodus bist. Mach dir, wie schon gesagt eine Wartezeit von 100 ms im False-Case, du wirst nichts davon merken.
dimitri84
beginner
beginner
Сообщения: 29
Зарегистрирован: 10 сен 2009, 10:28
Версия LabVIEW: 8.2
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение dimitri84 »

Hallo Eugen,

wie kann es sein, dass mit der Highlightfunktion ein anderer Programmablauf stattfindet als ohne?! Folgendes Problem:

mit Highlightfunktion: Leerlauf ... startbutton auf true ... task initialisiert ... "daten lesen" ... fehlermeldung
Abtastwerte_weg.png
Abtastwerte_weg.png (10.86 КБ) 13030 просмотров
... nächste Iteration "daten lesen" .... fehlermeldung
task_leer.png
task_leer.png (9.56 КБ) 13030 просмотров
... diese zweite Fehlermeldung kommt dann immer wieder bei jeder Iteration


ohne Highlightfunktion kommt (nachdem drücken des Startbuttons) direkt die zweite Fehlermeldung als ob der Task nie initialisiert worden ist. Dass ich mir die Referenz des DAQ Tasks im Schieberegister merke scheint nicht zu funktionieren.

Ich musste ja bei den Tunneln immer den Haken setzen bei "Standart verwenden wenn nicht verbunden" damits überhaupt läuft. War das richtig so? Oder sollte ich die Referenz des DAQ Tasks und den Flag garnicht über die Tunnel übergeben?
EMG10.vi
(90.41 КБ) 324 скачивания
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение Eugen Graf »

Es hat sicher mit dem Timing tzu tun. Im Highlight Modus läuft ja alles viel langsamer, aber deine Hardware läuft ja im normalen Modus weiter. Somit kann z.B. Hardware-Puffer überlaufen, weil die Hardware schon so viele Daten gesammelt hat, aber die Software holt es nicht ab (weil viel langsamer). Davon kommen z.B. solche Fehler, wie bei dir.
dimitri84
beginner
beginner
Сообщения: 29
Зарегистрирован: 10 сен 2009, 10:28
Версия LabVIEW: 8.2
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение dimitri84 »

Warum kommt denn schon in der nächsten Iteration nach der Initialisierung nur ein leerer String beim DAQ Rd an?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение Eugen Graf »

Aber warum hast du die DAQ Refnum nicht überall verbunden?
Вложения
DAQTask.png
dimitri84
beginner
beginner
Сообщения: 29
Зарегистрирован: 10 сен 2009, 10:28
Версия LabVIEW: 8.2
Контактная информация:

Re: Einstellungen, Aufnehmen, Abspielen

Сообщение dimitri84 »

Das hat mich auch stutzig gemacht. Ich habe das 1 zu 1 aus dem VI übernommen was ich von meinem Betreuer bekommen habe (obere Bild) ... werde das nochmal mit ihm besprechen.

Jo das auf dem unterem Bild hätte ich auch selbst drauf kommen können ... klar ...

Habs jetzt verbunden ... keine Fehlermeldungen

danke für deine Geduld
Ответить

Вернуться в «Programmiermuster»