3/13/2018 5:32 PM | |
Posts: 2826 Rating: (686) |
huggy_d1: Confirmed for S7-1200 simulated in TIA V15.0.0.0. |
Last edited by: #dP at: 3/13/2018 5:33:11 PM |
|
This contribution was helpful to1 thankful Users |
3/13/2018 9:09 PM | |
Posts: 2826 Rating: (686) |
Hello Janko, Earlier I said:
The application code of "LGF_CompareVariant" can be sourced from:
|
Last edited by: #dP at: 3/13/2018 9:11:49 PM |
|
3/13/2018 9:28 PM | |
Joined: 7/7/2010 Last visit: 10/18/2024 Posts: 15327 Rating: (2432)
|
|
science guy |
|
3/13/2018 10:41 PM | |
Joined: 3/16/2015 Last visit: 10/10/2021 Posts: 1250 Rating: (173) |
I'm with dp on this one. It is very surprising and pleasantly surprising at that. I wish all function were that capable. At first I thought the OP wanted to compare values of tags that a VARIANT data type (pointers) pointed to. So I passed a PLC data type to a Variant input in an FB and then compared then went on to create code on the basis that a VARIANT data type (according to the manual) " occupies no space in the instance data block or work memory. However, it will occupy memory space on the CPU. A tag of the VARIANT type is not an object but rather a reference to another object" And on that basis I used VariantGet to retrieve the values of the tags that the pointers pointed to and then compared them Very straight forward. Then I saw the screen shot of the OP showing a simple ladder compare of PLC data type and I thought of course that worked because that was a comparison of Data structure not pointers and thought that wouln't have worked for variant pointers. On thing got my attention though and that is the data type automatically selected by the comparison function in the screen shot. For some reason it was set to "variant" . So I thought I should try it out in my FB and see what happens and to my amazement it worked. Not only with structure type tags but with other tags like Integer type. So somehow the comparison function has some background logic that retrieves the values of the tags that the pointer point to and compares the actual values. Imagine of all functions were that versatile and "intelligent". But you can not assign variant to another variant or a variant to a tag (Even if the tag is of the same type as the one the variant points to) For #dp, the project your requested is for the basic version using S7-1200 and as I mentioned it the simulator doesn't work on TypeOf . You can remove that line of code and the rest will simulate fine. AttachmentVariantCompareBasic.zip (197 Downloads) |
3/13/2018 10:45 PM | |
Joined: 3/16/2015 Last visit: 10/10/2021 Posts: 1250 Rating: (173) |
Attached is a PDF of the block. Note that I incorrectly stated that VariantGet doesn't simulate properly with S7-1200 but it does work fine in the simulator. TypeOf doesn't. AttachmentSCL_Compare_Struct (FB1).pdf (280 Downloads) |
Follow us on