Escritura en memoria EEPROM
Utilizando esta instrucción de transferencia de datos se pueden copiar datos desde los DTs del PLC en una EEPROM/ Flash-ROM.
Entrada
Activación de la función (si EN pasa de FALSE a TRUE, la función se ejecutará una vez)
DT inicial del bloque de datos a guardar en la memoria
Número de bloques a escribir. El tamaño del bloque es de 64 o 2048 registros de datos según el tipo de PLC (consultar la siguiente tabla "Información específica del PLC")
Número del bloque inicial de la memoria EEPROM
Salida
Una vez ejecutado el bloque de función, la salida ENO pasa a TRUE. Esta funcionalidad es de gran ayuda cuando se utilizan varias funciones en cascada con una entrada EN.
La memoria EEPROM no es lo mismo que el área de retención. El área de retención almacena los datos en tiempo real. Si se quita alimentación al sistema, los datos de retención se almacenan en la memoria EEPROM. La instrucción P13_EPWT envía datos a la EEPROM solamente cuando se ejecuta la instrucción. También tiene una limitación en cuanto al número de veces que se puede escribir (consultar la tabla de abajo). No se debe ejecutar la instrucción P13_EPWT más veces que el número de escrituras especificado en la tabla.
Por ejemplo, si se ejecuta la instrucción P13_EPWT con el relé R901A (pulso de reloj de 0,1 seg.), la EEPROM dejará de ser operativa después de 100.000 * 0,1 seg.=10.000 seg. (2,8 horas). Sin embargo, esta instruccuón es muy útil para almacenar datos que normalmente no se modifican como son los parámetros de posicionamiento o cualquier otro parámetro.
Una de las dos variables de entrada s2_Number ó d_Start debe tener asignada un valor constante.
Tipo de PLC |
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 |
Tamaño del bloque (1 bloque) |
64 palabras (64x16bit) |
64 palabras (64x16bit) |
64 palabras (64x16bit) |
2048 palabras (2048x16bit) |
2048 palabras (2048x16bit) |
Número del bloque inicial de la memoria EEPROM |
0 a 9 |
0 a 95 |
0 a 255 |
0 a 15 |
0 a 31 |
Número de bloques a leer/escribir en cada ejecución |
de 1 a 2 |
de 1 a 8 |
de 1 a 255 |
1 (escritura) de 1 a 16 (lectura) |
1 (escritura) de 1 a 32 (lectura) |
Duración de la escritura (tiempo de scan adicional) |
< 20mseg cada bloque |
< 5mseg cada bloque |
< 5mseg cada bloque |
< 100mseg cada bloque |
< 100mseg cada bloque |
Duración de la lectura (tiempo de scan adicional) |
Menos de 1 mseg. por bloque |
Menos de 1 mseg. por bloque |
Menos de 1 mseg. por bloque |
9,94ms + (1562.6*número de bloques) ms |
|
Máximo número de eventos de escritura |
100.000 |
10.000 |
10.000 |
10.000 |
10.000 |
Máx. número de lecturas |
Sin límite |
Sin límite |
Sin límite |
Sin límite |
Sin límite |
También cuenta apagar y cambiar de modo de RUN -> PROG.
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
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
Cuando la variable start pasa de FALSE a TRUE, se ejecuta la función.
Esta función lee el contenido desde data field[0] a data field[63] (s2* = 1 => 1 bloque = 64 palabras) y escribe la información en la memoria EEPROM a partir del bloque inicial 0.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