Bolt (Customer) asked a question.

C-more import ALL tags from BRX

I'm working on a project with a BRX, and I created several UDT's. For example, Shift0-127. The last 128 shift's data is then kept in this block. However, I can only find Shift0 and Shift1 in the tag database, as those are the only ones directly referenced in the PLC code. How do I display Shift0-14's data, for example?

Similarly, if I go ahead and create a UDT of elements like HMI.CurrentScreen, .SelectScreen, etc, I can't get those to show up in the C-more's tag database to assign to PLC <-> Panel's setup until after they are directly referenced in the PLC code? This seems quite kludgey to have to fully build an entire PLC program before being able to fully setup the HMI?

I have tried all options of check marks in DmD's Export Element Documentation, 'Do-more Driver Format WITH Struct Fields' with 'Also export USED elements...' checked is the most expansive export, but still quite lacking in all the data.


  • HOST_franji1 (HOST Engineering)

    Yeah, that's a "hole" in the current memory model. There are literally thousands each of D's, C's, V's, X's, Y's that you only want the ones that you have used in your program. But what if you want to create your HMI objects before you've actually wrote logic or created nicknames for them. UDTs of Heap Items could easily be added implicitly, but not necessarily all data blocks of all structures that are currently not used (but maybe so - every timer, counter, string, user data types, etc.). It's really bad if you are utilizing array references in logic of large data blocks of UDTs - you HAVE written the logic, but there is just maybe one hard reference to the index 0 of the block (vs. everything else is an array reference).

    The Export for C-more needs to have an option where you can pick and choose anything/everything to be exported in your Memory Configuration, and NOT based on "usage" in your logic.

     

    One non-optimal-work-around is you can create a d*u*m*m*y code block with a bunch of MEMCLEAR instructions for each UDT ID, e.g.

    MEMCLEAR MyUDTBlock0

    MEMCLEAR MyUDTBlock1

    ...

    MEMCLEAR MyUDTBlock99

     

    then do the Export

     

    I wish I had a better answer. I think a browser/advanced checklist box of all data blocks and heap items would be the best "general" solution.

    Expand Post
    Selected as Best
  • HOST_franji1 (HOST Engineering)

    Yeah, that's a "hole" in the current memory model. There are literally thousands each of D's, C's, V's, X's, Y's that you only want the ones that you have used in your program. But what if you want to create your HMI objects before you've actually wrote logic or created nicknames for them. UDTs of Heap Items could easily be added implicitly, but not necessarily all data blocks of all structures that are currently not used (but maybe so - every timer, counter, string, user data types, etc.). It's really bad if you are utilizing array references in logic of large data blocks of UDTs - you HAVE written the logic, but there is just maybe one hard reference to the index 0 of the block (vs. everything else is an array reference).

    The Export for C-more needs to have an option where you can pick and choose anything/everything to be exported in your Memory Configuration, and NOT based on "usage" in your logic.

     

    One non-optimal-work-around is you can create a d*u*m*m*y code block with a bunch of MEMCLEAR instructions for each UDT ID, e.g.

    MEMCLEAR MyUDTBlock0

    MEMCLEAR MyUDTBlock1

    ...

    MEMCLEAR MyUDTBlock99

     

    then do the Export

     

    I wish I had a better answer. I think a browser/advanced checklist box of all data blocks and heap items would be the best "general" solution.

    Expand Post
    Selected as Best
    • Todd Dice (Customer)

      "There are literally thousands each of D's, C's, V's, X's, Y's that you only want the ones that you have used in your program... The Export for C-more needs to have an option where you can pick and choose anything/everything to be exported in your Memory Configuration, and NOT based on "usage" in your logic."

       

      I agree.

       

      One "weakness" of using Productivity, and your HMI is the 4" color C-more Micro is, PSuite exports ALL the tags in the project. Even those not used and since the Micro programming software has a tag limit, you're sometimes having to add tags and deleting others. It is a pain in the A.

      Expand Post
      • ADC Community_02 (Automationdirect.com)

        @Todd Dice (Customer)​ I have forwarded your comments on possible improvements to the TagDB export to the Productivity Product Manager.

      • HOST_franji1 (HOST Engineering)

        I'll make sure you can limit the export (i.e. not just a single checkbox "Export All").

         

        The more I think about it, a checkbox list with every block and heap item that you can export or not, but also with some helper buttons like "All UDT Blocks/Heap Items" and "All User Blocks/Heap Items" and "All" but also "Uncheck All Built-In Blocks" (you really don't want all 4096 D registers do you 😁 ).

         

        For structures, probably be able to limit fields to "Most Useful", "Useful", or "All" (the 3 Data View structure field status levels)

        Expand Post
    • HOST_franji1 (HOST Engineering)

      It's not the greatest, but Designer 2.10 lets you choose user String Blocks/Heap-items or UDT Blocks/heap items to be part of your C-more Symbolic Driver Export:

       

      ExportUDTStringsCheck1When you hit the Select button, you get a list of all the UDT and String blocks to pick from to be exported:

      ExportUDTStringsDlg1 

      Expand Post
  • Bolt (Customer)

    Yeah, that was the problem, array referenced. I thought I would get around that with MEMCOPY MyUDTBlock0 to MyUDTBlock1...99, which while removing the need for a true pointer (keeps it all in cronological order with Block0 being the most current), it still doesn't appear in the export.

     

    A blank Task with 100's of MEMCLEAR instructions did the trick for my intents and purposes here. It's not the worst to enter, I'm glad I stumbled upon 'Allow element ID change w/only numeric text' feature the other day. One could write a macro to do it at large scale, paste, <number>, enter, enter, paste, <next number>.... Maybe next time!

     

    Please consider adding a check box to the export dialog.

    Expand Post
  • kewakl (Customer)

    I missed this thread until now.

    Good content, all!