Studio5000 How to locate a tag with a value of 999

Dayvieboy

Lifetime Supporting Member
Join Date
Jun 2013
Location
San Francisco Bay Area
Posts
132
We have a tag that is locked @ the value of 999
& cannot find where it is coming from.

If I add a rung & move a value to it, it will change,
but as soon as I turn that rung off it goes back to 999

The program is 8 meg, has many large UDT arrays
and is nearly impossible to open them all & look for this value.

Nothing shows up in the cross reference.

We disconnected the network so we know the SCADA is not writing to it.

Is there a way to search for the value of 999 within tags??
 
Cross reference is your friend. Select the tag and press Ctrl+E (or right click>cross reference). One of the columns is headed "Destructive" which means "in this instance of the logic is the tag being written to (destructive) or read (not destructive)?".

Double click that column header to sort by destructive, and then start working your way through every entry that has a "Y" next to it.

Tip: Ctrl+Tab will switch you between the cross reference window and the logic window*. Double click the first destructive item in the list, if it's not doing anything that could result in a value of 999 then Ctrl+Tab and pick the next one. Repeat.

If there are hundreds of destructive references there are other approaches that you could take, but I'd bet some of Ron Beaufort's pocket change that you'll find it by Cross Reference quicker than any other way.

*In older versions of Logix, Ctrl+Tab cycles between three windows: logic, cross reference, and tag browser. It would probably also do other things like watch windows if you had some open. In newer versions of Logix, Ctrl+Tab functionality has changed somewhat, and it now deems all views, whether logic, tag browser, cross reference or otherwise to be individual windows that can be cycled through with Ctrl+Tab. For the purposes of this exercise, it doesn't matter which version you're using because a single Ctrl+Tab always switches to the most recently used window, much like Alt+Tab in windows. So if you're just doing a quick "select this xref...no, not that one, Ctrl+Tab, select the next xref...", then Ctrl+Tab will switch you back to the xref window each time.
 
My guess is that this tag is being overwritten by a connected SCADA or HMI, that is usually where tag "limits" are set.

Disconnect from external influences and re-test, that will determine if it's in-house, or an external write.
 
There is no easy way to programmatically, or in Studio 5000, examine every tag element or subelement in the controller to look for a specific value.

It would be neat if the Tag Database organizer could sort by value, or the Search function could return tag values. But they don't.

One method you *could* use is to upload and save the project as a *.L5K or *.L5X, then search that text file for the value in a tag or tag array or UDT.
 
My guess is that this tag is being overwritten by a connected SCADA or HMI, that is usually where tag "limits" are set.

Disconnect from external influences and re-test, that will determine if it's in-house, or an external write.
I doubt this is it - SCADA/HMI only enforce the limits when writing to that tag. They don't (at least in my experience) monitor the tag at all times and overwrite the value if it's found to be outside the range - most SCADA platforms I've used will happily display an out-of-range value, it's only when you try and write to it that it'll enforce limits on your entered value. OP's description of adding a MOV and having the value change, then removing the MOV and having it go back - all done at the PLC logic level - would suggest to me that there's PLC logic writing to the tag.

That said, it's easy to check as you suggest, so nothing to lose by testing.
 
If the tag literally has the "Constant" attribute checked, then it can't be addressed by any instruction or written by a communications channel.

(I had to go check to be sure: Logix 5000 throws an error when you try to compile the rung)

If the source of the value 999 is a constant argument from an instruction (like "MOV 999 HMI_Value"), it will show up in the arguments for that instruction on the rung in the routine that contains it, in the *.L5K file.
 
Last edited:

Similar Topics

I have an array of 55 REAL values. Is there a way to multiply based on the array location ? I have 55 transfer belts that are equally spaced...
Replies
3
Views
153
Hi Hope you all are doing well. Iam working on a project with some AOI. I also hate no online edits... lol. My problem occurs when I use a UDT...
Replies
2
Views
157
I am not sure if this is possible but if there is a way, you guys would be the ones to know. I am currently working on a project where we are...
Replies
7
Views
219
Hi all. I'm having issues adding an ethernet module to my project in Studio500 v34. The device is a Fredericks Televac EthernetIP MX gateway which...
Replies
8
Views
362
The day of week program started changing day of week 2 hours early. It changes at 10 P.M. instead of 12A.M. Just started this year.
Replies
22
Views
2,670
Back
Top Bottom