Jeder Anschluss und jede Verbindung im Blockdiagramm hat einen bestimmten Datentyp. Die Richtigkeit des Datentyps wird mit Hilfe einer Struktur im Speicher sichergestellt, die als Typdeskriptor bezeichnet wird. Dieser Typdeskriptor ist eine Folge von 32-Bit-Integern, mit der jeder Datentyp in LabVIEW beschrieben werden kann. Zahlen werden, sofern nicht anders angegeben, im Hexadezimalformat dargestellt.

Ein Typ kann komplex sein, sich also aus mehreren unterschiedlichen Typen zusammensetzen. So hat beispielsweise ein Array aus booleschen Werten den Datentyp "Array" und seine booleschen Elemente haben einen anderen Datentyp. In LabVIEW werden alle Typdeskriptoren für solche komplexen Typen in einer Liste gespeichert.

Unterschiedliche Formate

Sie können Typdeskriptoren in verschiedenen Formaten mit der Funktion Daten serialisieren oder Variant nach serialisierte Daten beobachten.

Hinweis Das Speicherformat von Typdeskriptoren hat sich in LabVIEW 8.0 geändert. In LabVIEW-Version vor 7.x werden Typdeskriptoren in Form von 16-Bit-Strings gespeichert. In LabVIEW 8.0 werden Typdeskriptoren in Form von 32-Bit-Strings gespeichert. Die Angaben zu LabVIEW-Versionen bis einschließlich 7.x sind für Sie nur von Bedeutung, wenn Sie den Modus 7.x-Daten konvertieren der Funktion "Daten serialisieren" nutzen. Die folgenden Angaben gelten nur für LabVIEW-Versionen ab 8.0. Es wird empfohlen, den Variant-Datentyp zu verwenden, um eventuelle Probleme aufgrund von Formatänderungen zu vermeiden.

Bei Anwendung der Funktion "Daten serialisieren" auf Variantdaten serialisiert LabVIEW den gesamten Inhalt des Variants einschließlich der Attribute. Mit dieser Funktion hat der Puffer des Typdeskriptors folgendes Format:

32 bits nTDs TDs
var size nTypesUsed
var size TypesUsed
wo nTDs die Anzahl der Typdeskriptoren für Elemente im Puffer ist.
TDs die Liste der nTDs ist.
var size die Größe der Variablen ist und je nach dargestelltem Wert in einer variablen Zahl (16 Bit oder 32 Bit) gespeichert wird. Wenn der Wert kleiner als 32768 ist, wird er in zwei Bytes dargestellt. Werte größer als 32768 werden in Form von vier Bytes dargestellt, wobei das höchstwertige Bit jeweils 1 ist.
nTypesUsed die tatsächliche Anzahl der Typdeskriptoren ist, die von der Einheit verwendet wird, die mit dem Puffer arbeitet.
TypesUsed die Liste der Indizes für alle Typen der verwendeten TDs ist.

Wenn Sie die Funktion "Variant nach serialisierte Daten" verwenden, serialisiert LabVIEW nur den Variant und verwirft alle Attribute. Bei dieser Funktion hat der Typdeskriptor folgendes Format:

[Größe][Typcode][Typenspezifische Angaben][Name (falls zutreffend)]

wo [Größe] das erste Word in Bytes ist und das Größen-Word enthält. Der Mindestwert von [Größe] ist 4. Sie können einen Namen (einen Pascal-String) an jeden Typdeskriptor anhängen, wodurch der Wert von [Größe] um die Länge des auf ein Vielfaches von zwei aufgerundeten Namens erhöht wird. Die Größe lautet 16 Bit.
[Typcode] das zweite Word ist. Das höchstwertige Byte des Typcodes ist für die LabVIEW-interne Verwendung reserviert. Beim Vergleichen von Typdeskriptoren sollte dieses Byte ignoriert werden. Zwei Typdeskriptoren gelten auch bei ungleichen höchstwertigen Typcode-Bytes als gleich. Der Typcode ist 16 Bit.
[Typspezifische Angaben] Zusatzangaben zum Typdeskriptor sind. Arrays und Cluster sind Strukturen oder Gruppen von Datentypen, da sie Referenzen auf andere Typen enthalten. Cluster enthalten beispielsweise zusätzliche Angaben zum Datentyp der einzelnen Elemente.
[Name] ein Pascal-String ist. Name kann vorhanden sein oder nicht.

Im Typcode ist die eigentliche Typangabe verschlüsselt, z. B. "Fließkommazahl mit einfacher Genauigkeit" oder "Fließkommazahl mit erweiterter Genauigkeit" (siehe folgende Tabelle). Diese Typcode-Werte können sich jedoch in Zukunft ändern.

Datentypen

In der folgenden Tabelle werden numerische und nicht numerische Datentypen sowie Typcodes und Typdeskriptoren aufgelistet. Der Mindestwert von [Größe] wird vor dem Typcode angezeigt. Angaben zu den möglichen Werten von [Typspezifische Angaben] werden bei manchen Datentypen nach dem Datentypen angezeigt.

Hinweis Der Name kann an jeden Typdeskriptor angehängt werden. Name ist ein Pascal-String.
Datentyp Typdeskriptor (Hexadezimalzahlen)
8-Bit-Integer 0004 xx 01
16-Bit-Integer 0004 xx 02
32-Bit-Integer 0004 xx 03
64-Bit-Integer 0004 xx 04
Vorzeichenloser 8-Bit-Integer 0004 xx 05
Vorzeichenloser 16-Bit-Integer 0004 xx 06
Vorzeichenloser 32-Bit-Integer 0004 xx 07
Vorzeichenloser 64-Bit-Integer 0004 xx 08
Fließkommazahl mit einfacher Genauigkeit 0004 xx 09
Fließkommazahl mit doppelter Genauigkeit 0004 xx 0A
Fließkommazahl mit erweiterter Genauigkeit 0004 xx 0B
Komplexe Fließkommazahl mit einfacher Genauigkeit 0004 xx 0C
Komplexe Fließkommazahl mit doppelter Genauigkeit 0004 xx 0D
Komplexe Fließkommazahl mit erweiterter Genauigkeit 0004 xx 0E
Enum-8-Bit-Integer <nn> xx 15 <k><k pstrs>
Enum-16-Bit-Integer <nn> xx 16 <k><k pstrs>
Enum-32-Bit-Integer <nn> xx 17 <k><k pstrs>
Physikalische Größe mit einfacher Genauigkeit <nn> xx 19 <k><k base-exp>
Physikalische Größe mit doppelter Genauigkeit <nn> xx 1A <k><k base-exp>
Physikalische Größe mit erweiterter Genauigkeit <nn> xx 1B <k><k base-exp>
Komplexe physikalische Größe mit einfacher Genauigkeit <nn> xx 1C <k><k base-exp>
Komplexe physikalische Größe mit doppelter Genauigkeit <nn> xx 1D <k><k base-exp>
Komplexe physikalische Größe mit erweiterter Genauigkeit <nn> xx 1E <k><k base-exp>
Boolesches 0004 xx 21
String 0008 xx 30 <dim>
Pfad 0008 xx 32 <dim>
Bild 0008 xx 33 <dim>
Array <nn> xx 40 <k dims><Element-Typdeskriptor>
Cluster <nn> xx 50 <k Elemente><Element-Typdeskriptor>
Signalverlauf <nn> xx 54 <Signalverlaufstyp> <Element-Typdeskriptor>
Referenz <nn> <Referenztyp-Code>
Variant <nn> xx 53
nn = Länge; xx = reserviert von LabVIEW; k = Anzahl; k pstrs = Anzahl der Pascal-Strings; k base-exp = Anzahl von Anzahl an Basis-Exponent-Paaren; k dims = Anzahl von Dimensionen; k elems = Anzahl von Elementen; dim ist ein 32-Bit-Integer.

Der kleinste Wert im Größenfeld des Typdeskriptors ist 4 (siehe vorhergehende Tabelle). Jedem Typdeskriptor kann allerdings ein Name (ein Pascal-String) zugefügt werden. Dann wäre das Feld für die Größe um die Länge des Namens (als ein Pascal-String) gerundet auf ein Vielfaches von 2 größer.

Enum-8-Bit-Integer

Im folgenden Beispiel eines Enum-8-Bit-Integers ohne Namen für die Elemente am, fm und fm stereo stellt jede Zeichengruppe ein 16-Bit-Word (ausgedrückt in Hexadezimalschreibweise) dar.

0016 0015 0003 0261 6D02 666D 0966 6D20 7374 6572 656F

Der Typdeskriptor umfasst die folgenden Words:

  • 0016—bedeutet, dass es insgesamt 22 Bytes gibt.
  • 0015—gibt den Typcode für einen 8-Bit-Enum-Integer an.
  • 0003—bedeutet, dass es drei Elemente gibt.
  • 0261 6D02 666D 0966 6D20 7374 6572 656F—gibt spezifische Informationen zum Typcode an. Zum Beispiel ist 0261 6D der ASCII-Code für am, und der Vorsatz 02 gibt die Größe des Strings im Hexadezimalformat an.

Wenn dieselbe 8-Bit-Enum-Ganzzahl radio genannt wurde, kann ihr Typdeskriptor interpretiert werden als:

001C 4015 0003 0261 6D02 666D 0966 6D20 7374 6572 656F 0572 6164 696F

Nachfolgend finden Sie einen Vergleich der beiden Deskriptoren:

Unterschiedliche Längen

Identische Typcodes

Identische Darstellung von Enum-Werten

Name, radio, als Pascal-String

Physikalische Größe

Im folgenden Beispiel zu einer physikalischen Größe mit doppelter Genauigkeit und der Einheit "m/s" stellt jede der Zeichengruppe ein 16-Bit-Word in Hexadezimalschreibweise dar:

000E 001A 0002 0002 FFFF 0003 0001

Der Typdeskriptor umfasst die folgenden Words:

  • 000E—bedeutet, dass es insgesamt 14 Bytes gibt.
  • 001A—gibt den Typcode für eine physikalische Größe mit doppelter Genauigkeit an.
  • 0002—bedeutet, dass es zwei Basis-Exponenten-Paare gibt.
  • 0002—gibt die Basis für die Sekunden an.
  • FFFF (-1)— gibt den Exponenten der Sekunden an.
  • 0003—gibt die Basis für die Meter an.
  • 0001—ist der Exponent der Meter.

Alle physikalischen Größen werden LabVIEW-intern in Form von Basiseinheiten gespeichert, egal in welcher Einheit die Größen angezeigt werden.

In der folgenden Tabelle sind die neun Grundeinheiten aufgelistet, die in LabVIEW verwendet werden, und die Indizes von 0 bis 8, mit deren Hilfe sie dargestellt werden.

Physikalische Größe Einheit Abkürzung Basis
Ebener Winkel Bogenmaß rad 0
Raumwinkel Steradiant sr 1
Zeit zweiter s 2
Länge Meter m 3
Masse Kilogramm kg 4
Elektrische Stromstärke Ampere A 5
Thermodynamische Temperatur Kelvin K 6
Stoffmenge Mol mol 7
Lichtstärke Candela cd 8

String-, Pfad- und Bilddatentypen

String-, Pfad- und Bilddatentypen sind 32 Bit lang, ähnlich der Dimensionsgröße von Arrays. Der momentan einzige verschlüsselte Wert in Hexadezimalschreibweise ist jedoch FFFFFFFF. Dieser Wert steht für eine variable Größe. Derzeit sind alle Strings, Pfade und Bilder größenveränderlich. Die genaue Länge wird mit den Daten gespeichert.

Array- und Cluster-Datentypen

Sowohl Array- als auch Cluster-Datentypen haben einen eigenen Typcode. Diese Datentypen enthalten auch Angaben zum Datentyp der einzelnen Elemente und die Anzahl der Dimensionen der Arrays bzw. die Anzahl der Elemente in Clustern.

Array

Der Typcode für ein Array ist 40. Der Typdeskriptor für ein Array hat das folgende Format:

<nn> xx 40 <k dims><Element-Typdeskriptor>

Das folgende Beispiel ist ein Typdeskriptor für ein 1D-Array aus Fließkommazahlen mit doppelter Genauigkeit, wobei jede Zeichengruppe ein 16-Bit-Word (ausgedrückt in Hexadezimalschreibweise) darstellt.

000E 0040 0001 FFFF FFFF 0004 000A [Typspezifische Angaben]

Der Typdeskriptor umfasst die folgenden Words:

  • 000E—gibt an, dass es insgesamt 12 Bytes gibt (die Länge des gesamten Typdeskriptors einschließlich des Elementtyp-Indizes).
  • 0040—ist der Typcode für ein Array.
  • 0001—steht für eine Dimension, die Anzahl der Dimensionen in dem Array.
  • FFFF FFFF—ist die Größe der Dimension (variable Größe). Die genaue Dimensionsanzahl, die immer größer bzw. gleich 0 sein muss, wird zusammen mit den Daten gespeichert.
  • 0004 000A—ist der Typdeskriptor für das Element. Mit Ausnahme des Arrays ist jeder Elementtyp erlaubt. In diesem Beispiel sind die Elemente Fließkommazahlen mit doppelter Genauigkeit und umfassen folgende Words:
    • 0004—gibt an, dass es insgesamt 4 Bytes gibt, was der Größe des Elements entspricht.
    • 000A—gibt den Typcode für eine Fließkommazahl mit doppelter Genauigkeit an.

Im Folgenden sehen Sie das Format des Speicherpuffers des Typdeskriptors für dieses Beispiel:

Anzahl der Typdeskriptoren 0000 0002 Die Anzahl eindeutiger Typdeskriptoren lautet 2.
Typdeskriptor 0 0004 000A Der erste Typdeskriptor ist für die Fließkommazahl mit doppelter Genauigkeit.
Typdeskriptor 1 000E 0040 0001 FFFF FFFF Der zweite Typdeskriptor steht für das Array. 000E ist die Länge des gesamten Typdeskriptors einschließlich des Elementtyp-Indizes. Das Array hat eine variable Dimensionsanzahl, daher lautet die Dimension FFFFFFFF.
Anzahl verwendeter Typen 0002 Die Gesamtanzahl von Typen lautet 2.
Genutzte Typen 0000 0001 Die verwendeten Typen sind 0 und 1.

Das folgende Beispiel zeigt einen Typdeskriptor für ein 2D-Array aus booleschen Werten:

0012 0040 0002 FFFF FFFF FFFF FFFF 0004 0021 [Typspezifische Angaben]

Der Typdeskriptor umfasst die folgenden Words:

  • 0012—gibt an, dass es insgesamt 18 Bytes gibt (die Länge des gesamten Typdeskriptors einschließlich des Elementtyp-Indizes).
  • 0040—ist der Typcode für ein Array.
  • 0002—steht für zwei Dimensionen, die Anzahl der Dimensionen in dem Array.
  • FFFF FFFF (-1)—ist die Größe der ersten Dimension (variable Größe).
  • FFFF FFFF (-1)—ist die Größe der zweiten Dimension (variable Größe).
  • 0004 0021—ist der Typdeskriptor für das Element. In diesem Beispiel haben die Elemente den Typ "boolesch" und umfassen folgende Words:
    • 0004—gibt an, dass es insgesamt 4 Bytes gibt, was der Größe des Elements entspricht.
    • 0021—ist der Typcode für ein boolesches Element.

Im Folgenden sehen Sie das Format des Speicherpuffers des Typdeskriptors für dieses Beispiel:

Anzahl der Typdeskriptoren 0000 0002 Die Anzahl eindeutiger Typdeskriptoren lautet 2.
Typdeskriptor 0 0004 0021 Der erste Typdeskriptor steht für das boolesche Element.
Typdeskriptor 1 0012 0040 0002 FFFF FFFF FFFF FFFF Der zweite Typdeskriptor steht für das Array. 0012 ist die Länge des gesamten Typdeskriptors einschließlich des Elementtyp-Indizes. Das Array hat eine variable Dimensionsanzahl, daher lautet die Dimension FFFFFFFF.
Anzahl verwendeter Typen 0002 Die Gesamtanzahl von Typen lautet 2.
Genutzte Typen 0000 0001 Die verwendeten Typen sind 0 und 1.

Cluster

Der Typcode für einen Cluster lautet 50. Der Typdeskriptor für ein Cluster hat das folgende Format:

<nn> xx 50 <k Elemente><Element-Typdeskriptor>

Das folgende Beispiel ist ein Typdeskriptor für einen Cluster aus zwei Integern, einem vorzeichenbehafteten 16-Bit-Integer und einem vorzeichenlosen 32-Bit-Integer, wobei jede Zeichengruppe ein 16-Bit-Word (ausgedrückt in Hexadezimalschreibweise) darstellt.

000E 0050 0002 0004 0002 0004 0007

Der Typdeskriptor umfasst die folgenden Words:

  • 000E—bedeutet, dass es insgesamt 14 Bytes gibt.
  • 0050—ist der Typcode für einen Cluster.
  • 0002—steht für zwei Elemente, die Anzahl der Elemente im Cluster.
  • 0004 0002—ist der Typdeskriptor des ersten Elements, ein 16-Bit-Integer mit Vorzeichen:
    • 0004—sind 4 Bytes.
    • 0002—gibt den Typcode für einen 16-Bit-Integer mit Vorzeichen an.
  • 0004 0007—ist der Typdeskriptor des zweiten Elements, ein vorzeichenloser 32-Bit-Integer:
    • 0004—sind 4 Bytes.
    • 0007—ist der Typcode für einen vorzeichenlosen 32-Bit-Integer.

Im Folgenden sehen Sie das Format des Speicherpuffers des Typdeskriptors:

Anzahl der Typdeskriptoren 0000 0003 Die Anzahl eindeutiger Typdeskriptoren lautet 3.
Typdeskriptor 0 0004 0002 Der erste Typdeskriptor ist für den 16-Bit-Integer mit Vorzeichen.
Typdeskriptor 1 0004 0007 Der zweite Typdeskriptor ist für den vorzeichenlosen 32-Bit-Integer.
Typdeskriptor 2 000E 0050 0002 Der dritte Typdeskriptor steht für den Cluster. 000E ist die Länge des gesamten Typdeskriptors einschließlich des Cluster-Indizes.
Anzahl verwendeter Typen 0003 Die Gesamtanzahl von Typen lautet 3.
Genutzte Typen 0000 0001 0002 Die verwendeten Typen sind 0, 1 und 2.

Da Array- und Cluster-Typdeskriptoren andere Typdeskriptoren enthalten, können sie stark verschachtelt sein.

Wie Sie sehen, enthält die Typenliste keine doppelten Einträge. Das folgende Beispiel ist eine Typdeskriptor-Liste für ein 1D-Array aus Fließkommazahlen mit doppelter Genauigkeit und einen Cluster mit einer Fließkommazahl mit doppelter Genauigkeit.

Anzahl der Typdeskriptoren 0000 0003 Die Anzahl eindeutiger Typdeskriptoren lautet 3.
Typdeskriptor 0 0005 000A 00 Der erste Typdeskriptor steht für den Elementtyp. Er wird genauso angezeigt wie für einen skalaren Wert des gleichen Typs.
Typdeskriptor 1 000C 0040 0001 FFFF FFFF 0000 Der zweite Typdeskriptor steht für das Array. 000C ist die Länge des gesamten Typdeskriptors einschließlich des Elementtyp-Indizes. Das Array hat eine variable Dimensionsanzahl, daher lautet die Dimension FFFFFFFF.
Typdeskriptor 2 0008 0050 0001 0002 Der dritte Typdeskriptor steht für den Cluster. 0008 ist die Länge des gesamten Typdeskriptors einschließlich des Cluster-Indizes. Der Cluster enthält ein Element des Typs am Index 2.
Anzahl verwendeter Typen 0003 Die Gesamtanzahl von Typen lautet 4.
Genutzte Typen 0000 0001 0000 0002 Die verwendeten Typen sind 0, 1, 0 und 2.

Beachten Sie, dass der Typ, der sich im Cluster am Index 2 befindet, aus den Typen des Arrays herausgesucht werden muss. Das zweite Element in den verwendeten Typen ist 0, was dem Typdeskriptor 0 entspricht.

Signalverlauf

Der Typcode für einen Signalverlauf lautet 54. Nach dem Typcode folgt ein Word mit dem Signalverlaufstyp. Der Typdeskriptor des Clusters mit den Elementen des Signalverlaufs kommt nach diesem Word. Es gibt fünf Kategorien von Signalverläufen:

  • Analog
  • Digital
  • Digitaldaten
  • Zeitstempel
  • Dynamisch

Analoger Signalverlauf

Die folgende Tabelle zeigt die verschiedenen analogen Signalverläufe.

Typ Untertyp-Code
8 Bit mit Vorzeichen 14
16 Bit mit Vorzeichen 2
32 Bit mit Vorzeichen 15
64 Bit mit Vorzeichen 19
Doppelte Genauigkeit 3
Einfache Genauigkeit 5
Erweiterte Genauigkeit 10
8 Bit ohne Vorzeichen 11
16 Bit ohne Vorzeichen 12
32 Bit ohne Vorzeichen 13
64 Bit ohne Vorzeichen 20
Komplex, einfache Genauigkeit 16
Komplex, doppelte Genauigkeit 17
Komplex, erweiterte Genauigkeit 18

Im folgenden Beispiel zu einem Signalverlauf doppelter Genauigkeit stellt jede der Zeichengruppe ein 16-Bit-Word in Hexadezimalschreibweise dar:

0006 0054 0003 //Größe des Signalverlaufs, Signalverlaufs-Typcode und Untertyp-Code 3 mit doppelter Genauigkeit

0080 0050 0005 //Größe des Clusters, Cluster-Code und Anzahl der Elemente

<Typdeskriptor des Zeitstempels>

<Typdeskriptor von dt>

<Typdeskriptor des Arrays des Elementtyps>

<Typdeskriptor des ungenutzten Fehler-Clusters>

<Typdeskriptor von Attributen>

Der Typdeskriptor anderer analoger Signalverläufe ist ähnlich dem Deskriptor bei Signalverläufen mit doppelter Genauigkeit. Der Unterschied besteht darin, dass der Typ des Array-Elements und der Untertyp anders ist.

Digitaler Signalverlauf und digitale Daten

Der digitale Signalverlauf ist der einzige Typ mit dem Untertyp-Code 8.

Im folgenden Beispiel stellt jede der Zeichengruppe ein 16-Bit-Word in Hexadezimalschreibweise dar:

00B6 0054 0008 //Größe des digitalen Signalverlaufs, Typcode und Untertyp-Code

<Typdeskriptor des Zeitstempels>

<Typdeskriptor von dt>

<Typdeskriptor der Digitaldaten>

<Typdeskriptor des ungenutzten Fehler-Clusters>

<Typdeskriptor von Attributen>

Digitaldaten

"Digitaldaten" ist der einzige Datentyp, dessen Signalverlaufs-Typcode und Untertyp-Code 7 lautet.

Im folgenden Beispiel stellt jede der Zeichengruppe ein 16-Bit-Word in Hexadezimalschreibweise dar:

003E 0054 0007 //Größe der Digitaldaten, Signalverlaufs-Typcode und Untertyp-Code 7

<Typdeskriptor der Übergänge>

<Typdeskriptor der Daten>

Zeitstempel

Der Zeitstempel hat den Untertyp-Code 6. Der Zeitstempel ist eine 128-Bit-Festkommazahl mit einem 64-Bit-Radix. Zeitstempel werden in Form eines Clusters aus vier Integern gespeichert. Die ersten beiden vorzeichenbehafteten Integer (64 Bits) stellen die Anzahl der vollständigen Sekunden dar, die seit Freitag, dem 01.01.1904, 00.00 Uhr Weltzeit vergangen sind [01-01-1904 00:00:00]. Die nächsten beiden vorzeichenlosen Integer (64 Bit) stellen die Sekundenbruchteile dar.

001C 0054 0006 //Größe des Zeitstempels, Signalverlaufs-Typcode und Untertyp-Code 6 des Zeitstempels

<Typdeskriptor eines analogen Signalverlaufs>