Voted best answer

PRAM is used to store the downloaded information for the case of a reset or cold start. PRAM stands for Protected RAM. The PRAm is write protected against accidental overwrite by faulty applications.

The content of the PRAM is for performance reasons copied into the RAM for execution. In addition the RAM serves dynamic memory requrests from applications.

With this in mind we can see, that PRAM size and RAM size generally should be the same, with PRAM on the lower side. It actually depends on your application. If you create huge matrices in your application the size of those matrices would add to your needed RAM, but not PRAM.

Looking at your RAM_Free of 12 MB from 14 MB available (2 MB of the 16 MB AC 800F are used by the operating system) I think your 947 KB PRAM size is way to small.

You should set it somewhere in the range of 4-6 MB. Don't forget the Max Objects (also in the boot parameter). It should be around 5000-6000.

Also have a look at your Global Variables size. It is set in the Header dialog of the process station resource in the P-Tree.

The straight way out of your dilemma is to change the PRAM size and do a Load Whole Station.

You can reduce the effect by uploading the curent parameter settings into the project file prior to the download (though I'm not sure if this will still work in your current situation) and re-evaluate the initial values of of your variables.

@Ordoban: Has been done already. Don't remeber from which version on though. In my current installed version (2016SP1) FE sets Objects 5000, PRAM 4 MB for PM 803F and 3000 Objects 900 KB for the PM 802F.

thank you very much for your detailed explanation! :) My answer comes a bit late because of our tight schedule.

I raised the PRAM and Max Objects and did a Load Whole Station. Unfortunately, first it failed (E_STATION_ABORT if I remember correctly), then the Secondary didn't synchronise, but the third attempt worked fine.

Thank you very much for the rules of thumb regarding PRAM and RAM. With the hint that PRAM and RAM size should generally be the same, do you mean that about the same amount of PRAM and RAM should normally be free, or that the PRAM should occupy about half of the RAM?

The Global Variables size you're referring to, that's the "Variablenbereich" in German? It has 32K total and 27K free, seems fine to me. Is this the memory range where global variables are stored? Can/should I change the size in some cases?

A last question -- can there arise the need to change the "Configured Redundancy Memory" in the resource's boot parameters?

Hello Björn,
when you set the PRAM size, then the RAM size is calculated automatically. When I say the RAM size and PRAM size should approx be the same, I mean that after the setting the variables PS.RAM_SIZE and PS:PRAM_SIZE should have the same value.

The Global Variables size need only be adjusted, if the free size comes close to 0, which means your total number of variables in this resource take close to 32K of RAM.

The Configured Redundancy Memory needs only be corrected if the value of Requiered Redundancy Memory comes close to (or is even higher than) the configured value. After plausibility check you should see the Required .... value shown in the corresponding field.