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!
02.03.2016, 16:05 (Dieser Beitrag wurde zuletzt bearbeitet: 02.03.2016 16:17 von friele.)
die aufgestellten Rechnungen sind mir nun schlüssig, danke.
Deine Alternative ist... toll ! (und ja, ist ein Luftgewehr)
Anbei mein VI.
Ich lasse das Signal triggern und bei erfolgreich erkanntem Trigger lass ich eine 1 in ein Schieberegister zählen. Also kann ich zwischen der ersten und zweiten Lichtschranke unterscheiden. Bei erfolgreichem Trigger lass ich außerdem die Indexzahl in ein seperates Schieberegister zählen. Davon bilde ich die Differenz und mach die typischen Schritte zur Errechnung der Geschwindigkeit.
Mein Problem bei diesem Aufbau ist, dass der Index des ersten Triggers größer ist als die des Zweiten. Ich denke das liegt an der Sample-Anzahl. Ich habe als Samplerate 50k und als Sample-Anzahl 1000 gewählt.
Wie kann ich dieses Problem beheben ohne verluste zu erzeugen?
---------------
Ergänzung meinerseits:
Wenn die erste Index-Zahl größer als die Zweite ist, dann müsste ich nur +1000 auf die zweite Index-Zahl addieren? Er fängt ja nur neu an zu zählen und die Differenz wäre noch die gewünschte ?!
---------------
MfG,
friele
PS: (Das Bild habe ich noch zusätzlich hochgeladen, aber nur den wichtigen Teil, der Rest kommt aus dem Beispiel-VI)
Wenn die erste Index-Zahl größer ist als die Zweite, dann muss ich die Differenz zwischen der ersten Index-Zahl und 1000 wissen, und die mit der Zweiten addieren.
auch dieser Vorschlag von mir, ist nicht der, der zum richtigen Ergebniss führt.
Ich gehe davon aus, dass ich immer 1000 Samples in den Puffer schreibe und auswerte. Also kann der Index nur einen Bereich von 0 bis 1000 annehmen. Somit müssen entweder die beiden erreichten Trigger in einem 1000-Pack/Püffer liegen um eine korrekte Differenz anzugeigen, oder ich muss wissen in welchem 1000-Pack/Püffer der erste Trigger aktiv wird und in welchem der Zweite.
Gibt es eine Möglichkeit, sich anzeigen zu lassen in wechlem 1000-Pack/Püffer der Trigger aktiv wurde?
Ich finde keine schlüssige Lösung für dieses Problem, welches ích aber zeitnah beseitigen muss.
Vielen Dank im Voraus,
friele
07.03.2016, 09:49 (Dieser Beitrag wurde zuletzt bearbeitet: 07.03.2016 09:49 von GerdW.)
Zitat:Ich gehe davon aus, dass ich immer 1000 Samples in den Puffer schreibe und auswerte. Also kann der Index nur einen Bereich von 0 bis 1000 annehmen.
Wenn du 1000 Samples pro DAQmxRead bekommst, hast du Indizes von 0 bis 999…
Zitat:Somit müssen entweder die beiden erreichten Trigger in einem 1000-Pack/Püffer liegen um eine korrekte Differenz anzugeigen, oder ich muss wissen in welchem 1000-Pack/Püffer der erste Trigger aktiv wird und in welchem der Zweite.
Korrekt.
Zitat:Gibt es eine Möglichkeit, sich anzeigen zu lassen in wechlem 1000-Pack/Püffer der Trigger aktiv wurde?
Man merkt sich einfach, wann der erste Trigger entdeckt wurde. Der Schleifeniterator bietet sich an, alternativ kannst du auch einen "globalen" Index für deine Samples mitzählen, den du bei jedem DAQmxRead um die Anzahl der gelesenen Samples erhöhst…
Das anzeigen der momentan gelesenen Indizes ergibt sinn! Nach 20 Minuten suchen habe ich den Baustein "DAQmx-Lesen" gefunden und lasse mir davon die "GesamtanzErfassterSamplesProKanal" anzeigen. Bei Betrachtung der angezeigen Zahl im gestarteten Programm, fällt mir auf, dass der Wert sich in 1000er Schritten vergrößert. Entsprechend meiner BUFFER-Größe, denke ich mal?!
Mit dieser Zahl und des genauen Index-Wertes meines aktiven Triggers kann ich die Differenz bestimmen ?!
Zitat:Bei Betrachtung der angezeigen Zahl im gestarteten Programm, fällt mir auf, dass der Wert sich in 1000er Schritten vergrößert. Entsprechend meiner BUFFER-Größe, denke ich mal?!
Entsprechend der Anzahl der abgefragten Samples…
Zitat:Mit dieser Zahl und des genauen Index-Wertes meines aktiven Triggers kann ich die Differenz bestimmen ?!
Ja, das sollte gehen.
(Ich hätte einfach in einem Schieberegister selbst gezählt, wieviele Samples schon gelesen wurden…)
die Auswertung der Lichtschranke hat funktioniert. Diese hatte ich exemplarisch getestet, indem ich sie mit einem Stift durchbrochen habe. Seitdem ich die Lichtschranke für den richtigen Betrieb verwende, wird nur ein Trigger erkannt, der Zweite nichit mehr. Ich bin mir aber sicher, dass es ein Softwareproblem ist und nicht an dem Aufbau/Bauteile der Lichtschranke.
Zoom ich in dem Plot an die zwei Stellen, bei der die Lichtschranken unterbrochen werden, erkenne ich klar die zwei Unterbrechungen. Exportiere ich diesen Plot in eine Excel-Tabelle, erkenne ich auch dort klare Spannungsabfälle.
Meine Frage: Ist der Trigger gegebenfalls zu langsam? Oder geht durch die Umformung eines Boolschen Wertes in eine Zahl zu viel Zeit verloren?
Da stehe ich echt auf dem Schlauch
Mit freundlichen Grüßen,
friele
10.03.2016, 08:38 (Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2016 08:38 von GerdW.)
Zitat:Exportiere ich diesen Plot in eine Excel-Tabelle, erkenne ich auch dort klare Spannungsabfälle.
Meine Frage: Ist der Trigger gegebenfalls zu langsam? Oder geht durch die Umformung eines Boolschen Wertes in eine Zahl zu viel Zeit verloren?
Antwort: aktuelles VI anhängen, am besten (oder: unbedingt!) mit aussagekräftigen Messdaten als Default in den Anzeigen gespeichert!
Ach ja: LV2014 wäre schön…
Zitat:Ich bin mir aber sicher, dass es ein Softwareproblem ist und nicht an dem Aufbau/Bauteile der Lichtschranke.
Ja, korrekt.
Zitat:Seitdem ich die Lichtschranke für den richtigen Betrieb verwende, wird nur ein Trigger erkannt, der Zweite nichit mehr.
Weil du das genau so programmiert hast!
Du verwendest die "Einfache Trigger-Erkennung" und lässt dir genau einen erkannten Trigger melden!
Jetzt wunderst du dich, warum du nur einen Trigger gemeldet bekommst und nicht zwei oder mehr…