Hola Mariano,
Es muy fácil, a modo general debes leer hora/fecha actual del RTC con función:
RtcGetAll()Lo copias a un array a los datos.
Luego al array lo guardas en EEPROM con la funcion
EepromWriteCells()Finalmente podes leer nuevamente el array de EEPROM con
EepromReadCells().
Las funciones están descritas en documento:
http://slicetex.com/hw/stx80xx/docs/STX80XX-MP-PLC-AX_CX_DX.pdfTe adjunto un ejemplo que acabo de hacer, donde se guarda la hora/fecha del PLC al arrancar en la memoria EEPROM y
luego si accedes desde el servidor Web, se muestra la fecha/hora en la pagina inicial Web.
Es importante que tengas la fecha/hora del PLC configurada correctamente así no ves datos erróneos.
Te explico a modo general el código:
Para hacerlo modular, en el archivo
RtcEeprom.p puse dos funciones para guardar fecha/hora en memoria EEPROM y
otra función para leer fecha/hora de la memoria EEPROM, se llaman
RtcSaveToEeprom() y
RtcLoadFromEeprom().
RtcSaveToEeprom()
{
// Crear variables para almacenar información del reloj.
new RtcData[7]
// Obtener información del reloj.
// RtcData[0]=Day, RtcData[1]=Month, RtcData[2]=Year, RtcData[3]=Hour, RtcData[4]=Min, RtcData[5]=Sec, RtcData[6]=DOW
RtcGetAll(RtcData[0], RtcData[1], RtcData[2], RtcData[3], RtcData[4], RtcData[5], RtcData[6])
// Escribir RtcData[] en a partir de la dirección 0 de la EEPROM hasta la direccion 23.
// La catidad de bytes a escribir es: 6 celdas * 4 bytes = 24 bytes
return EepromWriteCells(0, 6, RtcData)
}
RtcLoadFromEeprom(&Day ,&Month, &Year, &Hour, &Min, &Sec)
{
new Stat = 0
new RtcData[6]
// Leer 6 celdas a partir de la dirección 0 de la EEPROM.
if((Stat=EepromReadCells(0, 6, RtcData)) < 0)
{
// Error de lectura.
return Stat
}
// Retornar fecha/hora en variables pasadas como argumentos de la funcion.
Day=RtcData[0]
Month=RtcData[1]
Year=RtcData[2]
Hour=RtcData[3]
Min=RtcData[4]
Sec=RtcData[5]
// Retornar estado de la funcion.
return Stat
}
Si te fijas en el código anterior, las funciones son simples: cargar fecha/hora y guardan en EEPROM.
Luego cargan de EEPROM fecha y hora, y la devuelven en variables para el usuario.
Luego en el servidor Web, desde el archivo
OnPrintEvent.p imprimimos las cadenas de fecha/hora en la pagina Web dinamica:
// Crear variables para almacenar información del reloj.
new Day, Month, Year, Hour, Min, Sec
[snip]
//
// Procesar cadenas relacionadas a index.shtml
//
case 30:
{
// Leer fecha/hora de EEPROM.
RtcLoadFromEeprom(Day, Month, Year, Hour, Min, Sec)
// Imprimir fecha en pagina Web.
WebServerPrintStr("%02d/%02d/%04d", Day, Month, Year)
}
case 31:
{
// Leer fecha/hora de EEPROM.
RtcLoadFromEeprom(Day, Month, Year, Hour, Min, Sec)
// Imprimir hora en pagina Web.
WebServerPrintStr("%02d:%02d:%02d", Hour, Min, Sec)
}
[snip]
Cualquier duda me avisas, saludos.