Écrire dans la mémoire EEPROM
Cette instruction permet de copier des données de la zone de données (DT) vers la mémoire EEPROM/ Flash-ROM.
Entrée
Activation de la fonction (lorsque EN passe de FALSE à TRUE, la fonction est exécutée une fois)
Adresse de départ DT du(des) bloc(s) que vous voulez sauvegarder
Nombre de blocs qui doivent être écrits. La taille du bloc est de 64 ou 2048 registres de données selon le type d’API (voir le tableau suivant "Informations spécifiques aux automates").
Numéro du bloc de départ EEPROM
Sortie
Lorsque la fonction est exécutée, ENO est défini sur TRUE. Pratique en cas d’utilisation de fonctions avec EN en cascade
La mémoire EEPROM est différente de la zone maintenue. La zone maintenue sauvegarde les données en temps réel. En cas de coupure de courant, les données de la zone maintenue sont sauvegardées dans la mémoire EEPROM. L’instruction P13_EPWT envoie les données dans EEPROM uniquement lorsqu’elle est exécutée. L’écriture est possible un nombre de fois limité (voir tableau ci-dessous). Veillez à ce que l’instruction P13_EPWT ne soit pas exécutée un nombre de fois supérieur à celui spécifié.
Par exemple, si vous exécutez P13_EPWT avec le drapeau R901A (temps d’impulsion de 0,1s), l’EEPROM ne fonctionnera plus après 100000 * 0,1s=10000s (2,8 heures). Cependant, cette fonction vous sera très utile si vous souhaitez sauvegarder des données de profil tels que les paramètres de positionnement ou d’autres paramètres qui ne sont pas modifiés fréquemment.
Une valeur constante doit être affectée à une des deux variables d’entrée s2_Number ou d_Start
Type d’API |
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 |
Taille du bloc (1 bloc) |
64 mots (64x16 bits) |
64 mots (64x16 bits) |
64 mots (64x16 bits) |
2048 mots (2048x16 bits) |
2048 mots (2048x16 bits) |
Numéro du bloc de départ EEPROM |
0 à 9 |
0 à 95 |
0 à 255 |
0 à 15 |
0 à 31 |
Nombre de blocs qui doivent être lus/écrits à chaque exécution |
1 à 2 |
1 à 8 |
1 à 255 |
1 (écriture) 1 à 16 (lecture) |
1 (écriture) 1 à 32 (lecture) |
Durée d’écriture (temps de scrutation supplémentaire) |
< 20ms par bloc |
< 5ms par bloc |
< 5ms par bloc |
< 100ms par bloc |
< 100ms par bloc |
Durée de la lecture (temps de scrutation supplémentaire) |
Inférieure à 1 ms par bloc |
Inférieure à 1 ms par bloc |
Inférieure à 1 ms par bloc |
9,94ms + (1562,6*nombre de blocs) ms |
|
Nombre max. d’événements d’écriture |
100000 |
10000 |
10000 |
10000 |
10000 |
Durée de lecture maxi. |
Sans limite |
Sans limite |
Sans limite |
Sans limite |
Sans limite |
Coupure de courant, changements de mode RUN -> PROG sont également comptés.
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
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
La fonction est exécutée lorsque la variable start passe de FALSE à TRUE.
La fonction lit le contenu de la zone de données[0] à la zone de données[63] (s2* = 1 => 1 bloc = 64 mots) et écrit les informations à partir du numéro de bloc de départ 0 dans l’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