WriteDataToFileRegisterBank

Escritura de datos en los ficheros de datos, bancos 1 ó 2

Esta instrucción lee el número de palabras especificado por DataNumberOfWords desde DataStartAddress y los escribe en el Fichero de Datos, Bancos 1 o 2, especificado por BankNumber, comenzando en BankOffset.

Parámetros

Entrada

BankNumber (INT)

Especifica el número de banco

BankOffset (INT)

Especifica el offset del número de banco

DataStartAddress (WORD, INT, UINT)

Especifica la dirección de inicio de los datos a escribir en el Banco del Fichero de Datos

DataNumberOfWords (INT)

Especifica el número de palabras a escribir en el Banco del Fichero de Datos

Observaciones

Con esta función no se pueden escribir datos en el área FL (Banco 0 del Fichero de Datos), es decir, la variable de DataStartAddress no debe estar en el área FL.

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	VAR
		awProcessDataToStore: ARRAY [0..10] OF INT:=[-111,111,222,333,444,555,666,777,888,999,1100];
		awProcessDataToGet: ARRAY [0..10] OF INT:=[11(0)];
		bStoreData: BOOL:=FALSE;
		bGetData: BOOL:=FALSE;
	END_VAR

Cuerpo de la POU

Si bStoreData cambia de FALSE a TRUE la variable DUT awProcessDataToStore (una DUT que contiene 11 elementos) se rellena con los datos del Banco 2 del Fichero de Datos, BankOffset 1000.

Cuerpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 9 ;
        NETWORK_BODY
B(B_F,WriteDataToFileRegisterBank!,Instance,22,1,36,7,,?DBankNumber?DBankOffset?DDataStartAddress?DDataNumberOfWords);
B(B_VARIN,,2,20,3,22,5,);
B(B_VARIN,,1000,20,4,22,6,);
B(B_VARIN,,awProcessDataToStore[0],10,5,12,7,);
B(B_CONTACT,,bStoreData,5,2,7,4,R);
B(B_F,Adr_Of_Var_I!,Instance,12,5,19,7,,?D?C);
B(B_F,Size_Of_Var!,Instance,12,7,19,9,,?D?C);
L(1,3,5,3);
L(7,3,22,3);
L(19,6,19,8);
L(12,6,12,8);
L(1,0,1,9);
L(19,6,22,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

if (DF(bStoreData)) then
    WriteDataToFileRegisterBank(BankNumber := 2, 
    BankOffset := 1000, 
    DataStartAddress := Adr_Of_Var(awProcessDataToStore), 
    DataNumberOfWords := Size_Of_Var(awProcessDataToStore));
end_if;

Modificado el: 2021-07-15Comentarios sobre esta páginaLínea directa de Panasonic