EEPROM-Speicher beschreiben
Mit diesem Befehl wird ein Bereich aus dem Datenspeicher (DT) in das EEPROM/ Flash-ROM kopiert.
Eingang
Aktivierung der Funktion (wenn EN den Status TRUE hat, wird die Funktion einmalig ausgeführt)
DT-Anfangsadresse des/der zu speichernden Blocks
Zahl der zu schreibenden Blöcke. Die Blockgröße beträgt je nach SPS-Typ 64 oder 2048 Datenregister (siehe folgende Tabelle "SPS-spezifische Daten").
EEPROM Startblock-Nummer
Ausgang
Wenn die Funktion ausgeführt wurde, wird ENO auf TRUE gesetzt. Das ist nützlich, um mehrere Funktionen mit EN-Funktionalität zu kaskadieren
Der EEPROM-Speicher ist nicht mit dem selbsthaltenden Speicherbereich zu verwechseln. Der selbsthaltende Speicherbereich sichert Daten in Echtzeit. Bei Stromausfall werden die Daten aus dem selbsthaltenden Speicherbereich im EEPROM gespeichert. Der Befehl P13_EPWT sendet nur dann Daten an das EEPROM, wenn er ausgeführt wird. Dieser Befehl kann nur begrenzt oft Daten in das EEPROM schreiben (siehe Tabelle unten). Stellen Sie sicher, dass der Befehl P13_EPWT nicht öfter ausgeführt wird, als die angegebene Zahl von Speichervorgängen zulässt.
Wenn Sie zum Beispiel den Befehl P13_EPWT mit einem R901A-Merker (Impulszeit 0,1s) ausführen, wird das EEPROM nach 100000 * 0,1s=10000s (2,8 Stunden) funktionsunfähig. Wenn Sie jedoch Profildaten wie Positionierungsparameter oder andere Parameterwerte, die selten geändert werden, speichern möchten, ist dieser Befehl sehr nützlich.
Einer der beiden Eingangsvariablen s2_Number oder d_Start muss ein konstanter Zahlenwert sein.
SPS-Typ |
FP0 2,7k C10/C14/C1, FP-e |
FP0 5k C32 |
FP0 10k T32CP |
FP-Sigma, FP-X, FP0R |
FP0H |
---|---|---|---|---|---|
ROM |
EEPROM |
EEPROM |
EEPROM |
Flash-ROM |
Flash-ROM |
Blockgröße (1 Block) |
64 Worte (64x16 Bit) |
64 Worte (64x16 Bit) |
64 Worte (64x16 Bit) |
2048 Worte (2048x16 Bit) |
2048 Worte (2048x16 Bit) |
EEPROM Startblock-Nummer |
0 bis 9 |
0 bis 95 |
0 bis 255 |
0 bis 15 |
0 bis 31 |
Anzahl der zu lesenden / schreibenden Blocks pro Ausführung |
1 bis 2 |
1 bis 8 |
1 bis 255 |
1 (schreiben) 1 bis 16 (lesen) |
1 (schreiben) 1 bis 32 (lesen) |
Schreibdauer (zusätzliche Zykluszeit) |
< 20ms pro Block |
< 5ms pro Block |
< 5ms pro Block |
< 100ms pro Block |
< 100ms pro Block |
Lesedauer (zusätzliche Zykluszeit) |
Weniger als 1ms pro Block |
Weniger als 1ms pro Block |
Weniger als 1ms pro Block |
9.94ms + (1562.6*Anzahl der Blocks) ms |
|
Max. Anzahl an Schreibvorgängen |
100000 |
10000 |
10000 |
10000 |
10000 |
Max Lesedauer |
Keine Obergrenze |
Keine Obergrenze |
Keine Obergrenze |
Keine Obergrenze |
Keine Obergrenze |
Stromausfall und Wechsel von RUN-> in PROG-Modus werden mitgezählt.
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
start: BOOL:=FALSE;
@'data field': @'ARRAY (0..63] OF INT':=@'(1,2,3,4,5,6,7,8,9,10,11,12,52(0)]';
END_VAR
Wenn die Variable start von FALSE auf TRUE gesetzt wird, wird die Funktion ausgeführt.
Sie liest den Inhalt von Datenfeld[0] bis Datenfeld[63] (s2* = 1 => 1 Block = 64 Wörter) und schreibt die Information ab Startblock Nummer 0 in das EEPROM.BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,P13_EPWT!,Instance,11,0,19,6,,?DEN?Ds1_Start?Ds2_Number?Dd_Start?AENO);
B(B_VARIN,,DataField[0],9,2,11,4,);
B(B_VARIN,,1,9,3,11,5,);
B(B_VARIN,,0,9,4,11,6,);
B(B_CONTACT,,start,3,1,5,3,);
L(1,2,3,2);
L(5,2,11,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY