FNS_InitConfigDataTable

Daten für FP-FNS-Funktionsbausteine konfigurieren

Die Funktion FNS_InitConfigDataTable erstellt ConfigDataTable aus der Variablen ProcessDataTable, bei der es sich um einen Datentyp aus einem oder mehreren Elementen handeln kann. ConfigDataTable ist notwendig, um den FP-FNS-Baustein mit den Funktionsbausteinen FNS_ProfibusDP, FNS_DeviceNet, FNS_CANopen und FNS_ProfinetIO zu konfigurieren.

Parameter

Eingang

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

Eingangs- und Ausgangsprozessdatenvariablen

Ausgang

ConfigDataTable (ARRAY of WORD)

Konfigurationsdaten für FP-FNS-Funktionsbausteine. Die Arraygröße der Variablen ConfigDataTable muss der Anzahl der Elemente der Variablen ProcessDataTable entsprechen.

Anmerkungen

  • Stellen Sie sicher, dass die Größe der Variablen ConfigDataTable der Struktur der Variablen ProcessDataTable entspricht, d. h. wenn ProcessDataTable aus drei Einträgen besteht, muss ConfigDataTable 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 ConfigDataTable ein Array[0..0] of WORD (mit der Größe 1) sein.

  • Für die Eingabe in FNS_InitConfigDataTable 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 Ausgabe ConfigDataTable der Funktion muss ein Array von WORD sein.

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

  • Für jedes Element des SDT, das bei ProcessDataTable, angewendet wird, wird ein Element im WORD-Array bei ConfigDataTable nach der folgenden Formel erzeugt:

    enum class enumFnsDataTypeCode : int
    
          {
                INVALID     = -1,
                SIGNED_16   = 0x02,
                SIGNED_32   = 0x03,
                UNSIGNED_16 = 0x05,
                UNSIGNED_32 = 0x06,
                UNSIGNED_64 = 0x11,
                REAL_32     = 0x12
          };
    • Niederwertiges Byte: Datentypcode für FNS erforderlich

    • Höherwertiges Byte: Anzahl von Elementen im Fall eines Arrays

Beispiel:

Globale Variablen

In der globalen Variablenliste können Sie Variablen festlegen, die von allen POEs des Projekts verwendet werden können.

SDT

In diesem Beispiel ist die Variable ProcessData ein SDT des Typs ProcessDataStructure mit der folgenden Struktur:

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

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
		ConfigData: ARRAY [0..2] OF WORD:=[3(0)];
	END_VAR
	VAR_EXTERNAL
		ProcessData: ProcessDataStructure;
	END_VAR

Die Arraygröße der Variablen ConfigDataTable muss der Anzahl der Elemente der Variablen ProcessData entsprechen.

POE-Rumpf

Wenn sys_bIsFirstScan TRUE ist, d.h. im ersten Zyklus, wird die Funktion ausgeführt. Der Wert der Variablen ConfigData entspricht der Struktur der Eingangsvariablen ProcessData 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,,ProcessData,11,2,13,4,);
B(B_VAROUT,,ConfigData,29,2,31,4,);
B(B_F,E_FNS_InitConfigDataTable!,,13,0,29,4,,?DEN?dProcessDataTable?AENO?cConfigDataTable);
B(B_CONTACT,,sys_bIsFirstScan,5,1,7,3,);
L(1,2,5,2);
L(7,2,13,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

If sys_bIsFirstScan then
    ConfigData:=FNS_InitConfigDataTable(ProcessData);
    end_if;

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