using Controllogix 5000

I don't think this is entirely true. Arrays and UDTs can easily have unused elements/members. Standardized UDTs, AOI's may have functionality that may or may not be required pending the process.

For example, a analog input AOI. I built one, and added a weight calculation function. It may or may not be required but it's a feature that could be enabled depending on the analog input and process needs. So, while the UDT base tag is used members of that UDT could go unused, which "generically" speaking the "tag" AnalogInput.Percent might be used but the "tag" AnalogInput.Weight may not be used.

The UDT is technically "used" however not entirely.

We also will create arrays of UDTs as controller-scoped tags. This keeps everything nice and compact, but then alias to other controller-scoped tags or program tags (depending on the function). So it's possible an element of the UDT tag array may or may not be used.

So to me "well-written" means the tag structures are organized, standardized and efficient the trade-off is not everything is used but you have visibility as to what CAN be used, or what functionality COULD be implemented.

I do exactly the same, however, in the context of this discussion, the parent UDT tag is still used when only one member is used, so it doesn't show up in the unused tags filter. Same thing for an array. If you use one element of 1000 point array, the array tag is still used, so again it doesn't show up in the unused filter tag. I have lots of UDTs (MOTOR eg) where only a few members are used depending on application, but the unused filter tag database is still clean and empty.
 
There are legitimate reasons to have tags that the "unused" filter will find that should not be deleted.

Example: I have data entry fields that are used by the HMI to print a report or ticket. They are not used by the PLC program in any way, but I would like them to persist through a power outage. Easy answer, store them in the PLC memory. The tags should definitely have a description that identifies how they are used.

I am not a fan of "delete everything that shows as unused". I'll delete stuff once I know what that it is no longer needed, but I have to know what it was for first.

To the OP's original question:
No, there is no way to filter out module created tags, or everything that is not referenced in a routine. However, it's usually not that much of an issue. You have control over the naming of module created tags other than the local rack, you can make it so they sort as a group to make them easier to ignore.
 
Last edited:
There are legitimate reasons to have tags that the "unused" filter will find that should not be deleted.

Example: I have data entry fields that are used by the HMI to print a report or ticket. They are not used by the PLC program in any way, but I would like them to persist through a power outage. Easy answer, store them in the PLC memory. The tags should definitely have a description that identifies how they are used.

I am not a fan of "delete everything that shows as unused". I'll delete stuff once I know what that it is no longer needed, but I have to know what it was for first.

To the OP's original question:
No, there is no way to filter out module created tags, or everything that is not referenced in a routine. However, it's usually not that much of an issue. You have control over the naming of module created tags other than the local rack, you can make it so they sort as a group to make them easier to ignore.

YOU remember what they are, but the next guy/gal, not so much. For that reason it's best practice to put those tags into a NOP or Dummy rung just so they DO NOT show up as unused. For those type of memory placeholder tags, I'll usually create a rung of MOV MyTag1 MyTag1 and document the rung. Keeps the tag out of the unused filter and documents it well so that it can be searched for and cross referenced.
 
YOU remember what they are, but the next guy/gal, not so much. For that reason it's best practice to put those tags into a NOP or Dummy rung just so they DO NOT show up as unused. For those type of memory placeholder tags, I'll usually create a rung of MOV MyTag1 MyTag1 and document the rung. Keeps the tag out of the unused filter and documents it well so that it can be searched for and cross referenced.

Well said robertmee....

Let us be clear that the "unused" filter in the tag database view is only by cross-reference, meaning that the tag will show as "unused" if there are no references to it in the code. Of course that does not mean that it is unused at all, as mellis refers to.

I would do exactly as robertmee suggests, if there are tags that are "used", I would put some reference to them in the code, so that they don't show as "unused". However, I would put this code into a subroutine file that doesn't get called. No point in scanning it if it does nothing, that's just a waste of processing time.
 

Similar Topics

Good Afternoon , I was wondering if any of you folks have communicated with a Foxjet Marksman Elite Printer. The reason I ask is that we...
Replies
1
Views
1,627
I have a Controllogix5000 system that I am retrofitting a quantity of 4, Powerflex 40P Frequency Drives onto the system. Two of these drives have...
Replies
1
Views
1,985
The PC I have has RSLinx v2.52 installed with VisualBasic 6. I saw a few examples with POKE's but they were using PLC 5. Am I supposed to add a...
Replies
0
Views
1,873
Hello all, We have a customer with about 10 PLC's which they want to synchronize the time (TOD, date, etc). These are mostly 1756-L82's with...
Replies
6
Views
2,369
Read and write the Tags direct using pycomm3 and LogixDriver. Just in case anybody wanted to know. Here's a sample: from pycomm3 import...
Replies
0
Views
818
Back
Top Bottom