FNS_InitConfigNameTable

Daten für FP-FNS-Funktionsbausteine konfigurieren

Die Funktion FNS_InitConfigNameTable erstellt ConfigNameTable aus der Variablen ProcessDataTable, bei der es sich um einen Datentyp aus einem oder mehreren Elementen handeln kann.

Parameter

Eingang

ProcessDataTable (INT, WORD, DINT, DWORD, REAL, TIME) und ARRAYS dieser Typen

Eingangs- und Ausgangsprozessdatenvariablen

Ausgang

ConfigNameTable ARRAY of WORD

Die Ausgabe ist ein Array von STRING, der die Namen der Elemente des SDT enthält, der bei ProcessDataTable angewendet wird.

  • Die Arraygröße der Variablen ConfigNameTable muss der Anzahl der Elemente der Variablen ProcessDataTable entsprechen.

  • Die Zeichenkettenlänge der Array-Elemente muss größer oder gleich der maximalen Länge der Elementenamen sein.

Anmerkungen

  • Stellen Sie sicher, dass die Größe der Variablen ConfigNameTable der Struktur der Variablen ProcessDataTable entspricht, d. h. wenn ProcessDataTable aus drei Einträgen besteht, muss ConfigNameTable ein Array[0..2] of WORD sein, dessen Größe der Anzahl der Einträge entspricht. Wenn ProcessDataTable nur einen Eintrag besitzt (z.B. WORD), muss die Variable ConfigNameTable ein Array[0..0] of WORD (mit der Größe 1) sein.

  • Für die Eingabe zulässige Datentypen sind alle Variablen mit 16-Bit (INT, WORD), 32-Bit (DINT, DWORD, TIME (32 Bit), REAL) und 64-Bit oder Arrays von diesen. 64-Bit-Variablen sind als zweidimensionale Arrays definiert, z.B. Array[0..0,0..3] of INT ist eine 64-Bit-Variable, während Array[0..3] of INT einen Array mit vier Elementen der 16-Bit-Variablen darstellt.

  • Die Datentypen BOOL, STRING und Arrays dieser Typen sind bei der Eingabe der Funktion FNS_InitConfigDataTable NICHT zulässig.

ProcessDataTable

Die folgende Syntaxtabelle zeigt, wie die 16-Bit-, 32-Bit- und 64-Bit-Variablen und die Arrays davon deklariert werden, wenn sie als ProcessDataTable-Eingang für die Funktion FNS_InitConfigDataTable verwendet werden sollen.

Eingangsdatentyp

Eingangsgröße

Kommentar

INT, WORD

16-bit

DINT, WORD, REAL, TIME

32-bit

Array[0..0,0..3] of INT

Array[0..0,0..3] of WORD

64-bit

zweidimensionaler Array;

Größe der zweiten Dimension = 4

Array[a ..b] of INT/Array[a ..b] of WORD

Array of 16-bit

Größe = b-a+1

eindimensionaler Array

Array[a ..b] of DINT/Array[a ..b] of DWORD/

Array[a ..b] of REAL/Array[a ..b] of TIME

Array of 32-bit

Größe = b-a+1

eindimensionaler Array

Array[0..x,0..3] of INT

Array[0..x,0..3] of WORD

Array of 64-bit

Größe = x+1

zweidimensionaler Array;

Größe der zweiten Dimension = 4

Beispiel:

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
	VAR
		adiDInt1: ARRAY[2..3] OF DINT:=[2(0)];
		arReal1: ARRAY[0..1, 1..9] OF REAL:=[18(0.0)];
		aui1: ARRAY[1..15] OF UINT:=[15(0)];
		dwWord1: DWORD:=0;
		iInt1: INT:=0;
		udiUDInt1: UDINT:=0;
	END_VAR

Die Arraygröße der Variablen configNames1 muss der Anzahl der Elemente der Variablen myDUT60 entsprechen.

Da der SDT aus drei Einträgen besteht, muss die Ausgangsvariable configNames1 ein Array of WORD mit der Größe 3 sein (z.B.: Array [0..2] of WORD).

POE-Rumpf

Wenn sys_bIsFirstScan TRUE ist, d.h. im ersten Zyklus, wird die Funktion ausgeführt. Der Wert der Variablen configNames1 entspricht der Struktur der Eingangsvariablen myDUT60 sowie der Anzahl und Typen der Elemente.

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_VARIN,,myDUT60,11,2,13,4,);
B(B_VAROUT,,configNames1,29,2,31,4,);
B(B_F,E_FNS_InitConfigNameTable!,Instance,13,0,29,4,,?DEN?dProcessNameTable?AENO?cConfigNameTable);
B(B_VARIN,,sys_bIsFirstScan,11,1,13,3,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

If sys_bIsFirstScan then
    configNames1:=FNS_InitConfigNameTable(myDUT60);
end_if;

Letzte Änderung: 2024-12-18Feedback zu dieser SeitePanasonic Hotline