LabVIEWForum.de - Zwei Fragen/Probleme zu/mit Countern

LabVIEWForum.de

Normale Version: Zwei Fragen/Probleme zu/mit Countern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo!

Ich habe ein Programm geschrieben, mit dem ich per NI PCI-6220 mehrere Sensorsignale einlese und auswerte (s. Anhang).
Das Programm läuft mit Ausnahme der Counter ("DAQ-Stränge" ganz unten im Programm) eigentlich ganz gut. Hier gibt es zwei Probleme:
1.) Das Programm läuft immer nur wenn die Counter, insbesondere der "ctr1", Signale erhalten. Das äußert sich darin, dass alle anderen Sensorausgaben erst arbeiten sobald die an den Countern hängenden Sensoren (Drehgeber und Durchflussmesser) manipuliere.
2.) Ich würde gerne von einem der Drehgeberkanäle die Taktfrequenz (wie beim Durchflussmesser - ganz unten im Programm) ermitteln und somit auf die Drehzahl schließen. Das wäre mir lieber als mit dem Winkel rumrechnen zu müssen - hab das schon probiert, lief aber nicht richtig bzw. gar nicht.

Ich wäre sehr dankbar, wenn mir jemand mit meinen Problemen weiterhelfen könnte.
Da ich keine große LabVIEW-Erfahrung habe, wäre ich auch für andere Ideen offen. Auch allgemeine Kritik und Verbesserungsvorschläge sind willkommen.

Danke!

Onk123
Hallo Onk,

kannst du dein VI mal für LV2011 abspeichern? (File -> Save for previous)
Bitte Gerd. Wink
[attachment=45517]

Gruß Markus
Danke Markus. Vielleicht hätte ich mir das VI besser doch nciht angeschaut Smile

Hallo onk,

Zitat:1.) Das Programm läuft immer nur wenn die Counter, insbesondere der "ctr1", Signale erhalten. Das äußert sich darin, dass alle anderen Sensorausgaben erst arbeiten sobald die an den Countern hängenden Sensoren (Drehgeber und Durchflussmesser) manipuliere.
DATAFLOW: Eine Iteration einer Schleife ist erst beendet, wenn alle enthaltenen Funktionen abgearbeitet sind. Wenn eine davon blockiert, wartet die Schleife...
Wie wäre es, parallele Schleifen für jeden einzelnen DAQ-Task zu verwenden?

Zitat:2.) Ich würde gerne von einem der Drehgeberkanäle die Taktfrequenz (wie beim Durchflussmesser - ganz unten im Programm) ermitteln und somit auf die Drehzahl schließen. Das wäre mir lieber als mit dem Winkel rumrechnen zu müssen - hab das schon probiert, lief aber nicht richtig bzw. gar nicht.
Dein Sensor liefert dir doch eine Winkelangabe. Was willst du stattdessen haben? Was "läuft" denn hier nicht?

Zitat:Auch allgemeine Kritik und Verbesserungsvorschläge sind willkommen.
- Gleiche Programmteile gehören in subVIs. Bei dir z.B. die FormulaNode zum Umrechnen der NTC-Werte...
- Die Skalierung deiner Spannungswerte mittels FormulaNodes ist Overkill. Du kannst bei DAQmx den einzelnen Kanälen eine lineare Skalierung verpassen oder selbst per y=ax+b umrechnen...
- BD aufräumen und verkleinern (StyleGuide!). Selbst auf einem FullHD-Monitor muss man scrollen...
- Bei den AI-Kanälen liest du erst die NTC-Werte ein und danach die anderen Spannungen. Ist das so gewollt? Warum nicht zwei getrennte AI-Tasks? Oder die Verwendung aller Messdaten in einer Schleife? Warum liest du einmal "N Kanäle N Samples" ein und einmal "N Kanäle 1 Sample"? Du hast beim Task kein Timing konfiguriert, liest aber trotzdem 1000 Werte am Block ein. Alles komisch...
Hi!

Danke für deine Antwort. Und Danke, dass du dich erbarmt hast mein erstes eigenes LabVIEW-Programm anzuschauen. Ist wie du bemerkt hast sicherlich nicht das schönste Programm.

Ich versuch mal ein wenig zu begründen:

1.) Der ctr0 (V) und der Druck p müssen unbedingt synchron laufen. Deshalb fülle ich die Arrays für mein pV-Diagramm Sample für Sample gleichzeitig. Ich hatte p und V zuvor nicht in einer Schleife und mein pV-Diagramm sah gar nicht so aus, wie man es haben will. Jetzt geht es. Die anderen Größen könnte ich eigentlich auch aus der Schleife rausziehen das stimmt. Ich nehme mal an, dass ich das Problem auch eleganter lösen könnte. Wenn ich vielleicht verstehen würde, was die Sample Clock genau macht? Mir ist das noch etwas schleierhaft.
Vermutlich stelle ich mir aber gerade hier ein Bein bzgl. des Dataflow. Wie ginge das besser?

2.) Der Winkel vom Drehgeber wird ohne Probleme ausgegeben. Das Problem ist nur, dass ich zusätzlich noch die Drehzahl ermitteln muss. Ich denke, dass es hier am einfachsten wäre, wenn ich den Weg über die Frequenz eines der Signale gehen würde, wenn es überhaupt möglich ist, diese zusätzlich zu ermitteln. Ich habe schon versucht diese über Winkeldifferenz und Zeitdifferenz zu berechnen, was sich aber recht umständlich ist. Ich wollte daher erst fragen, ob es nicht einfacher geht.

3.) Die AIs lese ich nacheinander ein, weil ich festgestellt habe, dass ich immer 1000 gleiche Samples bekomme, wenn ich ohne Schleife arbeite. Lass mich raten: Das liegt an der fehlenden Sample Clock? Leider, wie oben schon gesagt habe ich hier irgendwie ein kleines aber vermutlich entscheidendes Verständnisproblem.
Einen separaten Task habe ich nicht gemacht, weil er immer gemeckert hat, dass ich nicht zweimal auf eine reservierte Ressource zugreifen könnte o.ä..

Danke auch für die anderen Hinweise!
Ich werde versuchen Sie umzusetzen.

MfG
Onk123
Hallo Onk,

es ist doch schön, das NI zu DAQmx jede Menge Beispiel-VIs mitliefert...

1) DAQmx-Abfrage sind nicht "synchron", nur weil du sie in die gleiche Schleife packst. Sie werden synchron, wenn sie den gleichen Taktgeber nutzen. Siehe auch Punkt 3...

2) Drehzahl = dWinkel/dZeit. Einfache Rechnung...

3) Wahrscheinlich richtig geraten. DAQmx-Beispiele durchschauen, da gibt es etliche, die auch die Samplerate einstellen...
Hi!

Ich rate nochmal: Und die Zeit dt kann ich dann auch einfach anhand der Samplerate bestimmen?

Dann muss ich mich nicht mit einem Tick Count o.ä. mit zu niedriger Auflösung (ms) herumschlagen, so wie ich das bei meinem Versuch getan habe.

Die Rechnung war mir übrigens klar - wenigstens nicht LabVIEW-bezogenes verstehe ich ein wenig ^^.

Ich werde dann mal ein wenig Beispiele suchen.

Danke nochmal!

Onk123
Hallo onk,

Zitat:Ich rate nochmal: Und die Zeit dt kann ich dann auch einfach anhand der Samplerate bestimmen?
Ja. Dann übernimmt nämlich die Hardware viel Arbeit, wie z.B. das taktgenaue Abholen der Messwerte...
Hi!

So. Ich habe jetzt ein paar Sachen geändert. Muss aber erst zu meiner Hardware fahren um es testen zu können.

Gleich mal als Vorwarnung. Wirklich aufgeräumt habe ich das BD noch nicht. Das mache ich, sobald alles wie erhofft funktioniert.
Ist das nun zu erwarten, oder habe ich noch was übersehen. Sonst fahre ich am Ende noch eine Stunde umsonst. ^^

Gruß
Onk123

---
Edit: Ist mir grade aufgefallen.
Hallo onk,

siehe Beitrag #2...
Seiten: 1 2 3
Referenz-URLs