Modbus TCP and Tag Quality

Hi everyone,

I am running Ignition Edge 8.0.14 on a field PC and I am having issues with the tag quality.

I have the following set up: multiple field devices that are being read by a tag aggregartor (an SEL RTAC 3505) which is then read by Ignition Edge over Modbus TCP.

What happens is the following:

  • One of the field devices looses comms with the tag aggregator
  • The tag aggregator freezes the tag value and changes the tag quality to “invalid”
  • Ignition Edge reads the tag value but even though the source tag has bad quality Ignition still shows the tag’s quality as “Good”

What I end up in the HMI is a numeric field with a frozen value withouth any indication that the quality of the tag is “Bad” which is very confussing for the user.

I have brieflly searched the user manual on how Ignition handles tag quality over Modbus but I wasn’t able to find anything of use.

Can someobody please let me know if there is a way to fix this or point me to the section of the documentation that can help me out.

Thanks.

Modbus doesn’t have a concept of quality. If the aggregator simply freezes the value when a downstream unit goes offline there’s no way for Ignition or any other Modbus client to know that. What it should be doing is returning an exception code like GatewayTargetDeviceFailToRespond (0x0B).

If I misunderstood what you’ve described please try to provide more detail.

The confusing thing about using RTACs is that the internal data types it uses are deliberately made to be generic enough to apply to all of the different protocols it supports. This means that they include all of the different properties they might need to support modbus, DNP3, 61850, SEL protocol, etc - then when it actually communicates it selects the values that are relevant to the protocol to send on. An example of this is different flavours of DNP3 - it will always create the quality flags on your internal tags, but depending on the DNP3 variation you send, it may or may not send them.

This confused me a bit, since you can set the quality of individual tags, then map them to modbus registers. Unfortunately, the modbus master polling it will just read the values and ignore the quality. If you want to get tag-level quality information across to Ignition, I’d suggest switching to DNP3.

Let me clarify this: Modbus doesn’t “ignore” the quality, it simply doesn’t support transmitting quality at all.

Good clarification. Lazy wording from me :+1:

You can use the ‘forceQuality’ expression function to make this work … but it gets ugly fast, even when using UDT’s.

If the modbus device is the origin of the signals you can do this, since you would just check the status of the device and assign it to all tags. The problem is that when your device is a data concentrator, there might be many downstream devices with different levels of data validity, so assigning the quality based on the status of the concentrator wouldn’t work in this case.