Have you added a lot of temp registers to your OB's????? or changed the allocation of local memory in the HW config?
Taken from Step 7 Online Help
"The L stack saves the following:
<LI style="FONT-SIZE: 10pt">The temporary variables of the local data of blocks
<LI style="FONT-SIZE: 10pt">The start information of the organization blocks
<LI style="FONT-SIZE: 10pt">Information about transferring parameters
Interim results of the logic in Ladder Logic programs
When you are programming organization blocks, you can declare temporary variables (TEMP) that are only available when the block is executed and are then overwritten again. Before you access the local data stack for the first time, the local data must be initialized. In addition to this, every organization block also requires 20 bytes of local data for its start information.
The CPU has a limited amount of memory for the temporary variables (local data) of blocks currently being executed. The size of this memory area, the local data stack, is dependent on the CPU. The local data stack is divided up equally among the priority classes (default). This means that every priority class has its own local data area, thus guaranteeing that higher priority classes and their OBs also have space available for their local data."
The default allocation of Local data in a 318 is to spread 256 byte chunks around to the different priority classes. Re-allocate the local data by first using the spare 500 bytes and then taking say 128 bytes from each of the priority classes and allocate it to priority class 1 until your problem is resolved.