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.
Eingang
Eingangs- und Ausgangsprozessdatenvariablen
Ausgang
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.
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.
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 |
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).
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.
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
If sys_bIsFirstScan then
configNames1:=FNS_InitConfigNameTable(myDUT60);
end_if;