Eine Wertetabelle ist ein Container-Datentyp in PAtools. Sie können jeden beliebigen Datentyp in Wertetabellen verwenden. Sie können in jeder Zeile einen anderen Datentyp verwenden.

Folgendes gilt für den Lese- und Schreibzugriff in Wertetabellen.

  • PAscript unterstützt die folgenden Datentypen für den Lesezugriff:
    • Integer: int32
    • Fließkommazahl:real64
    • Text: text
  • PAscript unterstützt die folgenden Datentypen in Zellen für den Lesezugriff:
    • Tasks: task
    • Ereignisse: event
    • Schritttabellen: stepTable
    • Ablauftabellen: sequenceTable
    • PAbasic: pabasic
  • Die Elemente für den Lesezugriff können konstante Werte oder Namen sein.
  • Mit Typfunktionen können Sie Text oder Zahlen in den Zellen eingeben. Variablen oder Konstanten des entsprechenden Datentyps sind als Übertragungsparameter zulässig. Verwenden Sie die folgenden Typfunktionen für den Schreibzugriff:
    • setText
    • setInt32
    • setReal64
  • Mit der Typfunktion setText können keine Namen in eine Wertetabelle geschrieben werden.

Typfunktionen von Wertetabellen

Mit Hilfe von Typfunktionen können Sie Wertetabellen löschen, kopieren, aufziehen und beschriften.

  • clear—Löscht den Inhalt der Wertetabelle. Die einzelnen Zellen werden mit KWE (kein Wert) überschrieben.
  • clearCell—Löscht den Inhalt einer Zelle in einer der Wertetabellen. Der Inhalt der Zelle wird mit KWE überschrieben. Eine Suchanfrage mit getCellType nach clearCell gibt variant:cellType:empty aus.
  • copyFrom—Kopiert den Inhalt der übergebenen Wertetabelle in die Zieltabelle. Die Zieltabelle ist genauso dimensioniert wie die Quelltabelle. Eine nachträgliche Änderung der Dimension oder des Werts in einer Tabelle hat keine Auswirkung auf die Dimension oder die Werte in der anderen Tabelle. Mit dem Operator = können Sie den Inhalt einer Wertetabelle in eine andere Wertetabelle kopieren.
  • getCellType—Bestimmt den Datentyp der angegebenen Zelle.
  • getColumnLabel—Liest eine Spaltenbeschriftung aus einer Wertetabelle. Wenn die Spaltenbeschriftung nicht festgelegt ist, wird ein leerer String in der Textvariablen gespeichert. Wenn der Beschriftungstext länger ist als der Text, der in der Textvariablen gespeichert werden kann, wird die Beschriftung abgeschnitten. Der Index beginnt bei 0.
  • getPageLabel—Liest eine Seitenbeschriftung aus einer Wertetabelle. Wenn die Seitenbeschriftung nicht festgelegt ist, wird ein leerer String in der Textvariablen gespeichert. Wenn der Beschriftungstext länger ist als der Text, der in der Textvariablen gespeichert werden kann, wird die Beschriftung abgeschnitten. Der Index beginnt bei 0.
  • getRowLabel—Liest eine Zeilenbeschriftung aus einer Wertetabelle. Wenn die Zeilenbeschriftung nicht festgelegt ist, wird ein leerer String in der Textvariablen gespeichert. Wenn der Beschriftungstext länger ist als der Text, der in der Textvariablen gespeichert werden kann, wird die Beschriftung abgeschnitten. Der Index beginnt bei 0.
  • resize—Vergrößert, verkleinert oder ändert die Dimensionen einer Wertetabelle. Bei einem Fehler ist der Status kleiner als 0. Wenn Spalten nur als Parameter verwendet werden, wird eine 1-x-n-Wertetabelle erstellt. Wenn die Wertetabelle vergrößert wird, wird der Inhalt mit KWE gefüllt. Wenn die Wertetabelle reduziert wird, wird sie abgeschnitten.
  • setColumnLabel—Schreibt den Wert der Beschriftungsvariablen in die durch die Variable columnIndex angegebene Spalte. Bei einem Fehler ist der Status kleiner als 0. Die Beschriftung bleibt erhalten, wenn die Wertetabelle umdimensioniert wird. Der Index beginnt bei 0.
  • setPageLabel—Schreibt den Wert der Beschriftungsvariablen auf die durch die Variable pageIndex angegebene Seite. Bei einem Fehler ist der Status kleiner als 0. Die Beschriftung bleibt erhalten, wenn die Wertetabelle umdimensioniert wird. Der Index beginnt bei 0.
  • setRowLabel—Schreibt den Wert der Beschriftungsvariablen in die durch die Variable angegebene Zeile. Bei einem Fehler ist der Status kleiner als 0. Die Beschriftung bleibt erhalten, wenn die Wertetabelle umdimensioniert wird. Der Index beginnt bei 0.
  • toCSV—Schreibt den Inhalt der Wertetabelle in eine CSV-Datei. Die Standardeinstellung lautet ;, wenn Sie kein Trennzeichen angeben. Wenn Beschriftungen nicht vorhanden sind, aber geschrieben werden sollen, wird " eingefügt. Wenn keine Beschriftungen angegeben sind, lautet die Standardeinstellung 0. Wenn beim Schreiben der Daten ein Fehler auftrat, ist der Wertstatus der Variablen kleiner als 0. Der Versuch wertet die Spracheinstellung der PXI-Controller-Konfiguration aus. Der Versuch verwendet , oder . als Dezimalzeichen.
  • Beispiel für clear

    program
        variant[2,2] table
        table:clear()    // after execution the content is [KWE,KWE;KWE,KWE]
    endprogram

    Beispiel für clearCell

    program
        variant[2,2] table
        table:clearCell(0,0)
    endprogram

    Beispiel für copyFrom

    program
        variant[2,2] target
        variant[3] source[1,2,3]
        target:copyFrom(source)
    endprogram

    Beispiel für getCellType

    program
        section globals
            variant[] table
        end section
        int32 row index
        for rowIndex = 0,rowIndex<tab:rows -1
            switch table:getCellType(rowIndex, 0)
                case variant:ce11Type:real64
                    sys:loginfo(sys:ui,"element is integer")
                case variant:ce11Type:int32
                    sys:loginfo( sys:ui,"element is float") case variant:cellType:text
                    sys:loginfo(sys:ui,"value is text")
            end switch
        endfor
    endprogram

    Beispiel für getColumnLabel

    program
        int32 columnIndex = 0
        text columnsText(10)
        variant[2,2] table
        columnText = table:getColumnLabel(columnIndex)
    endprogram

    Beispiel für getPageLabel

    program
        int32 pageIndex = 1
        text pagesText(10)
        variant[2,2,2] table
        pageText = table:getPageLabel(pageIndex)
    endprogram

    Beispiel für getRowLabel

    program
        int32 rowIndex = 1
        text linesText(10)
        variant[2,2] table
        rowText = table:getRowLabel(rowIndex)
    endprogram

    Beispiel für resize

    program
        text pagesText(10)
        int32 status
        variant[2,2] table = (1,2;3,4]
        status = table:resize(3)    //the result is a 1 x 3 array with the content [1,2,0]
        if status < 0 then
            sys:logError(sys:ui,"Error %d while increasing array", status)
        endif
    endprogram

    Beispiel für setColumnLabel

    program
        int32 columnIndex = 1
        text columnsText(20) = "Label Column 2"
        variant[2,2] table
        table:setColumnLabel(columnIndex,columnText)
    endprogram

    Beispiel für setPageLabel

    program
        int32 pageIndex = 1
        text pagesText(20) = "Label Page 2"
        variant[2,2,2] table
        table:setPageLabel(pageIndex,pageText)
    endprogram

    Beispiel für setRowLabel

    program
        int32 rowIndex = 1
        text linesText(20) = "Label Line 2"
        variant[2,2] table
        table:setRowLabel(rowIndex,rowText)
    endprogram

    Beispiel für toCSV

    program
        section globals
            variant[] table
        end section 
        int32 status
        status = table:toCSV("Array.csv",";") 
        if status < 0 then    
            sys:logError(sys:ui,"Error %d writing CSV file", status)
        endif
    endprogram

    Definitionsoptionen

    Definieren Sie PAscript-Werttabellen lokal oder global.

    Definition von Wertetabellen

    Das folgende Muster wird zur Definition von Wertetabellen verwendet:

    variant[] variable_name

    Globale Definition von Wertetabellen

    Wenn Sie eine globale Wertetabelle in PAscript deklarieren möchten, geben Sie den Datentyp variant[] in einem section globals-Codeblock ein. Geben Sie dann den Variablennamen ein.

    Beispiel

    program
    
      section globals
        variant[]  AKS_Parameter.WTB
      endsection
    
      ...
    
    endprogram

    Lokale Definition von Wertetabellen

    Das folgende Muster wird für lokale Wertetabellen verwendet:

    variant[array dimensions] identifier

    Definieren von Array-Dimensionen

    Sie können eine, zwei oder drei Dimensionen für Array-Dimensionen auswählen.

    variant [n]            identifier    // Value table with n elements
    variant [n,m]        identifier    // Value table with n rows and m columns
    variant [n,m,p]   identifier    // Value table with p pages, n rows and m columns
    Hinweis Die Initialisierung lokaler Wertetabellen wird derzeit nicht unterstützt.

    Der Zelleninhalt der erstellten Wertetabelle lautet KWE.

    Beispiel

    program
    
            variant[2,3] table
            ...
    endprogram

    Zugreifen auf Wertetabellen

    Greifen Sie auf ein Element einer Wertetabelle mit Hilfe von Zugriffsmethoden zu. Zugriffsmethoden weisen den Datentyp zu und haben den relevanten Index für Spalte, Zeile und Seite als Übertragungsparameter.

    Hinweis Alle Indizes beginnen bei 0. Der größte zulässige Wert für Indizes ist < Number of elements of the dimension - 1>.

    Regel für Dimensionsangaben

    Sie können die Zugriffsmethoden aufrufen, indem Sie weniger Dimensionen angeben, als für die Wertetabelle selbst definiert sind.

    Sie definieren beispielsweise eine Wertetabelle mit drei Dimensionen. In diesem Fall ist es nicht notwendig, den Seitenindex, Zeilenindex oder Spaltenindex anzugeben. Sie können nur einen Index angeben. Die Werte der ersten Zeilen auf der ersten Seite und der übertragenen Spalte werden berechnet.

    Ebenso können Sie nur Zeile und Spalte angeben. In diesem Fall wird immer auf die erste Seite zugegriffen.

    Referenzieren von Wertetabellen

    Der Operator = bewirkt, dass die Tabelle links die Tabelle rechts referenziert.

    Die Dimensionen des Ziels passen sich an die Dimensionen der Quelle an.

    Eine nachträgliche Änderung der Dimension oder des Werts in einer Tabelle ändert die Dimension oder die Werte in der anderen Tabelle.

    Beispiel

    program
      variant [2,3]    source
      variant [3,3,2]  target
    
      // causes redimensioning of the target
      target = source
    endprogram

    Die Dimensionen des Ziels passen sich an die Dimensionen der Quelle an.

    Eine Änderung der Quelle führt zu einer identischen Änderung des Ziels. Eine Änderung des Ziels führt zu einer identischen Änderung der Quelle.