Industry Online Support
Technical Forum
6/28/2014 9:11 PM | |
Joined: 11/21/2007 Last visit: 8/12/2024 Posts: 2325 Rating: (308) |
Helloshaun William Bis absolutely right in his analysis. Unassigned Temp variables are quite dangerous, because as far as I know, the Temp Area is not reset at the start of block execution. The temp area may contain values / bit statuses from previous blocks calls ( of same / other blocks ). Therefore we must always reset the Temp area before using them in a block. Further, I agree withWilliam Bthat this is probably an incomplete block ( or maybe some parts of the blocks were deleted by the programmer for this application ). e.g. the Temp Variable TMP_BOOL has been assigned twice but never used Hope this helps Cheers Navnag
|
There is no such thing as the last bug in a program |
|
6/28/2014 10:00 PM | |
Posts: 5225 Rating: (1192) |
Hi all. I have had some more time to think about this one. Probably the block was designed originally to handle "arm" and "head" movements. For the particular application the "head" was not of any concern. The coding referencing that was taken out, but the TEMP bits remained. [opinion] TEMP variables for all functions utilises the same memory area ("scratch-pad"). The compiler ensures that there are no overlaps when blocks are called within blocks. But if the block stands separate, it might happen that that the same memory area is used. It is important to make sure the TEMP variable you use, has already been assigned. [opinion] The same applies to variables declared as OUT. Rather not read an OUT variable before it is assign something. Better yet to use an IN-OUT or STAT variable where you wish to read and write. The use of TEMP_BOOL is actually VERY CLEVER. This is a way to format the code as to have move calculations within the same network. Only recently we can do that in TIA. TEMP_BOOL is just a tool to format the coding without the need to resort to STL code. By the way.. the coding in Network 1 can be coded much more efficiently. BUT there is probably a reason for that too. Maybe some of those bit variables are SET instead of CLEARED in variations of the code. Remember.. we do not know how the original code looks like.. this FB is but a subset of the code that uses "head" and "arm" movements. Honestly speaking the thanks does not go to me. IBN-Service solved this one for us.. all we really had to do was listen & understand. Greetings. w |
Last edited by: William B. at: 6/28/2014 10:16 PM |
|
Follow us on