Vediamo le diverse possibilità.
Potresti allocarti un array di memoria con l’attributo RETAIN (Massima dimensione 1 KByte), ed a ogni loop di programma (O solo su variazioni) copiare il contenuto della memoria da DB100.0 a DB100.xxx in questo array, puoi usare la funzione Sysmemmove. Ed alla accensione fare l’operazione opposta. Se vuoi eseguire la copia solo su variazioni puoi usare il FB BufferModified per il controllo.
Usando sempre l’area non ritentiva della DB100 puoi copiarla su di un file su disco utilizzando il FB FileMemoryDump. In questo caso conviene eseguire la copia solo sulle variazioni. Poi alla accensione esegui la copia inversa da file in memoria.
Puoi allocare un array in memoria non ritentiva della dimensione che ti serve e poi sempre con il FB FileMemoryDump trasferirlo su file come detto precedentemente. In questo caso per poter raggiungere questo array che non si trova in DB100 da Modbus devi utilizzare il FB ModbusSlave_v1 agganciandolo ad un FB TCPServer istanziato appositamente. Naturalmente dovrai utilizzare un’altra porta TCP non la 502.