Questo blocco funzione da eseguire in task Back, effettua il dump di una zona di memoria a partire da indirizzo definito in MBAdd per il numero di bytes definito in MBSize su di un file su disco di nome Filename. Il FB può operare anche su area di memoria rilocabile.
Attivando l’ingresso Write viene creato il file ed il contenuto della memoria viene scritto nel file. Attivando l’ingresso Read viene letto il file ed il suo contenuto trasferito in memoria. Terminato il comando viene attivata l’uscita Done, che rimane attiva sino alla disattivazione dei comandi. In caso di errore esecuzione viene attivata per un loop l’uscita Fault.
Il tipo di file creato cambia in base alla selezione definita in Mode, definendo un valore di offset in FPOfs è possibile accodare i dati ad un file esistente.
Approfondimenti
In questo topic un esempio di utilizzo FileMemoryDump_v1 in sostituzione della versione precedente.
Formato file
FILEMDUMP_MODE#ASCII: Esempio di file Ascii.
00000000: 00 01 02 03 04 05 06 07 | 08 09 0A 0B 0C 0D 0E 0F 00000010: 0F 0E 0D 0C 0B 0A 09 09 | 07 06 05 04 03 02 01 00
Upgrade list
- Se l’oggetto aggiornato non è nell’ultima versione del package, vedi capitolo “Aggiornamento librerie” in questo articolo.
- Gli oggetti obsoleti sono inseriti nella libreria eLLabObsoleteLib fare riferimento al relativo manuale ed al manuale programmazione in formato pdf.
FileMemoryDump_v1
Aggiunto parametro Mode per la selezione del modo operativo. Modificato nome ai parametri MBufferPtr che diventa MBAdd e MBufferSize che diventa MBSize, aggiunto il parametro FPOfs. Ora è possibile accodare ad un file esistente altra memoria.
Descrizione
SpyOn (BOOL) Se attivo permette di spiare il funzionamento della FB (Vedi articolo).
Read (BOOL) Comando di lettura da file in memoria.
Write (BOOL) Comando di scrittura memoria su file.
Mode (FILEMDUMP_MODE) Definizione modo gestione file (Definizione).
Filename (@STRING]) Percorso e nome del file in cui fare log (es.: ADR(‘C:/Dump.txt’)).
MBAdd (PVOID) Pointer a buffer di memoria.
MBSize (UDINT) Dimensione in bytes del buffer di memoria.
FPOfs (UDINT) Offset indirizzamento su file.
Done (BOOL) Attivo se comando eseguito. Se attivo occorre resettare i comandi per iniziare un nuovo comando.
Fault (BOOL) Attivo per un loop su errore esecuzione del comando.

Trigger di spy
Se SpyOn attivo è possibile utilizzare la console di spionaggio per verificare il funzionamento della FB. Sono previsti vari livelli di triggers.
Livelli di trigger
Trigger | Descrizione |
---|---|
16#00000001 | Rd: Lettura dati da file. |
16#00000002 | Wr: Scrittura dati su file. |
16#40000000 | Er: Errore di esecuzione. |
Esempi
Come utilizzare gli esempi
Nel seguente esempio attivando da debug il comando Write viene eseguito il trasferimento del buffer DBuf nell file indicato. Attivando da debug il comando Read è possibile rileggere i dati dal file e ritrasferirli nell’area di memoria.
LogicLab (Ptp136, ST_FileMemoryDump)
PROGRAM ST_FileMemoryDump
VAR
Read : BOOL; (* Read command *)
Write : BOOL; (* Write command *)
ASelector : UDINT; (* Array selector *)
DBuf : ARRAY[0..1, 0..15] OF BYTE; (* Data buffer *)
MDump : FileMemoryDump_v1; (* FBinstance *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_FileMemoryDump"
// *****************************************************************************
// Setting by debug the Read or Write command the selected data array is read or
// write on file. Please note than the write command must be executed before to
// execute the read. Otherwise file is not present and the read command fails.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// INITIALIZATION
// -------------------------------------------------------------------------
// Execute program initialization.
IF (SysFirstLoop) THEN
MDump.SpyOn:=TRUE; //SpyOn
MDump.Mode:=FILEMDUMP_MODE#ASCII; //Execution mode
MDump.Filename:=ADR('C:/MRetain.txt'); //Dump memory file
// MDump.Filename:=ADR('D:/MRetain.txt'); //Dump memory file
END_IF;
// -------------------------------------------------------------------------
// MEMORY DUMP
// -------------------------------------------------------------------------
// On set by debug the Read or Write command the selected data array is read
// or write on file. please not
MDump(); //Execute the FB
IF (MDump.Done) THEN MDump.Read:=FALSE; END_IF;
IF (MDump.Done) THEN MDump.Write:=FALSE; END_IF;
// -------------------------------------------------------------------------
// COMMAND MANAGEMENT
// -------------------------------------------------------------------------
// Data buffer read.
IF (Read) THEN
Read:=FALSE; //Read command
MDump.MBAdd:=ADR(DBuf[ASelector, 0]); //Dump memory address
MDump.MBSize:=16; //Dump memory size
MDump.FPOfs:=ASelector*MDump.MBSize; //File position offset
MDump.Read:=TRUE; //Read command
END_IF;
// Data buffer write.
IF (Write) THEN
Write:=FALSE; //Write command
MDump.MBAdd:=ADR(DBuf[ASelector, 0]); //Dump memory address
MDump.MBSize:=16; //Dump memory size
MDump.FPOfs:=ASelector*MDump.MBSize; //File position offset
MDump.Write:=TRUE; //Write command
END_IF;
// [End of file]