LabVIEWForum.de
Protokollerstellung mittels Tabelle - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Protokollerstellung mittels Tabelle (/Thread-Protokollerstellung-mittels-Tabelle)



Protokollerstellung mittels Tabelle - fsteini - 23.08.2012 11:28

Hallo bräuchte mal einen Lösungsansatz um meine VI zu verbessern. Ziel des VI ist es ein Durchführungsprotokoll für ein Gerät mit 4 Ventilen und zwei Schrittmotoren zeitgesteuert zu erstellen
Nun habe ich folgendes Problem erstelle wenn ich eine Applikation aus dem VI kann ich die Werte in den Arrays nicht speichern nun würde ich gern die Array mit einer Text oder Tabellen Datei speisen was für Bausteine nehme ich da am günstigsten.
Falls jemand eine nicht so unschönen Ansatz wie ich über diese Case Struktur hat würde ich mich über Input freuen  vor allem wenn es die möglichkeit gibt unendlich viele Schritte erstellen zu können.


RE: Protokollerstellung mittels Tabelle - GerdW - 23.08.2012 11:52

Hallo fsteini,

dir ist hoffentlich bekannt, dass man Arrays nicht in ihre Einzelelemente aufdröseln muss, um alle Elemente mit dem gleichen Wert zu vergleichen?
[attachment=41224]
- man muss auch nicht erst einen Wert nach FXP konvertieren, um dann mit einem DBL-Array zu vergleichen...
- man kann Cases auch zusammenfassen, wenn der Inhalt gleich ist: statt 10, 11, 12, ... alle einzeln aufzuführen schreibt man einfach "10..25"...
- du hast eine RaceCondition bei "Counter 2", ebenso bei deinen Ventilen "V1" bis "V4"!
- für die Rechenoperation "-1" gibt es eine fertige Funktion...
- in deiner "Start"-Schleife würde sich eine Wartefunktion gut machen...

Bitte all das mal umsetzen und dann schauen wir weiter...


RE: Protokollerstellung mittels Tabelle - fsteini - 23.08.2012 12:38

Ok danke werde das jetzt ersteinmal verbessern muss mich da nun erstmal durschwurschteln arbeite das ertemal mit Arrays hab och nicht viel mit LV gemacht Punkt zwei ging am schnellsten wenn ich zu deinen Punkten noch Fragen bekommen würd ich mich schon vorher melden


RE: Protokollerstellung mittels Tabelle - fsteini - 23.08.2012 13:07

Zu Punkt eins passiert wie ich schon vermutethabe folgendes konvertiere ich den Wert nicht in FXP so kommt es beim vergleichen der werte an spotanen stellen dazu das die Stopuhr schon am wert vorbeigelaufen ist wenn dieser gerade verglichen werden soll man kann bestimmt beim vergleichen eine toleranz einstellen ich empfand diese variante als die einfachste


RE: Protokollerstellung mittels Tabelle - jg - 23.08.2012 13:35

"Ist-gleich" Vergleich bei Float oder Double sind in der Regel keine gute Idee, da bei einer Gleitkommazahl z.B. 0,1 nicht exakt dargestellt werden kann.

Wie wäre es, in diesem Fall mit den Millisekunden im U32-Format die Vergleiche anzustellen?

Gruß, Jens

Offtopic2
P.S.: Sind bei deiner Tastatur Komma- und Punkttaste defekt? Deine Beiträge wären mit etwas Interpunktion deutlich besser lesbar (vgl. LVF-Regeln). Danke. Wink


RE: Protokollerstellung mittels Tabelle - fsteini - 23.08.2012 16:41

Hallo GerdW
Noch mal vielen Dank für deine Hinweise, dass ich die Arrays nicht aufdröseln muss habe ich nicht gewusst. Somit hat sich mein Problem mit der Schrittanzahl auch gelöst danke.
Leider weiß ich nicht was mit RaceCondition gemeint ist  habe es auch nicht gefunden.
Nun bräuchte ich nur noch eine Möglichkeit die Arraywerte auch in einer Applikation zu speichern oder sie eben aus einer Tabelle zu importieren.
Ich lade das verbesserte Programm mal mit hoch habe fürs Programmieren die Visa Schnittstelle und die DAQ Assistenten mal rausgenommen


RE: Protokollerstellung mittels Tabelle - GerdW - 24.08.2012 08:15

Hallo fsteini,

Zitat:Leider weiß ich nicht was mit RaceCondition gemeint ist  habe es auch nicht gefunden.
Schon mal bei Wikipedia nachgelesen?
Schau mal hier:
[attachment=41240]
Punkt 2 zeigt auf die RaceCondition: Wird Counter2 zuerst geschrieben oder gelesen? Wenn du einfach einen Draht verwenden würdest, könntest du auf das Control verzichten und hättest keine RaceCondition... (Hatte ich schon mal erwähnt, dass es fertige Funktionen "+1" und "-1" gibt?)
Punkt 1: Wozu soll die Sequenz gut sein? Beide sind unnötig! Die obere ist sinnfrei, da die "Bits" erst nach abarbeiten des Cases nach außen weiter gereicht werden - dein Timing ist da hinfällig... Die linke bringt auch keinen Gewinn...

Zitat:eine Möglichkeit die Arraywerte auch in einer Applikation zu speichern oder sie eben aus einer Tabelle zu importieren
Ich würde die nicht in einer Applikation, sondern einer Datei speichern. Spiel doch mal mit ReadFrom/WriteToSpreadsheetFile herum...

P.S.:
- LV2011 hat eine Aufräumfunktion. Die bringt bei deinem VI auch was...
- Wenn deine V-Arrays nur boolsche Werte speichern sollen, würde ich die entweder als boolsches Array anlegen oder als U8-Array. Dies bringt dir neben Speicherersparnis auch typgenaue Vergleichsfunktionen bzw. kannst du dann auf Vergleiche verzichten. Für den Vergleich würde ich übrigens ">0" verwenden...