Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
hab hier ein kleines technisches Problem. Wir betreiben hier eine Messanwendung bei der ein Druck aufgezeichnet wird, das ganze wird über 2 Digitalsignale gestartet und wieder beendet. Nun ist es leider so dass aufgrund einer etwas ungünstigen elektrischen Installation es hin und wieder zu induktiven Einstreuungen aus einer 230V-Heizung kommt und diese dann als Signal gewertet werden. Wenn die Messung unbemerkt startet, nicht weiter schlimm, Datenmüll löschen und weitermachen. Wohingegen Messung einfach so abgewürgt ohne dass man es wollte eher schon blöd ist.
Ich hab hier schon verschiedene Sachen durchsucht, letztendlich bin ich darauf gestossen, dass sich hier über einen Digitalfilter bestimmen lässt, dass das Signal eine bestimmte Zeit ( z. B. 500 ms) anstehen muss, um wirklich als Signal gewertet zu werden, aber ich find das bei mir nicht. Wenn ich einen "DAQmx - Kanal Eigenschaftsknoten" öffne, dann kann ich für Digitale Erfassung genau "Leitung invertieren", "Anzahl Leitungen" und "Tristate" auswählen. Den Filter "Impulsbreite" kann ich nur bei Zählergestützte Erfassung finden und das bekomm ich irgendwie nicht zum laufen.
Liegt das evtl. an der LV-Version/Hardware? Ich hab hier das LV 2010 SP1 Base und ein USB-6210. Geht dass damit überhaupt oder muss ich mir hier etwas anderes überlegen und wenn ja, hat jemand eine Idee wie das sonst gehen könnte? Wäre toll wenn mir da jemand helfen könnte. Ich hatte auch schon daran gedacht, den gleichen Kanal mit einer Verzögerung von 500 ms zweimal auszulesen und dann den Status zu vergleichen, irgendwie fehlt mir aber hier komplett die Idee wie ich das lösen soll.
Ich bedank mich schon mal im voraus für bissle Hilfe.
Gruss
Michael
Anzeige
16.10.2013, 06:27 (Dieser Beitrag wurde zuletzt bearbeitet: 16.10.2013 06:28 von Y-P.)
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Digitalsignal filtern
Kann es sein, dass die VIs bei der Base-Version nicht dabei sind?
: Bitte . Da steht noch LabVIEW 2009, Du hast aber anscheinend schon die 2010er-Version.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Zitat:den gleichen Kanal mit einer Verzögerung von 500 ms zweimal auszulesen und dann den Status zu vergleichen
Du solltest den Kanal nicht nur zweimal, sondern dauernd einlesen - und zwar in einer Schleife. Dann einfach die Schleife mit 500ms takten und den aktuellen Messwert mit dem vorherigen (Schieberegister!) vergleichen...
Finde jetzt das VI nicht, was ich dafür mal gemacht hatte.
Das Signal wird dauernd eingelesen. Ein "gültiges" hi oder lo liegt dann vor, wenn n mal (z.B n=5) hi oder lo hintereinander ankommt.
Man kann das mit einem Mehrfach-Schieberegister realisieren, eleganter (weil skalierbar) geht es aber mit einem Zähler.
Der Zähler wird bei jedem Pegelwechsel auf n initialisiert. Findet kein Pegelwechsel statt, wird er um 1 dekrementiert.
Wenn er Null erreicht, ist der Flankenwechsel, also von hi auf lo oder umgekehrt, gültig.
Reicht das oder muss ich weiter nach dem VI suchen?
@Gerd: das meinte ich, bissle ungünstig formuliert, klar kontinuierlich lesen und wenn dann innerhalb von 500 ms 2 high-Signale kommen, dann erst als "gültiges" Signal auswerten.
@Jens: ich hab gerade die Aktualisierung auf DAQmx 9.7.5 laufen lassen, ich kann das aber immer noch nicht einstellen, wie in dem von dir angeführten Thread. Drum hab ich bissle die Befürchtung das Markus Recht hat und die VIs in der Base-Version gar nicht drin sind.
@Lucki: du musst natürlich nicht suchen, aber es wär lieb wenn du mal kuckst ob du das findest.
für alle, die ein ähnliches Problem wie das oben geschilderte haben und leider nur die Basisversion von LabView gibt es auch eine Lösung:
Man wandelt die Boolschen Werte in 0/1 und schreibt diese in ein Array. In dieses schreibt man bei jedem Schleifendurchlauf jeweils an den Anfang den neuen Wert und schmeisst hinten den letzten raus. Wenn man nun die Summe des Arrays bildet diese mit der Anzahl der Elemente vergleicht, dann muss der gleiche Wert herauskommen, wenn durchgängig ein "high-Signal" anstand. Dies wird dann als gültiges "high-Signal" interpretiert und weiter gegeben.
Über die Wartezeit der Schleife und die Anzahl der Array-Elemente ergibt sich dann die Zeit, die ein Signal angestanden haben muss, um als "gültiges high" interpretiert zu werden.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Digitalsignal filtern
Danke für die Info.
Gruß Markus
PS: Deine Whileschleife im Screenshot läuft ewig.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------