2/3/2010 12:39 AM | |
Joined: 10/7/2005 Last visit: 9/22/2024 Posts: 3021 Rating: (1054)
|
Hello IrVin_Chan before you decide to split your FC, I'd like to go back to some basics. Even a really really old 315-2DP CPUallowed you to havean FC (of FB)size of 16KB. I am quite frankly amazed that you managed to exceedthis by programming 20 Steps into the FC. Now I don'tknow how much logic you programmed per Step(which could explain the size) but wonder if you perhaps used UDT's and/or STRUCT's as IN, OUT or IN_OUT parameters to the FC. If this is the case, it could very well explainyou FC size as every access to a variable of the UDT or STRUCT "gobbles up" heaps of memory. Attached is a Siemens FAQwhich has more on this subject and below a link to a forum thread which has some additionaldiscussions on this matter (and even if this shouldnot be applicable in your case, it doesn't hurt to be aware of it). Shall UDT make the difference in CPU Scan Time? Food for thougt anyway and if possible please post your FC here as it will help us to give you better advise on what to do. I hope this helps AttachmentMemory requirements for word load command.pdf (143 Downloads) |
Cheers |
|
This contribution was helpful to1 thankful Users |
2/3/2010 2:11 AM | |
Posts: 15 Rating: (0) |
Hi fritz, I'm not really good at this as this is one of the first program i've written. Anyway, I've uploaded the particular few blocks and probably you can refer to the FC222 as main while the 2 is nested. I have not used UDT or STRUCT as IN, OUT or IN_OUT parameters to the FC as you've mentioned. Best Regards Irvin Chan AttachmentProgram.zip (138 Downloads) |
2/3/2010 5:14 AM | |
Joined: 10/7/2005 Last visit: 9/22/2024 Posts: 3021 Rating: (1054)
|
"practice makes perfect" as they say and please don't hang your head in shame dearIrVin_Chan as you did in general create quite awell structured FC. Having said that,you indeed manage to make FC222a cool 28.5 KB in size by means of simple Ladder logicrelated programming! Ionly had a quick glance at it, but can tell you that main memory consumingculpritare each "Stepx Process"Networks. Every one of it consumes 900 Bytes of memory (or 18KB for all 20 "Stepx Process" Networks together). As a general tip,you can verify this by simple making a copy of the FC,deleting a Network(or part thereof), save the Block andcheckthe new Block size. As it turns out, the (three) calls to FC261 are in turn the main memory consumers withineach "Stepx Process"Networkitself. Each FC261 call "costs" you 240 Bytes of memory which adds up to 14.4 KB for all FC261 calls from within FC222 (3xFC261 calls per"Stepx Process"NW and 20 Steps). This may seem somewhat suprising/excessive since you "only" have to pass on 10 Parameters to every FC261 call, there are however the following two things "conspiring" against you: 1.) All actual values that you pass on areof the so called"fully qualified DB access" (e.g. DB18.DBW92, DB18.DBX47.1 etc.). Passing fully qualified DB adresses as parameters to a Block will lead to the compiler having to create Local block variables to/from which it copies the DB values (which you can NOT "see", this happens unbeknown to you but will create extra "invisible" code. THIS forum post has a rather long explanation on this subject in case you are curious to find out more). You can verify test this for yourself by replacing the DBx.DBW adddress with for example an MW address (in which case the compiler does NOT create the extra hidden value copy code). 2.) Eightouf of the 10 Parameters are of type IN-OUT For an IN_OUT there'll isextra code created to copythe DB values into Local block data before the Block call and then again afterthe Block call is finished(topass the new value back into its rightful DB address). Bottom line is: You did nothing "wrong" in general with the way you wrote your program, you "simply" created a huge Block. Ihope the above explanantion makes sense and will help you in determiningwhich way forward. |
Last edited by: fritz at: 2/3/2010 5:23 AMfixed up broken quote bracket and minor typos Cheers |
|
This contribution was helpful to1 thankful Users |
Follow us on