2/8/2011 12:31 AM | |
Joined: 10/7/2005 Last visit: 9/21/2024 Posts: 3021 Rating: (1054)
|
Hello haris_usama to start with, your CPU has "only" 96 KByte of work memory which can not be expanded, the 128 KByte MMC is your Load memory and as such suitably sized for the CPU.
FB41 (~1.5KB size) does of course only exist ONCEin your PLC irrespective of how many times you call it, soI somewhat disagree with hdhosseini's size requirement calculation of "12*1.5 = 18 KB" concenring this (he is however correct with the 12* Instance Data Blockrequirement). Having said that, everycall ofFB41 does add to the program memory, how much is consumes depends on the amount of paramers that you assign to eachcall(e.g. a "nacked" call of FB41 adds 34 Bytes any additional IN/OUT variable adds another 6-16 Bytes to it, depending on the type of the variable and in which memory areait is). Bottom line, each FB41 call can easily addanother few hundreds bytes to your workmemory.
As you canNOT expand your work memory, opting for a bigger CPU is certainly one solution. The other is to identify which blocks are your "memory guzzlers" (which are not only the FB41 calls in your case) and see if you can optimise their code. Have a look too at the links below which will give you some info and hopefully help: How can you determine the size of the load memory and main memory of a SIMATIC S7-300/400 CPU? How can the program runtime be optimized if the main memory of the CPU is too small for the runtime-relevant STEP 7 program?" Impact of the address area on memory requirements Information on the topic of "Optimizing program sequences" Last but certainly not least, stay aways from transferringcomplex data types(e.g. UDT's, STRUCT's etc.) to/from FC's and FB's as usage of these greatly increases your memory requirements (see HERE for more if applicable in your program). I hope this helps |
Last edited by: fritz at: 2/8/2011 12:33 AMCheers |
|
This contribution was helpful to3 thankful Users |
Follow us on