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 

Messwertübertragung vom FPGA zur RT-Anwendung



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!

31.01.2011, 14:30 (Dieser Beitrag wurde zuletzt bearbeitet: 31.01.2011 14:33 von Matze.)
Beitrag #1

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Messwertübertragung vom FPGA zur RT-Anwendung
Hi zusammen,

mein cRIO macht ganz komische Sachen. Ich lese mehere Kanäle per FPGA ein. Im FPGA filter ich die Werte und übertrage sie zur RT-Anwendung. Dort lese ich die Werte aus dem FIFO aus.
Das Ganze mache ich mit 2 Messkarten und je 6 Kanälen. Pro Messkarte verwende ich einen DMA-FIFO.

Das sieht wie folgt aus.

Werte per FPGA einlesen und filtern:

   

   

In der RT-Anwendung lese ich die Werte so aus:

   

Die Anzahl der auszulesenden Elemente liegt in meinem Fall bei einer durch 6 teilbaren Zahl wie z.B. 600.

Nun sollte man meinen, dass die Werte in jedem FIFO in dieser Reihenfolge stehen (FXP-Array in der RT-Anwendung):

Kanal0, Kanal1, Kanal2, Kanal3, Kanal4, Kanal5, Kanal0, Kanal1, ...

Prinzipiell klappt das auch, aber manchmal landen die Werte am falschen Platz (nach einen cRIO-Reboot). Die Werte von Kanal 4 stehen dann an der Stelle von Kanal 5. Alle sind um eine Stelle verschoben.
Ich habe auch schon versucht, die FIFOs zu leeren. Aber das half nichts.

Seht ihr einen Fehler?
Ich bin wirklich am Verzweifeln. Sollte sich herausstellen, dass es nicht an meinem Code liegt (muss egtl. am Code liegen), war das mein letztes cRIO ...

Frustriert grüßt
Matze

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.02.2011, 16:22
Beitrag #2

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Messwertübertragung vom FPGA zur RT-Anwendung
Keiner 'ne Idee?

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.02.2011, 16:37
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Messwertübertragung vom FPGA zur RT-Anwendung
Leider nicht auf die Schnelle. Ich tippe mal darauf, dass der FPGA früher anläuft als die RT-Software?!

Eine Idee zur Behebung: Kannst du noch irgendwie den Index deines Array-Elements in den FIFO mitreinnehmen? Dann kannst du bei der Entnahme aus dem FIFO genau sagen -> das ist jetzt Element 1, das Element 2, etc...

Oder irgendein "Trennzeichen"-Element in deinen FIFO einbauen. Quasi noch eine Element 7, dass du mit einem Wert belegst, der unmöglich vorkommen kann. Das ist dann dein Trigger für ein neues Datenpaket. Wie bei einer schönen RS232-Kommunikation.

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
01.02.2011, 17:18 (Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2011 17:19 von Matze.)
Beitrag #4

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Messwertübertragung vom FPGA zur RT-Anwendung
Hallo Jens,

danke für deine Antwort.

An so eine Art Header dachte ich auch erst, aber das ist vermutlich ein ordentlicher Overhead. Den Header benötige ich eigentlich nur beim Programmstart und danach nicht mehr. Dann müsste ich jeden 7. Wert ignorieren.

Normalerweise sollte es so auch funktionieren und in geschätzten 95% der Fälle klappt's auch. Nur kann es nach einem Reboot sein, dass es nicht funktioniert.
Die FIFOs sind ja leer nach dem Start, erst recht, wenn ich diese über FIFO.Stop aus der RT-Anwendung leere.
Ich verstehe das wirklich nicht.

Meine RT-Anwendung startet vor dem FPGA. Das FPGA starte ich dann zu Beginn meiner RT-Anwendung über die FPGA-Referenz.

Grüße
Matze

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2011, 08:21 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2011 08:23 von snuz.)
Beitrag #5

snuz Offline
LV-Eumel
**


Beiträge: 245
Registriert seit: Mar 2009

2011
2008
EN


Deutschland
Messwertübertragung vom FPGA zur RT-Anwendung
Hallo Mechatronik-Ingenieur,

kannst Du mal die Schleifen-Iteration aus Bild zwei, in ein Array "schreiben lassen" und die Werte die es beinhaltet nach einem Reboot und einem Durchlauf kontrollieren?

Gruß snuz

Es gibt 10 Arten von Menschen... Die die Binärrechnung beherrschen und die die es nicht tun.

http://www.techniker2013.eu
http://www.plapilab.de
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2011, 11:38
Beitrag #6

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Messwertübertragung vom FPGA zur RT-Anwendung
Hallo,

die Werte stimmen (leider). Ich kann nicht reproduzieren, wann es nicht geht.

Ich habe Jens' Vorschlag mit dem Header nun umgesetzt. Der Overhead hält sich sogar sehr in Grenzen. Im FPGA schreibe ich den Header nur zu Beginn in die FIFOs und werte ihn in der RT-App einmalig vor den Messschleifen aus, danach nicht mehr.

Mal sehen, wie sich das nun verhält.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.02.2011, 21:24
Beitrag #7

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Messwertübertragung vom FPGA zur RT-Anwendung
Irgendwie funktioniert das nach wie vor nicht. Der Header kommt mal richtig, mal nicht.

NI RIO 3.5.1 ist noch aktuell oder?
Nicht dass es an der Firmware liegt. Ich kappier's echt nicht. Eigentlich ist das eine ganz triviale Messwertübertragung vom FPGA zur RT-App.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.02.2011, 17:56 (Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2011 18:02 von Nilbog.)
Beitrag #8

Nilbog Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Oct 2010

2009
2008
en


Deutschland
RE: Messwertübertragung vom FPGA zur RT-Anwendung
Hallo,

was aus deinen Screenshots nicht so wirklich hervorgeht ist wie die Synchronisation von FPGA und RT aussieht. Was passiert wenn die FIFOs volllaufen? Was hast du denn bei deinen Timeouts angeschlossen? Wie groß sind deine FIFOs?
Vermutlich laufen deine FIFOs über. Recht viel anderes kann ich mir eigentlich nicht vorstellen.
Brauchst du denn einen kontinuierlichen Datenstrom oder nur immer einige hundert Werte? Wenns nur einige Werte sind könntest du mit Interupts RT und FPGA synchronisieren. Allerdings klingt das von dir beschriebene Verhalten so als würde es laufen wenns erstmal läuft, allerdings teilweise mit verschobenen Kanälen. Als Idee könntest du deinen kompletten FPGA-Code in eine Flache Sequenz packen und vor deinen Code(in einen Sequenzrahmen) ein "wait for Interupt" setzen. Den Interupt kannst du dann vom RT aus setzen bevor du das erste mal Daten abholst (aber nach RT Initialisierung). Damit könntest du ein Vollaufen deines FIFOs verhindern. Es könnte durchaus sein das dein RT mal länger und mal kürzer braucht um die Schleife zum Abholen der Daten zu Starten(File I/O, etc. ).
Über die FIFO Größen, die Remaining elements und die Anzahl der ausgelesenen Daten kannst du auch einfach eine Prüfung deines FIFO Füllstandes implementieren. Wenn dein FIFO voll ist hättest du an dieser Stelle ein Problem, das du behandeln solltest.
Das leeren des FIFO vor dem Abholen ist eher problematisch, da du ja nie weist, wann du entleerst und wo der FPGA gerade beim Schreiben in den FIFO ist. Sicherer ist eine Synchronisierung.
Du könntest auch mit (-1) im FPGA in den FIFO schreiben, dann steht zwar dein FPGA wenn du die Daten nicht abholst, aber sobalds losgelaufen ist sollte das ja kein Problem sein. Im Zweifel gibt dann das RT(wenn es zu langsam abholt) den Takt vor und es entsteht ein Jitter(Größe des FIFOs).

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.05.2011, 20:49
Beitrag #9

RosJon Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: Mar 2009

2015
2005
DE

48231
Deutschland
RE: Messwertübertragung vom FPGA zur RT-Anwendung
Hallo Matze,

hatten das Problem auch, haben es mit den Interupts gelöst.
Bei Interesse, könnte ich nächste Woche unseren Code kurz posten. Bin diese Woche nicht im Büro.

Grüße
RosJon

P.S.: Hat jemand eine Lösung 7-10 analoge Signale ohne DMA Fifo zu streamen. Komme mit den 3 vorhandenen DMA Fifos nicht aus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.05.2011, 19:26 (Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2011 19:28 von cb.)
Beitrag #10

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
RE: Messwertübertragung vom FPGA zur RT-Anwendung
ich streame alles was vom FPGA zum RT geht über einen FIFO und alles was vom RT zum FGPA geht über einen anderen, mir reichen immer 2 FIFOs ...

Erfassung auf dem FPGA
   
die VIs mit den Uhren sind für die Frage eigentlich irrelevant, das sind nur verschiedene Sample-Clocks

In den FIFO schieben
   

Aus dem FIFO auslesen
   

Kanäle trennen
   

Kanäle skalieren
   

funktioniert eigentlich immer ... und wenn's doch mal Probleme gibt, dann liegt es in 50% der Fälle daran, dass ich die Anzahl der Kanäle und/oder Samples falsch eingestellt habe und in 50% der Fälle daran, dass der FIFO zu klein ausgewählt ist, ansonsten sind diese Routinen durch nichts zu erschüttern ...

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen 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 7.928 26.10.2015 20:41
Letzter Beitrag: Felix777
  FPGA-Referenz öffnen: FPGA-VI nicht kompiliert LauraP. 9 13.238 17.03.2015 16:58
Letzter Beitrag: LauraP.
  FPGA-Anwendung verhält unter LV2010 anders Matze 5 5.725 31.08.2010 13:09
Letzter Beitrag: Matze

Gehe zu: