FB_GetDPRAMInfoEx

FB_GetDPRAMInfoEx 1:

Der Funktionsbaustein FB_GetDPRAMInfoEx ermittelt den Addresspointer und die konfigurierte Größe des NOV/DP-RAM einer Feldbuskarte. Der Addresspointer kann z.B. dazu benutzt werden, um direkt auf das NOV-RAM der Fcxxx-0002 (Beckhoff) Karten oder DPRAM der von TwinCAT nicht unterstützen Karten (Dritthersteller) schreiben oder lesend zugreifen zu können. Die Karte muss vorher im TwinCAT-System als allgemeines NOV/DP-RAM konfiguriert werden.

Der Ausgang stInfo liefert neben der Adresse (pCardAddress) und der Größe (iCardMemSize) des NOV/DP-RAM auch die Art des Zugriffs (eAccessType).

Wenn das NOV/DP-RAM keinen speziellen Zugriff (BYTE oder WORD aligned) erfordert, können im SPS-Programm die MEMCPY-, MEMSET-oder MEMCMP-Funktionen benutzt werden, um auf einen beliebigen Speicheroffset schreibend/lesend zugreifen zu können. Erfordert das NOV/DP-RAM einen speziellen Zugriff (BYTE-oder WORD-aligned), dann darf nur mit passender Datengröße zugegriffen werden. Hierfür sollte der FB_NovRamReadWriteEx verwendet werden.

FB_GetDPRAMInfoEx 2: Eingänge

VAR_INPUT
    nDevId     : UDINT;
    bExecute   : BOOL; 
    tTimeOut   : TIME := DEFAULT_ADS_TIMEOUT; 
END_VAR

Name

Typ

Beschreibung

nDevId

UDINT

Die Geräte-Id einer NOV/DPRAM-Karte. Über die Id wird die Karte spezifiziert, deren Informationen gelesen werden sollen. Die Geräte-Ids werden während der Hardware-Konfiguration vom TwinCAT-System festgelegt.

bExecute

BOOL

Bei einer positiven Flanke an diesem Eingang wird der Baustein aktiviert.

tTimeOut

TIME

Gibt die Timeout-Zeit an, die bei der Ausführung des Kommandos/Funktion nicht überschritten werden darf.

FB_GetDPRAMInfoEx 3: Ausgänge

VAR_OUTPUT
    bBusy     : BOOL;
    bError    : BOOL;
    nErrId    : UDINT;
    stInfo    : ST_NovRamAddrInfoEx;
END_VAR

Name

Typ

Beschreibung

bBusy

BOOL

Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis die Ausführung abgeschlossen wurde.

bError

BOOL

Sollte ein Fehler bei der Ausführung erfolgen, dann wird dieser Ausgang gesetzt.

nErrId

UDINT

Liefert bei einem gesetzten bError-Ausgang die ADS-Fehlernummer.

stInfo

ST_NovRamAddrInfoEx

Eine Struktur mit der Adresse und Größe des NOV/DP-RAM.

Beispiel

In MAIN wird ein Pointer auf einen BYTE deklariert. Dieser Pointer wird beim Programmstart mit der Adresse des NOV-/DP-RAM initialisiert. Durch Referenzieren des Pointers kann auf das NOV-/DP-RAM schreibend oder lesend zugegriffen werden.

PROGRAM MAIN
VAR
    nDevId       : UDINT := 1; //device 1, see ID of NOV/DP-RAM device
    pNOVRAM      : POINTER TO BYTE;
    cbNOVRAM     : DWORD;
    fbGetInfo    : FB_GetDPRAMInfoEx;
    bInit        : BOOL := FALSE;
    eAccessType  : E_IOACCESSTYPE;
    bByteAccess  : BOOL;
    bWordAccess  : BOOL;
    bDWordAccess : BOOL;
END_VAR

IF NOT bInit THEN
    fbGetInfo(
        nDevId   := nDevId,
        bExecute := TRUE,
        tTimeOut := T#5S
    );

    IF NOT fbGetInfo.bBusy THEN
        IF NOT fbGetInfo.bError THEN
            pNOVRAM     := fbGetInfo.stInfo.pCardAddress;
            cbNOVRAM    := fbGetInfo.stInfo.iCardMemSize;
            eAccessType := fbGetInfo.stInfo.eAccessType;

            bDWordAccess := FALSE;
            bByteAccess  := FALSE;
            bWordAccess  := FALSE;

            CASE eAccessType OF
                eIOAccess_Default:
                    bDWordAccess := TRUE;
                    //access via MEMCPY,  MEMSET,  MEMCMP possible
                eIOAccess_Byte:
                    bByteAccess := TRUE;
                    //access via POINTER to BYTE possible
                eIOAccess_WordSwap:
                    bWordAccess := TRUE;
                    //access via POINTER to WORD +
                    //swapping of high and low byte possible
            END_CASE

            bInit := TRUE;
        END_IF
        fbGetInfo(bExecute := FALSE);
    END_IF
END_IF

Voraussetzungen

Entwicklungsumgebung

Zielplattform

IO-Hardware

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86)

FCxxxx cards mit NOV-RAM (FCxxxx-0002)

Tc2_IoFunctions (IO)