7/11/2019 11:04 AM | |
Joined: 6/14/2019 Last visit: 8/7/2021 Posts: 30 Rating: (2) |
TIA v15.1, 1515F PLC, TP900 Comfort panel. Hi all,
Each axis type will have a UDT shared between the PLC and HMI. Most of the structure of the UDT will be common between the types but with small differences in sensors and faults. Where the axis popups have common functionality (for example setting the axis mode), they must use common faceplates which are defined ONCE in the project (not multiple times). These faceplates will set elements in tag-paths within the UDT which will be common between all the UDTs. How can I multiplex the symbolic tag paths of faceplates directly to instance DBs in the PLC without the use of arrays? I've been reading everything I can on this topic, all over the internet, and on YouTube, and from every Siemens resource, and all I can find is people using primitive index arrays in every example. TIA portal is even built around the concept with the built-in Multiplexing property of the HMI tags and the rather unusual <Multiplex tag> concept in the General tag tab where a tag can be pointed at an index of an array, using a separate tag as a pointer. This is all fine as a joke and for kindergarten-level code construction by people who were never taught how to program, but to create a project where every object is only defined once we need to use proper multiplexed, symbolic, tag assignment. To be clear: between all seven axis types, I am only going to define the "Mode" buttons once and they need to access the same relative tag path within the UDT of whichever popup they are used in. I need to be able to assign a PLC instance DB to a faceplate instance on a screen, then on a click script, open a popup where each faceplate inside the popup inherits the reference to the instance DB from the original faceplate. How can I do this??
I know the use of pointers inside the HMI must be possible somehow, because the built-in primitive integer index-based functionality uses pointers. Here, see the pointer! [snip] So I only need some way to use pointers myself, and STRING pointers, not INT pointers. If somebody could please show me how this can be achieved I would extremely grateful. I am very happy to perform any amount of VBA coding required. Regards, Angus P.S. I have already proven that faceplate dynamizations can point directly to PLC instance DBs in this thread here: https://support.industry.siemens.com/tf/ww/en/posts/can-a-faceplate-dynamization-point-to-a-udt-instance-db/216637/?page=0&pageSize=10 |
Last edited by: Angus_ at: 07/11/2019 11:05:24Last edited by: Angus_ at: 07/11/2019 11:10:01Last edited by: Jen_Moderator at: 07/11/2019 14:37:45Removed link and added file as an attachment. |
|
Follow us on