INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Richtige umgang mit Ultraschalsensor und mehreren While-Schleifen in eine VI



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!

18.09.2016, 16:38
Beitrag #1

berlinfatih Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Apr 2016

2015
2014
EN



Richtige umgang mit Ultraschalsensor und mehreren While-Schleifen in eine VI
Wie schon auf dem Titel, wollte ich fragen wie ich mit mehreren while Schleifen am besten umgehen kann.

Weil ich glaube, mehrere while Schleifen verursachen mein aktuelles Problem. Diese wäre:
Bei meine Projekt verwende ich eine Ultraschalsensor HC-SR04. Dazu habe ich eine VI (siehe Anhang Ultrasound in cm), womit der Funktion vorhanden ist (+/- 1,5cm).

Nun wenn ich VI Inhalt (Ultrasound in cm) in meine Haupt VI (Main Labviewforum 16.09.18)reinpacke (wo die anderen Programmausschnitte sich befinden), dann sind die Messwerte des US sehr ungenau (+/- 10-12cm).

Diese liegt meiner Meinung nach daran, dass die Zeit, die benötigt wird bis die ausgestrahlte Signal des Ultraschalsensor wieder empfangen wird, Unkontrolliert ist, weil die anderen im Main Programm befindenden while Schleifen durch ihre Signal-Schritte es verlangsamen oder zu falschen Zeitpunkt empfangen wird.

Ich habe auch versucht, einige While Schleifen zusammen zufügen, ohne Erfolg. Gibt es vielleicht eine Funktion im Labview wo man das Priorität der Echtzeit auf den Ultraschalsensor vergeben könnte.

Ich hoffe ich habe mich verständlich ausgedrückt und danke im Voraus auf eure Hilfe.


Angehängte Datei(en)
15.0 .vi  Ultrasound in cm 2.vi (Größe: 120,59 KB / Downloads: 64)

15.0 .vi  Main Labviewforum 16.09.18.vi (Größe: 303,44 KB / Downloads: 71)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
18.09.2016, 17:10
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 16.252
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: Richtige umgang mit Ultraschalsensor und mehreren While-Schleifen in eine VI
Hallo fatih,

was nur auf einem FPGA gut geht: Schleifen, die ungebremst vor sich hin iterieren! Alle anderen Targets brauchen Wartezeiten in Schleifen, da sonst die CPU gekocht wird!

Laufen deine VIs auf einem FPGA-Target?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.09.2016, 17:29
Beitrag #3

berlinfatih Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Apr 2016

2015
2014
EN



RE: Richtige umgang mit Ultraschalsensor und mehreren While-Schleifen in eine VI
Hallo Gerd,

mir ist nicht ganz bekannt was du mit FPGA Targets meinst? Da unter FPGA mit eine CPU zur vergleichen ist, gehe ich davon aus du meinst mit FPGA Targets die Project Explorer wo unter den geöffneten Projekt die einzelnen VI´s laufen.
Bei mir sind zurzeit nur die Main Programm und die Ultrasound VI. (siehe Anhang)

Soll ich etwa bei den while Schleifen die nicht hohe Priorität für Reaktionszeit haben, Wartezeiten einbauen??


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.09.2016, 07:13
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 16.252
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: Richtige umgang mit Ultraschalsensor und mehreren While-Schleifen in eine VI

Akzeptierte Lösung

Hallo fatih,

Zitat:mir ist nicht ganz bekannt was du mit FPGA Targets meinst?
Ein deutliches Indiz dafür, dass du eben nicht einen FPGA programmierst!

Zitat:Soll ich etwa bei den while Schleifen die nicht hohe Priorität für Reaktionszeit haben, Wartezeiten einbauen??
ALLE Schleifen sollten Wartezeiten haben - entweder über eine explizite Wait-Funktion oder über einen blockierenden Funktionsaufruf (wie DAQmxRead, VISARead, QueueRead, etc.)!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.09.2016, 17:28
Beitrag #5

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.468
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Richtige umgang mit Ultraschalsensor und mehreren While-Schleifen in eine VI
(18.09.2016 16:38 )berlinfatih schrieb:  Ich habe auch versucht, einige While Schleifen zusammen zufügen, ohne Erfolg. Gibt es vielleicht eine Funktion im Labview wo man das Priorität der Echtzeit auf den Ultraschalsensor vergeben könnte.
Mit Timed Loops kannst du CPU Prios festlegen.

---

Sonstige Kritik: Wieso muss man dauernd einen DI-Task initialiseren, 1x auslesen, dann Task schließen, und das in einer While Loop? 1x Init und Close außerhalb der Loop ist wesentlich resourcenschonender. Da du diese Inputs sowieso nur alle 100 ms in der Parallel-Loop verarbeitest, könntest du sie auch direkt dort auslesen.

Was soll die State-Machine-Loop bezwecken? Ab dem zweiten Durchlauf ruft sie nur den Case "Initialize Left US" auf.

Wieso muss man Berechnung geteilt durch 2 mal 343 mal 100 geteilt durch 1000000 in jedem Durchlauf machen, fass das zu 1 Operation zusammen.

---

Du könntest auch die Auswertung des Ultraschall Sensor im FPGA programmieren, dort kannst du den DIO wesentlich schneller auslesen und die Auswertung braucht auch keine CPU-Zeit.
http://www.ni.com/product-documentation/14620/de/

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.09.2016, 15:19 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2016 15:27 von berlinfatih.)
Beitrag #6

berlinfatih Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Apr 2016

2015
2014
EN



RE: Richtige umgang mit Ultraschalsensor und mehreren While-Schleifen in eine VI
Hallo Jens,

(19.09.2016 17:28 )jg schrieb:  Was soll die State-Machine-Loop bezwecken? Ab dem zweiten Durchlauf ruft sie nur den Case "Initialize Left US" auf.
Ich hatte das Programm auf das wesentliche abgespeckt. Deswegen ist es so ungünstig dargestellt. Normalerweise sind 3 Ultraschalsensoren im Programm drinne. Diese geben dann alle eine dbl Wert an die "State-Machine-Loop" weiter, wo diese bei jede Lesevorgang mit eine Wert (Abstandswert) verglichen werden. Mir ist aber auch aufgefallen, das ich bei "Initialize Left US" hängen bleibe. Hätte nicht gedacht, das du mein ganzen Programm dir anschaust Big GrinBig Grin

Habe es aber geändert, damit ich an "Initialize Right US" weiter komme Habe auch zusätzlich auf Empfehlung von GerdW Wait-Time eingebaut.

(19.09.2016 17:28 )jg schrieb:  Wieso muss man Berechnung geteilt durch 2 mal 343 mal 100 geteilt durch 1000000 in jedem Durchlauf machen, fass das zu 1 Operation zusammen.
Werde Zusammenfassen. Danke
---
(19.09.2016 17:28 )jg schrieb:  Du könntest auch die Auswertung des Ultraschall Sensor im FPGA programmieren, dort kannst du den DIO wesentlich schneller auslesen und die Auswertung braucht auch keine CPU-Zeit.
http://www.ni.com/product-documentation/14620/de/
Nachdem ich in den anderen While-Loop Funktionen Wait-Time eingebaut habe, werden die Zahlen der Ultraschalsensoren flüssiger angezeigt. Ich habe bei der While-Loop Funktion der Ultraschalsensoren elapsed time Funktion eingebaut, damit nur eine Ultraschalsensor zu einer Zeitpunkt läuft und nicht mehrere gleichzeitig. Weil diese war meine Meinung nach auch das Problem, wozu ich ungenau Werte bekomme wenn ich mehrere Ultraschalsensoren gleichzeitig betreibe.
Theoretisch funktioniert es. Praktisch müsste ich es zu Hause ausprobieren. Werde mich dann nochmal melden. Danke erstmal für die Unterstützung.

Gruß Fatih






Hallo Gerd,

(19.09.2016 07:13 )GerdW schrieb:  ALLE Schleifen sollten Wartezeiten haben - entweder über eine explizite Wait-Funktion oder über einen blockierenden Funktionsaufruf (wie DAQmxRead, VISARead, QueueRead, etc.)!

Hatte vergessen zu schreiben. Die Zahlen sind, wenn man mehrere Ultraschalsensoren gleichzeitig betreibt, ungenau und verhaken öfter.
Nun nachdem ich in den anderen While-Loop Funktionen Wait-Time eingebaut habe, werden die Zahlen der Ultraschalsensoren flüssiger und etwas genauer angezeigt.

Um die Genauigkeit zu bessern betreibe ich die 3 While-Loop Funktion der Ultraschalsensoren über eine StateMaschine und jede Ultraschalsensore ist über "elapsed time" Funktion nur begrenzt an. Theoretisch funktioniert es. Praktisch müsste ich es zu Hause ausprobieren. Werde mich dann nochmal melden. Danke erstmal für die Unterstützung.

Gruß
Fatih
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.09.2016, 17:48
Beitrag #7

berlinfatih Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Apr 2016

2015
2014
EN



RE: Richtige umgang mit Ultraschalsensor und mehreren While-Schleifen in eine VI
Hallo Jens und Gerd,

mit der Benutzung von Elapsed Time laufen die Ultraschalsensoren stabiler als vorher. Es ist aber ausbaufähig. Leider muss ich mich mit der anderen Komponenten beschäftigen, so das ich diese Thema vorerst nach hinten verschiebe.

Ich danke euch erstmal für eure Unterstützung.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: