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 

TypeCast U16-Array auf FXP-Array - zu wenige Elemente



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!

13.03.2012, 10:21
Beitrag #1

eb Offline
LVF-Lernwilliger
***


Beiträge: 292
Registriert seit: Mar 2008

2014
2008
EN

12xxx
Deutschland
TypeCast U16-Array auf FXP-Array - zu wenige Elemente
Hallo zusammen,

gestern ist mir wieder mal sauer aufgestoßen, dass ich keine Arrays aus U16 in Arrays aus FXP "typecasten" kann. Soweit ich das herausfindenkonnte funktionieren die anderen DatenTypen wunderbar: es werden immer sauber alle Bits "uminterpretiert". Bspw. stecken im Ausgangs-Array 2Elemente U16 und ich typecaste das nach U8, dann sind es 4xU8 Elemente. Aber mit dem FXP Datentype habe ich Probleme!

Hier mein konkretes Problembeispiel:
   

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.03.2012, 11:24
Beitrag #2

eb Offline
LVF-Lernwilliger
***


Beiträge: 292
Registriert seit: Mar 2008

2014
2008
EN

12xxx
Deutschland
RE: TypeCast U16-Array auf FXP-Array - zu wenige Elemente
Hallo nochmal,

ich habe ein weiteres Test-VI gebaut, was mein "Problem" noch einfacher veranschaulicht. Es enthält 3 Tests, wobei die ersten beiden funktionieren der dritte aber fehlschlägt. Aber bitte seht selbst:
   
   

Wo steckt mein Denkfehler, oder ist es tatsächlich ein Bug?

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.03.2012, 11:49
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.412
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: TypeCast U16-Array auf FXP-Array - zu wenige Elemente
Hallo Erik,

frag doch mal bei NI nach, warum ein FXP-Array intern nach U64 gecastet wird, ein skalares FXP degegen nach U8. Würde mich auch interessieren...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.03.2012, 12:01
Beitrag #4

RoKi0815 Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Dec 2011

2010
2011
DE_EN


Deutschland
RE: TypeCast U16-Array auf FXP-Array - zu wenige Elemente
Der Typecast-Block an sich nimmt meiner Meinung nach keine Arrays an, sozusagen, versuchst du ein Element vom Typ ArrayFXP in ein Element vom Typ ArrayU8 umzuwandeln. Arrays werden in LabVIEW scheinbar anders gespeichert als reine Variablen. Also ist ein Array U8 genauso groß wie ein Array U64? Das müsste man genauer untersuchen.
Jedenfalls, geht das so nicht wirklich. Das jeder 8. Wert stimmt liegt dann (wenn meine erste Ausssage stimmt) daran, dass der Typecast bei Elementen mit weniger Bits als der geforderte Typ, die Bits in den Upper-Bit bereich schiebt. (siehe dazu die LV-Hilfe) Größter unsigned Datentyp ist U64, also 8x8 Bits, also 8x U8.
Hab das natürlich jetzt nicht kontrolliert, bin aber der Meinung, dass das der Grund sein sollte. Sollte dem nicht so sein, bitte korrigiert mich. Bin ja schließlich lernwillg. Wink

PS: Für FXP Typecasts nutze ich in der Regel gleich die vorgefertigten Blöcke für den FXP-Typ.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.03.2012, 12:57 (Dieser Beitrag wurde zuletzt bearbeitet: 13.03.2012 12:59 von rolfk.)
Beitrag #5

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: TypeCast U16-Array auf FXP-Array - zu wenige Elemente
(13.03.2012 11:49 )GerdW schrieb:  Hallo Erik,

frag doch mal bei NI nach, warum ein FXP-Array intern nach U64 gecastet wird, ein skalares FXP degegen nach U8. Würde mich auch interessieren...

Wer sagt denn dass ein FXP intern ein U8 ist? Wenn Du einen String von 2Millionen Bytes in einen U8 Typecasted nimmt LabVIEW auch einfach den ersten Character und tut nichts mit dem Rest. Das ist was die ersten zwei Beispiele tun. Typecaste einen Skalar FXP in ein Byte Array und Du erhälst genau 8 Bytes. Das ist das interne Format für ein FXP da er maximal 64 Bits haben kann. Das dynamisch im Speicher anders machen zu wollen wäre ziemlich sinnlos, da die Ersparnisse an Speicher minimal sind, aber die Performanceauswirkungen gewaltig zu Buche schlagen können. Der FPGA Compiler wird wahrscheinlich schon ein Optimierungsschritt haben um bei der Umsetzung nach FPGA diese unbenützten Bits wegzuoptimieren, was aber wohl einige Zeit beim Compilieren hinzugefügt hat.

Aber FPGA Compilieren macht man typischerweise nur ab und zu, das Diagram checken und für Compilierung bereithalten wird andauernd bei jeder Editoperation im Hintergrund getan.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.03.2012, 13:26
Beitrag #6

eb Offline
LVF-Lernwilliger
***


Beiträge: 292
Registriert seit: Mar 2008

2014
2008
EN

12xxx
Deutschland
RE: TypeCast U16-Array auf FXP-Array - zu wenige Elemente
Hallo und danke für das rege Interesse,

Ich habe nun beim Support von NI nachgefragt:
Es ist bestätigt, dass für RT und Host-Systeme (nicht FPGA) der FXP-Datentyp intern immer mit 64bit gerechnet wird. Das ist die maximale Breite des Datentyps. Es gibt (noch) keine Ermittlung des Mindestbreite, selbst wenn man explitzit bspw. den FXP-Datentyp auf 8bit-Breite eingestellt hat.

kurzum: Its a feature, not a bug.

Da ich den FXP-Datentyp zunächst nur auf der FPGA-Ebene verwendete (und es da wie vorhergesehen funktioniert), glaubte ich zunächst einen Bug entdeckt zu haben, als ich es auf Host-Seite ausprobierte. Es ist für mich schlicht nicht "intuitiv" wenn ein explizit auf 8bit gestellter Datentyp intern weiterhin 64bit hat. Wenn ich explizit U8 wähle, dann ist der intern ja auch nicht U64, oder?

Alles jammern hilft nichts. Jetzt habe ich die Funktionsweise verstanden und werde meinen Code entsprechend anpassen.


Danke und Gruß
Erik
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.03.2012, 14:46
Beitrag #7

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: TypeCast U16-Array auf FXP-Array - zu wenige Elemente
(13.03.2012 13:26 )erik.brenncke schrieb:  Hallo und danke für das rege Interesse,

Ich habe nun beim Support von NI nachgefragt:
Es ist bestätigt, dass für RT und Host-Systeme (nicht FPGA) der FXP-Datentyp intern immer mit 64bit gerechnet wird. Das ist die maximale Breite des Datentyps. Es gibt (noch) keine Ermittlung des Mindestbreite, selbst wenn man explitzit bspw. den FXP-Datentyp auf 8bit-Breite eingestellt hat.

kurzum: Its a feature, not a bug.

Da ich den FXP-Datentyp zunächst nur auf der FPGA-Ebene verwendete (und es da wie vorhergesehen funktioniert), glaubte ich zunächst einen Bug entdeckt zu haben, als ich es auf Host-Seite ausprobierte. Es ist für mich schlicht nicht "intuitiv" wenn ein explizit auf 8bit gestellter Datentyp intern weiterhin 64bit hat. Wenn ich explizit U8 wähle, dann ist der intern ja auch nicht U64, oder?

Alles jammern hilft nichts. Jetzt habe ich die Funktionsweise verstanden und werde meinen Code entsprechend anpassen.


Danke und Gruß
Erik

Du vregisst den Unterschied. Ein U8 oder U64 ist ein explizit gewählter Datentyp der ja auch ein eigenes Icon, und im Falle der polymorphen Funktionen auch eigene Methoden hat, aber der FXP ist ein nachträglich konfigurierbarer Datentyp. Das eine wird vom Syntaxchecker einmal bei der Auswahl des Datentyps festgelegt, das andere ist mehr eine Laufzeiteinstellung, ausser wenn es im FPGA Compile in den Bytecode umgesetzt wird.

Wäre auch nicht praktisch um aus 64 verschiedenen FXP Icons wählen zu müssen.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.03.2012, 17:07 (Dieser Beitrag wurde zuletzt bearbeitet: 13.03.2012 17:12 von eb.)
Beitrag #8

eb Offline
LVF-Lernwilliger
***


Beiträge: 292
Registriert seit: Mar 2008

2014
2008
EN

12xxx
Deutschland
RE: TypeCast U16-Array auf FXP-Array - zu wenige Elemente
Danke,

das hab ich soweit jetzt verstanden, trotzdem beißt sich das in meinem bescheidenen LV-Verständnis (noch) etwas mit der "intuitiven" Polymorphie beim TypeCast.

Gruß


offtopic: Es wären sogar mehr als 64icons, da man ja auch zw. signed/unsigned unterscheiden kann.
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
  Array aus Clustern simcum 6 3.032 26.10.2023 08:39
Letzter Beitrag: GerdW
  Array Bearbeitung simcum 4 3.259 04.03.2022 09:59
Letzter Beitrag: Kiesch
  2D Array einzelne Zeilen in anderes Array michi96 2 2.686 15.12.2021 10:53
Letzter Beitrag: michi96
  HTML als 2D Array ares2013 5 2.802 18.11.2021 19:50
Letzter Beitrag: GerdW
  Maximalwert aus Array speichern Hans96 3 4.066 15.07.2021 14:56
Letzter Beitrag: Hans96
  Array mit Array auslesen und Array erzeugen Harry2000 10 7.177 08.05.2021 06:32
Letzter Beitrag: Martin.Henz

Gehe zu: