[BUG-9371] Allen-Bradley Logix Driver - Diagnostic Tags Bad Quality?

Hey folks,

We’ve got several L306-ER (v30) devices running on the AB Logix driver and they have been for ~a year.

Yesterday I pulled the [Diagnostics] folder for each device into a tags folder and today when I came back, they are all Bad Quality. Pulling the folder out of the OPC-UA server and dropping them into the tags window will refresh the data and they will go good quality again. I expect that given time, they will return to bad quality?

The other tags I am polling from these devices don’t have this problem, curious if anyone has any insight as to what’s happening. I don’t mind deleting them all and pulling them back in to try to resolve / replicate the issue, just wanted to run it by the community, first.


We had a very similar problem, not just with Diagnostics tags but ALL tags mapped as OPC-UA tags. Our problem seems to have been resolved with Ignition update to 7.9.8 (from 7.9.7) and Java update to 1.8.0_171 (from 1.8.0_151).

Good to know - thanks. I’ll look into it.

We’re on 7.9.7 and 161.

I’ve just set up a v29 1769-L16ER-BB1B and the same thing is happening. When I drag the tags from the OPC browser across, they work fine; after a few minutes they go bad quality and stop updating. I’m running Ignition v7.9.9 and java 1.8.0_181-b13. Did you find anything else out as to the cause?

From the times I’ve experienced that, often disabling and re-enabling the device, restarting the OPC-UA module, or restarting the gateway would fix it. I’ve experienced that a couple times when adding a new device and then changing settings shortly after add.

As for what I wound up doing with this particular issue, I stopped using the diagnostic tags and swapped to a gateway script to monitor device status.

Edit: just confirmed that the diagnostic tags are still unusable, they just go bad quality.

That’s a pain, thanks for checking. I’ve created a UDT where I pull in all the diagnostic info and then extract things like key switch position and PLC mode from the status word. Interestingly just now, the tags in “Device” folder seem to be holding on just fine and updating correctly - it’s only the two tags outside the Device folder (Hostname and Is Connected) that are going bad quality.

I ended up using the script to pull the states of all of the devices into a database and effectively emulate the device config page in the gateway, along with control (enable / disable devices).

I’m happy to share it if you’re interested.

That would be great!

I’ve done a bit more playing around, and found that it seems to be the Is Connected flag that’s the main source of the problem. If I drag Is Connected into the Device folder, all the diagnostic tags within that folder go bad quality. If I leave that tag outside the Device folder, with the Hostname tag, both Is Connected and Hostname go bad quality, but everything inside the Device folder is OK. If I drag Hostname inside the device folder, Hostname and everything else inside the Device folder remain OK, and it’s just the Is Connected tag that stays bad quality. Conclusion: Is Connected is a zombie and infects whatever tags it has in the same folder :smile:

I’ve emailed tech support about the issue and will update with anything new I learn. In the meantime, I’ll redirect my “PLC offline” alarm to a bad quality result on the clock seconds tag in the PLC.

Definitely interested in checking out your device config page though!

1 Like

I am interested in the script, we’ve been having this issue, we are using the “Is Connected” flag to trigger some events when its disconnected and intermittently seems to be in Bad Quality, the only solution I have found is manually Disable and Re-enable the tag, and it works for some time until it breaks again.

So, here’s where I wound up - I have 2 gateway scripts. The first just emulates the Devices page from the gateway.

This gateway script just pulls the device information and slaps it into a dataset tag.

#Get device info, sort and write to dataset tag
devices = system.device.listDevices()
sortedDevices = system.dataset.sort(devices, "Name")
system.tag.write("_Device Status/Gateway_Device_Status", sortedDevices)

I then pull that dataset into a table with a simple enable / disable interface and script that allows me to enable / disable devices from a client or designer. This is my button scripting:

#Get device and new state 
device = event.source.parent.getComponent('Container').getComponent('Label').text
state = event.source.parent.getComponent('Container').getComponent('Dropdown').selectedValue

#Write new state to device
system.device.setDeviceEnabled(device, state)

I’ll post the second gateway script below.

Gateway script #2 does similar, but has some basic code (read: lots of room for improvement) to try to determine if the device is faulted. Faulted in this case is an enabled device not in a connected state. It writes the tag name and faulted status to a second dataset tag that I can then use elsewhere. In theory you could split these data points out or alarm on them. This doesn’t account for ‘Idle’ connections (they show as faulted), so it could be improved there.

Having IsConnected tags that read properly would be the best way to go about this, this was just a work-around I implemented to see if I could.

#Get device info
devices = system.device.listDevices()
sortedDevices = system.dataset.sort(devices, "Name")

#Analyze if devices faulted
#Create new dataset for Device name and faulted state
headers = ["Device Name", "Device Faulted"]
data = []

for row in range(sortedDevices.getRowCount()):
	deviceName = sortedDevices.getValueAt(row, "Name")
	enabled = sortedDevices.getValueAt(row, "Enabled")
	state = sortedDevices.getValueAt(row, "State")
	faulted = 0
	if state == "Connected":
		boolState = 1
		boolState = 0	
	if enabled == True:
		boolEnabled = 1
		boolEnabled = 0
	if boolEnabled == 1:
		if boolState == 0:
			faulted = 1

	data.append([deviceName, faulted])
deviceFaulted = system.dataset.toDataSet(headers, data)
system.tag.write("_Device Status/Gateway_Faulted_Status", deviceFaulted)

We are facing the same issue… Any news from tech support?

Mine mysteriously started working with no intervention, and hasn’t failed for the past 10 days. I had a case open with tech support and they took some log files etc, but without the problem actually being present there was nothing much they could do. Maybe email tech support and see if they can pin down the problem while it’s happening for you. My case number was 83129 - it’s since been closed, but might be worth referencing in case they can find any similarities between our systems to help pin down the cause.

I’d like to add that I just experience this myself. Our system has 24 A-B PLCs and for some reason just 1 of them is exhibiting this issue where the “IsConnected” Diagnostic tag is returning Bad Quality. My temporary solution was to simply create a New Tag that also polls the same identical IsConnected tag and now it seems to be stable. As soon as I delete the New Tag, the original PLC_600_03IsConnected tag will go to Bad Quality a few minutes later. Note that no other PLC is having this issue and they are all using either the SLC or Logix Driver. This particular issue is a PLC using the Logix Driver


Interesting - I’ll give your solution a shot.

We have 22 CompactLogix v30.11 connected via ethernet & Logix driver on 7.9.7, and none of them can keep an ‘IsConnected’ tag good quality for more than a couple minutes.

In the time that it’s taken me to type this, I am able to cut either the IsConnected or IsConn2 (tag I made) and watch the other go bad quality. Paste it back and it rights itself immediately. Not sure why it works this way.

I dub this the “Insane” solution…do the same thing twice and expect a different result. Your welcome!

1 Like

Trippy - it’s still working. I wonder if anyone at IA has any insight on it.

Thanks again!

I’ve seen behaviour like this on a couple tags; they would maintain good quality if I created a duplicate in Ignition, but otherwise would not. Deleting either duplicate would cause the other tag quality to go bad. They were not diagnostic tags, but I think they may have been tags on an Allen-Bradley PLC…

Same issue here. Any word from IA?