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.
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.
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. |
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

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) |