DataFileCopy : Commandes de copie de fichier
Ce bloc fonction copie les données en mémoire dans un fichier, et inversement. Le fichier réside dans le système de fichiers interne ou dans un système de fichiers externe (carte SD).
Le bloc fonction DataFileCopy peut :
olire les données d'un fichier formaté ;
ocopier les données de la mémoire-tampon dans un fichier formaté. Pour plus d'informations, reportez-vous à la section Flash Memory Organization.
Représentation en langage IL et ST
Pour voir la représentation générale en langage IL ou ST, consultez le chapitre Représentation des fonctions et blocs fonction.
Description des variables d'E/S
Le tableau suivant décrit les variables d'entrée :
Entrée |
Type |
Commentaire |
---|---|---|
xExecute |
BOOL |
Sur le front montant, lance l'exécution du bloc fonction. Sur le front descendant, réinitialise les sorties du bloc fonction lorsque toute exécution en cours prend fin. NOTE : Sur front descendant, la fonction continue de s'exécuter jusqu'au bout et elle met à jour ses sorties en conséquence. Les sorties sont conservées pendant un cycle avant d'être réinitialisées. |
sFileName |
STRING |
Nom du fichier sans extension (l'extension .DTA est automatiquement ajoutée). N'utilisez que les caractères alphanumériques (a à z, A à Z et 0 à 9). |
xRead |
BOOL |
TRUE : copier les données du fichier identifié par sFileName dans la mémoire interne du contrôleur. FALSE : copier les données de la mémoire interne du contrôleur dans le fichier identifié par sFileName. |
xSecure |
BOOL |
TRUE : l'adresse MAC est toujours stockée dans le fichier. Seul un contrôleur ayant la même adresse MAC peut lire le contenu du fichier. FALSE : un autre contrôleur ayant le même type de mémoire peut lire le contenu du fichier. |
iLocation |
INT |
0 : le fichier réside dans le répertoire /usr/DTA du système de fichiers interne. 1 : le fichier réside dans le répertoire /usr/DTA du système de fichiers externe (carte SD). NOTE : Si le fichier n'existe pas déjà dans le répertoire, il est créé. |
uiSize |
UINT |
Indique la taille en octets. La taille maximale est 65 534 octets. Seules les adresses de variables conformes à la norme CEI 61131-3 (variables, tableaux, structures) sont autorisées. Par exemple : Variable : int; uiSize := SIZEOF (Variable); |
dwAdd |
DWORD |
Indique l'adresse en mémoire que la fonction valire ou écrire. Seules les adresses de variables conformes à la norme CEI 61131-3 (variables, tableaux, structures) sont autorisées. Par exemple : Variable : int; dwAdd := ADR (Variable); |
|
FONCTIONNEMENT IMPREVU DE L'EQUIPEMENT |
Vérifiez que la taille de la mémoire et le type du fichier sont corrects avant de copier le fichier dans la mémoire. |
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. |
Le tableau suivant décrit les variables de sortie :
Sortie |
Type |
Commentaire |
---|---|---|
xDone |
BOOL |
TRUE = indique que l'action a abouti. |
xBusy |
BOOL |
TRUE = indique que le bloc fonction s'exécute. |
xError |
BOOL |
TRUE = indique qu'une erreur est détectée et que le bloc fonction a annulé l'action. |
eError |
Indique le type de l'erreur détectée lors de la copie du fichier de données. |
NOTE : Si vous écrivez dans une variable mémoire au sein de la zone d'écriture du fichier, une erreur de CRC est détectée.
L'exemple suivant montre comment utiliser les commandes de copie de fichier :
VAR
LocalArray : ARRAY [0..29] OF BYTE;
myFileName: STRING := 'exportfile';
EXEC_FLAG: BOOL;
DataFileCopy: DataFileCopy;
END_VAR
DataFileCopy(
xExecute:= EXEC_FLAG,
sFileName:= myFileName,
xRead:= FALSE,
xSecure:= FALSE,
iLocation:= DFCL_INTERNAL,
uiSize:= SIZEOF(LocalArray),
dwAdd:= ADR(LocalArray),
xDone=> ,
xBusy=> ,
xError=> ,
eError=> );