FP_SD_WRITE

Écrire des données sur carte SD

Cette instruction FP lit le nombre de données, spécifié par n_NumberOfDataToWrite, qui sont sauvegardées à l’adresse à partir de s_Start et écrit les données dans le fichier spécifié par d1_FullFileName sur la carte mémoire SD. Le DUT FP_SD_WRITE_DUT à d2_dutWrite indique les paramètres d’écriture.

Paramètres

Entrée

s_Start (ANY)

Adresse de départ

n_NumberOfDataToWrite (WORD, INT, UINT)

Nombre de données à écrire, spécifié par l’élément de DUT udiNumberOfDataWritten

  • Pour wFormat=1–8 : nombre de données 16 bits/32 bits séparées par une virgule

  • Pour wFormat=10 : nombre de caractères 8 bits

  • Pour wFormat=11 : nombre de données 16 bits

d1_FullFileName (STRING)

Nom du fichier avec extension, par ex. '\Test.csv'

Entrée/sortie

d2_dutWrite (FP_SD_WRITE_DUT)

Format, mode d’écriture, position du pointeur, etc.

Mode pointeur

Si un mode pointeur est sélectionné dans FP_SD_WRITE_DUT à s2_dutWrite (wMode=2 ou wMode=3), l’écriture commence à la position du pointeur. Après écriture, le pointeur se positionne là où l’écriture s’est terminée. L’écriture suivante commence à cette position. La position du pointeur peut aussi être spécifiée par udiBytePosition dans le DUT. Dans l’exemple ci-dessous, les positions du pointeur sont indiquées pour différents format.

  1.  (1) Données INT 16 bits (fichier de format BIN)
  2.  (2) Données INT 16 bits (fichier de format CSV)
  3.  (3) Données ASCII (fichier de format CSV)
  4.  (4) Pointeur du fichier

Remarques

  • Voir également Introduction aux instructions de carte mémoire SD.

  • Le drapeau "Accès mémoire SD actif" (sys_bIsSDMemoryAccessActive) devient TRUE lorsque le déclencheur EN de l’instruction de carte mémoire SD devient TRUE et reste TRUE jusqu’à ce que l’exécution de l’instruction soit terminée. Pendant ce temps, les autres instructions de carte mémoire SD ne peuvent pas être exécutées.

  • Le drapeau "Accès mémoire SD terminé" (sys_blsSDMemoryAccessDone) est FALSE lorsque l’instruction est exécutée, et devient TRUE et reste TRUE lorsque l’instruction est terminée.

  • Lorsque le fichier est en lecture seule, aucune donnée ne peut être écrite.

  • Lorsque les données ASCII sont enregistrées, les chaînes de caractères écrites sont entre guillemets.

  • Un guillemet (") dans des chaîne de caractères est converti en deux guillemets ("").

Drapeaux d’erreur

sys_bIsSDMemoryAccessError
  • FALSE : lorsque l’instruction a été exécutée sans erreur.

  • TRUE : lorsqu’une erreur est apparue lors de l’exécution de l’instruction.

  • Utilisez sys_iSDMemoryAccessErrorCode pour vérifier le code d’erreur.

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

Exemple

En-tête du POU

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
		bStart: BOOL:=FALSE;
			(*activates the instruction*)
		sStringWrite1: STRING[32]:='Test String1';
	END_VAR

Corps du POU

Lorsque la variable bStart passe de FALSE à TRUE et lorsque la variable système sys_bIsSDMemoryAccessActive n’est pas TRUE, la fonction est exécutée.

Corps en LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 3 ;
        NETWORK_BODY
B(B_COMMENT,,ø^Write string ASCII data into SD card memory - ASCII value,3,0,58,3,);
L(1,0,1,3);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_CONTACT,,bStart,2,1,4,3,R);
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,1,12,3,N);
B(B_F,E_MOVE!,,18,0,24,4,,?DEN?D?AENO?C);
B(B_VARIN,,10,16,2,18,4,);
B(B_VAROUT,,dutFpWriteTest_csv.wFormat,24,2,26,4,);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,18,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_VARIN,,sStringWrite,16,2,18,4,);
B(B_CONTACT,,bStart,2,1,4,3,R);
B(B_VARIN,,sFile_Test_Csv,16,4,18,6,);
B(B_VARIN,,dutFpWriteTest_csv,16,5,18,7,);
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,1,12,3,N);
B(B_F,FP_SD_WRITE!,,18,0,31,7,,?DEN?Ds_Start?Dn_NumberOfDataToWrite?Dd1_FullFileName?Dd2_dutWrite?Ad2_dutWrite?AENO);
B(B_VARIN,,iStringLength,16,3,18,5,);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,18,2);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

IF DF(bStart)AND not sys_bIsSDMemoryAccessActive then
    dutFpWriteTest_csv.wFormat:=10;
    FP_SD_WRITE(s_Start := sStringWrite,
                n_NumberOfDataToWrite := iStringLength,
                d1_FullFileName := sFile_Test_Csv,
                d2_dutWrite := dutFpWriteTest_csv);
END_IF;

Modifié le : 2024-03-07Commentaires sur cette pageAssistance téléphonique