ReadDataFromFileRegisterBank

Lectura de datos desde los ficheros de datos, bancos 1 ó 2

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

Parámetros

Entrada

BankNumber (INT)

Especifica el número de banco

BankOffset (INT)

Especifica el offset del número de banco

DataNumberOfWords (INT)

Número de unidades en palabras a leer desde el banco del fichero de datos

Salida

DataStartAddress (WORD, INT, UINT)

Especifica la dirección de inicio de los datos a leer desde el banco del fichero de datos

Observaciones

Con esta función no se pueden leer 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
	VAR_OUTPUT
		p32ActualPosition: POINTER32;
			(*shows the area, offset and size where the data of the IC card is stored*)
	END_VAR
	VAR
	END_VAR
	VAR_INPUT
		p32Pointer: POINTER32;
			(*area, offset and size of data values*)
		diPosition: DINT:=0;
			(*beginning position from which the data should be read from the IC card*)
	END_VAR
	VAR_OUTPUT
		p32ActualPosition: POINTER32;
			(*shows the area, offset and size where the data of the IC card is stored*)
	END_VAR
	VAR
	END_VAR

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_VARIN,,2,20,3,22,5,);
B(B_VARIN,,1000,20,4,22,6,);
B(B_VARIN,,awProcessDataToGet[0],10,5,12,7,);
B(B_CONTACT,,bGetData,5,2,7,4,R);
B(B_F,Size_Of_Var!,Instance,12,5,19,7,,?D?C);
B(B_F,E_ReadFromIcCard!,Instance,22,1,37,7,,?DEN?DBankNumber?DBankOffset?DDataNumberOfWords?AENO?CDataStartAddress);
B(B_F,Adr_Of_Var_O!,Instance,37,3,45,5,,?D?C);
B(B_VAROUT,,awProcessDataToGet,45,3,47,5,);
L(1,3,5,3);
L(19,6,22,6);
L(1,0,1,9);
L(7,3,22,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

if (DF(bGetData)) then
    ReadDataFromFileRegisterBank(BankNumber := 2, 
    BankOffset := 1000, 
    DataNumberOfWords := Size_Of_Var(awProcessDataToGet), 
    DataStartAddress => Adr_Of_Var(awProcessDataToGet));
end_if;

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