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 

Drehzahlmessung im FPGA über IO



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.06.2016, 09:47 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2016 09:54 von R.Fuertig.)
Beitrag #1

R.Fuertig Offline
LV developer
*


Beiträge: 44
Registriert seit: Jan 2015

11-17
2013
DE

08538
Deutschland
Drehzahlmessung im FPGA über IO
Hallo Leute,

ich möchte mit dem FGPA eine Drehzahl messen, welche ich über Digitale I/O 's bekomme (TTL). Wie kann ich das machen? Das eine Beispiel was ich gefunden habe funktioniert nicht, weil das aussieht als wäre es auf dem RT programmiert, wie ist es sonst möglich, das ein IO Modul in einer Zeitgescheuerten Schleife ist. Und dort ist auch ein CPU-Kern anzugeben, das geht nicht im FPGA.

Hat jemand ein VI oder kann mir erklären, wie ich vorgehen muss, dass ich von mehreren IO's jeweils einzeln dann, die Drehzahl des Motors raus bekomme??

Später muss es für ingesammt 6 einfachen und 6 weiteren Motoren mit Signal A und B funktionieren (Gleichzeitig) und 6 weitere Flankenzälungen.

Vielen dank schonmal im Vorraus.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.06.2016, 10:17 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2016 10:19 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Drehzahlmessung im FPGA über IO
Hallo R.,

Zitat:Das eine Beispiel was ich gefunden habe funktioniert nicht, weil das aussieht als wäre es auf dem RT programmiert, wie ist es sonst möglich, das ein IO Modul in einer Zeitgescheuerten Schleife ist. Und dort ist auch ein CPU-Kern anzugeben, das geht nicht im FPGA.
Hast du das VI einfach mal auf deinem FPGA ausprobiert? Der IO-Zugriff ist doch ein FPGA-IO-Node…

Du kannst das Problem wie im gezeigten Snippet lösen: die Zeitdifferenz zwischen zwei Pulsen/Flanken bestimmen.
Ich mache das meist einfacher und zähle einfach die Anzahl der Schleifendurchläufe zwischen zwei steigenden Flanken. Im RT-Host wird diese Angabe dann skaliert (mit Anzahl Flanken pro Umdrehung und der vorgegebenen Zeit pro Iteration)…

Zitat:Später muss es für ingesammt 6 einfachen und 6 weiteren Motoren mit Signal A und B funktionieren (Gleichzeitig) und 6 weitere Flankenzälungen.
Du brauchst also ein (notfalls reentrantes) subVI für einfache Pulsgeber und ein weiteres für AB-Geber. Wie oft du die dann später benutzt, wird nur durch die FPGA-Größe eingeschränkt…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.06.2016, 10:58
Beitrag #3

R.Fuertig Offline
LV developer
*


Beiträge: 44
Registriert seit: Jan 2015

11-17
2013
DE

08538
Deutschland
RE: Drehzahlmessung im FPGA über IO
Ich habe das Beispiel in LV nicht gefunden. Habe es selber macl versucht zu programmieren, aber da kam immer die Meldung das das einlesen des IO's zu viele ticks benötigt.

Gibt da schon VI's für diese Zählungen? Ich verstehe nämlich gerade nicht, wie du das meistn, mit dem:

'Ich mache das meist einfacher und zähle einfach die Anzahl der Schleifendurchläufe zwischen zwei steigenden Flanken. Im RT-Host wird diese Angabe dann skaliert (mit Anzahl Flanken pro Umdrehung und der vorgegebenen Zeit pro Iteration)…'
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.06.2016, 11:02
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Drehzahlmessung im FPGA über IO
Hallo R.,

Zitat:da kam immer die Meldung das das einlesen des IO's zu viele ticks benötigt.
Nicht jedes DIO-Modul ist schnell genug für den Einsatz in einer SCTL!
Ich benutze meist die 9403, die erlaubt z.B. max. 140kHz und ich nutze meist (einfache While-)Schleifen mit 100kHz (oder 10µs Wartezeit, rechnet sich einfacher)!

Zitat:Ich verstehe nämlich gerade nicht, wie du das meistn,
vereinfachter Pseudocode:
Code:
count := 0
WHILE
  IF steigende Flanke(DIO) THEN
    output := count
    count := 0
  ELSE
    count++
  ENDIF
WEND

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.06.2016, 11:42
Beitrag #5

R.Fuertig Offline
LV developer
*


Beiträge: 44
Registriert seit: Jan 2015

11-17
2013
DE

08538
Deutschland
RE: Drehzahlmessung im FPGA über IO
Lässt du diesen Code im RT oder auf dem FPGA laufen?

Ich möchte ja die Digitalen IO' im FPGA aufnehmen. Und dann am liebsten über ein FIFO mir nur die aktuelle Drehzahl im RT anziegen lassen. Diese Soll immer 0 sein, wenn sich der Motor nicht bewegt und n wenn er sich bewegt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.06.2016, 16:33
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Drehzahlmessung im FPGA über IO
Hallo R.,

der Code läuft im FPGA!

Nur die Auswertung mit "0 wenn der Motor steht" erfordert etwas Sonderbehandlung: normalerweise würdest du ja "unendlich" auf den nächsten Puls warten…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.06.2016, 08:41 (Dieser Beitrag wurde zuletzt bearbeitet: 03.06.2016 11:11 von R.Fuertig.)
Beitrag #7

R.Fuertig Offline
LV developer
*


Beiträge: 44
Registriert seit: Jan 2015

11-17
2013
DE

08538
Deutschland
RE: Drehzahlmessung im FPGA über IO
Hallo Gerd,


(02.06.2016 16:33 )GerdW schrieb:  Nur die Auswertung mit "0 wenn der Motor steht" erfordert etwas Sonderbehandlung: normalerweise würdest du ja "unendlich" auf den nächsten Puls warten…

Genau das ist das Problem an dem Ich gerade hänge. Auch das der FiFo leer ist, wenn ich nicht verfahre, oder die Impulse zu lage auseinander sind. Ich bekomme also nicht dauerhaft die richtige Drehzahl. Bahn


Ich habe es mitlerweile soweit, dass ich in meinem FIFO die aktuelle Drehzahl (Schleifendurchläufe bis Impuls) bekomme, aber mit sehr großen Zeitdifferenzen. Heißt, ich lasse mein Antreib drehen und erst 5sek später bekomme ich in einem RT-Progamm im Fifo einen Wert, der ungleich 0 ist.

Gibt es denn irgendwie eine andere Möglichkeit die Drehzahl im FPGA zu ermitten über Impulse? Das Problem ist doch bestimmt schon öfters bearbeitet wurde, da werde ich doch nicht der erste sein?

Mfg


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.06.2016, 11:10 (Dieser Beitrag wurde zuletzt bearbeitet: 03.06.2016 11:13 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Drehzahlmessung im FPGA über IO
Hallo R.,


Zitat:Gibt es denn irgendwie eine andere Möglichkeit die Drehzahl im FPGA zu ermitten über Impulse? Das Problem ist doch bestimmt schon öfters bearbeitet wurde, da werde ich doch nicht der erste sein?
Nein, du bist nicht der erste.
Das Problem ist: wenn dein Motor steht, kommen keine Encoderpulse. Ohne Impulse aber keine neue Drehzahlberechnung. Das hast du ja selbst erkannt:
Zitat:Genau das ist das Problem an dem Ich gerade hänge. Auch das der FiFo leer ist, wenn ich nicht verfahre, oder die Impulse zu lage auseinander sind. Ich bekomme also nicht dauerhaft die richtige Drehzahl.

Lösung in Pseudocode, als Ergänzung zum obigen Code-Vorschlag:
Code:
IF count >= max_count THEN
  output := max_count+1
  count := 0
ENDIF
Wenn der Zähler ein Maximum erreicht, geht die Routine von einem stehenden Motor aus. Dann gibt man eben einen Wert in den FIFO, der dem RT-Host eben diesen stehenden Motor signalisiert…

Eine Drehzahlbestimmung über Pulse hat immer zwei Messbereichsgrenzen:
- die maximale Drehzahl wird durch Anwendung von Nyquist auf deine Samplerate bestimmt
- die minimale Drehzahl wird (in meiner Methode) durch den Maximalwert des Counters bestimmt - und ist eben dadurch größer als Null…

Zu deinem Bild:
Was machst du da eigentlich in diesem VI? Warum wird der DIO-Pin an zwei Stellen abgefragt? Wo kommt die lokale Variable "Timeout" her?
Einfach mal Ctrl-U benutzen und gelegentlich Kommentare im BD verteilen würde hier sehr helfen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.06.2016, 11:12 (Dieser Beitrag wurde zuletzt bearbeitet: 03.06.2016 11:16 von R.Fuertig.)
Beitrag #9

R.Fuertig Offline
LV developer
*


Beiträge: 44
Registriert seit: Jan 2015

11-17
2013
DE

08538
Deutschland
RE: Drehzahlmessung im FPGA über IO
Richtig,

Ich habe mein oberen Beitrag gerade verändert, da ich schon ein Schritt weiter gekommen bin.
(03.06.2016 11:10 )GerdW schrieb:  Zu deinem Bild:
Was machst du da eigentlich in diesem VI? Warum wird der DIO-Pin an zwei Stellen abgefragt? Wo kommt die lokale Variable "Timeout" her?
Einfach mal Ctrl-U benutzen und gelegentlich Kommentare im BD verteilen würde hier sehr helfen…

Also Ich habe es mir so gedacht, dass ich Eben immer ein Flankenwechsel abfrage, wenn 5000 Schleifendurchläufe keine Flanke kam, geht er in Timeout. Und wartet dort solange, bis wieder ein Impul kommt, das ist dann der erste impuls der neuen Bewegung, und ab da wird wieder gemessen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.06.2016, 11:22
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Drehzahlmessung im FPGA über IO
Hallo R.,

Zitat:Heißt, ich lasse mein Antreib drehen und erst 5sek später bekomme ich in einem RT-Progamm im Fifo einen Wert, der ungleich 0 ist.
Dann hast du wohl einen Fehler bei der Verwaltung des FIFOs gemacht, wenn du Werte erst verzögert aus dem FIFO liest!
Entweder schaust du selbst nach - oder hängst mal VIs hier an…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Sind Referenzen auf FPGA-Variablen in FPGA vi möglich? Felix777 2 6.855 26.10.2015 20:41
Letzter Beitrag: Felix777
  Kommunikation über DMA zwischen FPGA und RT: FIFO nur für 3 ms füllen Rostra 9 8.946 18.06.2015 06:17
Letzter Beitrag: Rostra
  FPGA-Referenz öffnen: FPGA-VI nicht kompiliert LauraP. 9 11.488 17.03.2015 16:58
Letzter Beitrag: LauraP.
  auslesen von cRio9073 Karten über FPGA 03isaak 1 3.976 27.02.2014 11:02
Letzter Beitrag: GerdW

Gehe zu: