Technical FAQs

Ask a Question

What are the differences between Internal Flash, DRAM, and SRAM memory in the Magelis targets?

Issue:
How are the internal flash, DRAM, and SRAM memory used in the Magelis targets?

Product Line:
XBTG/GC/GK/GT, HMIGTO/GTU/STO/STU, iPCs

Environment:


Cause:


Resolution:
There are three types of memory available.
  • First is Internal Memory (Flash memory) which is available in different sizes in different terminals.  And this Internal (Flash) memory affects the total size of your application.  When download, the application is stored in the Internal Memory.
  • Second is Dynamic RAM (DRAM) which is non-retentive in its nature means if terminal resets then all data of DRAM get erased. And DRAM memory affects how much information you can display on the panel at one time.
  • Third type is Static RAM (SRAM) which is retentive in its nature means if terminal resets anyhow then all its data do not get erased and they are retained. And SRAM memory affects how much information you can store between run-time sessions.

Comparing DRAM and Internal Flash memory in HMI terminal, you can correlate these two memory segments with RAM and Hard Disk memory of PCs respectively where RAM affects runtime performance of PCs and hard disk capacity indicates overall storing capacity of PCs.

Naturally during runtime your DRAM usage will be bigger than overall memory occupied by Internal Flash memory of terminal because DRAM indicates the current CPU usage of terminal depending on loading of runtime application and it keeps varying rather Internal memory usage will be fixed depending on overall size of downloaded application and indicates how big application can be downloaded to terminal.

Here are few details about Magelis terminals memory break-up and usage:

i) The application is managed on DRAM with Java methods:
- At download, the whole project is stored on Flash memory as compressed binary. It is the APP. bin file.
- At startup, the project is uncompressed from Flash into DRAM as Java classes and variable list; each panel, graphical object, action... has its own Java class.
- Immediately, instances for all classes needed at startup (startup panel, target actions, alarms) and for all scanned variables are created;
- When another panel needs to be displayed, instances for all classes (new panel, graphical objects of this panel, panel actions) and variables called on this panel are created;
- When the panel change, instances of unused variables are not deleted, they stay in DRAM. Instances of graphical objects are regularly deleted from DRAM.

ii) The customer can also use an Action which makes "Information" operation, as described in Online Help section 9.5.13: with this operation you can get the current DRAM usage during runtime.

iii) The result of the method "Sys.getInfoInt" is the amount of memory available on the selected memory area given in Kbytes:
- TOTAL_DRAM_USAGE gives the available memory in DRAM,
- FREE_KBYTE_MAIN gives the available memory in main drive which is the flash memory,
- FREE_KBYTE_SECONDARY gives the available memory in secondary drive which is CF card,
- FREE_KBYTE_OPTIONAL gives the available memory in optional drive which is USB storage device.
 
Was this helpful?
What can we do to improve the information ?