FB_NovRamReadWrite

Die folgende Beschreibung bezieht sich auf die TwinCAT Version 2.8. Ab der TwinCAT Version 2.9 [Build 927] wird kein Funktionsbaustein zum Schreiben bzw. Lesen von zu sichernden SPS-Daten ins NOVRAM mehr benötigt.

FB_NovRamReadWrite 1:

Der Funktionsbaustein FB_NovRamReadWrite greift aus einem SPS-Programm auf das NOV-RAM der FCxxxx-0002 Feldbuskarten zu. Bei einer steigenden Flanke am bRead oder bWrite-Eingang wird der Funktionsbaustein aktiviert und eine entsprechende Anzahl Datenbytes aus dem NOV-RAM gelesen bzw. in das NOV-RAM geschrieben. Wurden gleichzeitig beide Eingänge: bRead und bWrite gesetzt, dann werden die Daten zuerst in das NOV-RAM geschrieben und dann zurückgelesen.

Bemerkungen:

Um den Addresspointer auf das NOV-RAM zu ermitteln, wird von dem FB_NovRamReadWrite-Funktionsbaustein intern eine Instanz des ADSREAD-Funktionsbausteines verwendet. Dieser Addresspointer wird aber nur beim ersten Aufruf des FB_NovRamReadWrite-Funktionsbausteins und bei einer Änderung von nDevId neu ermittelt. Dafür werden mehrere SPS-Zyklen benötigt. Um die Daten in das NOV-RAM zu schreiben oder aus dem NOV-RAM zu lesen wird die Funktion MEMCPY verwendet. Dadurch können die Daten im gleichen SPS-Zyklus geschrieben bzw. gelesen werden. Intern wird auch die maximale Bytelänge des NOV-RAM ermittelt, und die maximale Länge der Daten, die gelesen oder geschrieben werden können, auf diese Länge begrenzt.

FB_NovRamReadWrite 2: Eingänge

VAR_INPUT
    nDevId     : UDINT;
    bRead      : BOOL;
    bWrite     : BOOL;
    cbSrcLen   : UDINT;
    cbDestLen  : UDINT;
    pSrcAddr   : PVOID;
    pDestAddr  : PVOID;
    tTimeOut   : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR

Name

Typ

Beschreibung

nDevId

UDINT

Die Geräte-Id einer NOVRAM-Karte. Über die Id wird das NOVRAM einer FCxxxx-0002 Karte spezifiziert, auf das mit dem Funktionsbaustein schreibend oder lesend zugegriffen werden soll. Die Geräte-Ids werden während der Hardware-Konfiguration vom TwinCAT-System festgelegt.

bRead

BOOL

Bei einer positiven Flanke an diesem Eingang wird der Baustein aktiviert und cbDestLen-Daten aus dem NOVRAM (ab dem Addressoffset NULL) in den Puffer mit der Adresse pDestAddr hineinkopiert.

bWrite

BOOL

Bei einer positiven Flanke an diesem Eingang wird der Baustein aktiviert und cbSrcLen-Daten aus dem Puffer mit der Adresse pSrcAddr in das NOVRAM (ab dem Addressoffset NULL) hineinkopiert.

cbSrcLen

UDINT

Die Bytelänge der Daten, die in das NOVRAM geschrieben werden sollen.

cbDestLen

UDINT

Die Bytelänge der Daten, die aus dem NOVRAM gelesen werden sollen.

pSrcAddr

PVOID

Der Addresspointer auf einen Datenpuffer mit den Daten, die in das NOV-RAM geschrieben werden sollen. Der Addresspointer kann mit dem ADR-Operator ermittelt werden.

pDestAddr

PVOID

Der Addresspointer auf einen Datenpuffer, in den die gelesenen NOV-RAM-Daten hineinkopiert werden sollen.

tTimeOut

TIME

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

FB_NovRamReadWrite 3: Ausgänge

VAR_OUTPUT
    bBusy     : BOOL;
    bError    : BOOL;
    nErrId    : UDINT;
    cbRead    : UDINT;
    cbWrite   : UDINT;
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.

cbRead

UDINT

Anzahl der erfolgreich gelesenen Datenbytes.

cbWrite

UDINT

Anzahl der erfolgreich geschriebenen Datenbytes.

Beispiel:

PROGRAM MAIN
VAR
    fbNovRamReadWrite : FB_NovRamReadWrite;
    bRead             : BOOL;
    bWrite            : BOOL;
    fromNovRam        : ARRAY[1..100] OF BYTE;
    toNovRam          : ARRAY[1..100] OF BYTE;
    bBusy             : BOOL;
    bError            : BOOL;
    nErrID            : UDINT;
    cbRead            : UDINT;
    cbWrite           : UDINT;
END_VAR
FB_NovRamReadWrite 4:

Im Beispiel wurden bei einer steigenden Flanke am bRead-Eingang 100 Byte Daten aus dem NOV-RAM ausgelesen und in das Array fromNovRam hineinkopiert.

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)