PLC comm status

I’m using the Modbus-UA communication server and would like to generate an alarm on loss of communication with each of the PLCs in my network. I’m wondering what is the best way to do this?

Thanks

This is typically done by:

  1. Create an OPC SQLTag that reads something from the device
  2. Create a DB SQLTag that is bound to the other tag’s Quality attribute via an expression
  3. Configure an alert on the DB tag when the value is not 192

Also, if you’re using the SQL Bridge module, you can bring the OPC items into the group and change them to look at the quality directly, bypassing the need to create an expression.

Likely you’ll just have the group update the first row of a “com status” table.

Regards,

I tried to do this in Ignition: Created DBTag an looked at other tags quality with this expression:

if({[.]DP3Aux.Quality}=“Good”,0,1)

or

if({[.]DP3Aux.Quality}=192,0,1)

Either one gives me a 1 as result. If I drag the quality into a label on a window it displays “Good”

How can I Alert on the quality of a tag?

In my transaction groups I created a run-always expression item with an expression like {[.]Tag.Quality}, so the value of the item is just the OPC quality. In the alert settings I created a digital alert that triggers when the value does not equal 192. I think you can do something very similar for a DB tag.

Now, I have a related issue. My alerts work and I get two emails right away (active and cleared) after I save the group, as the tag goes from quality code 32 to 192. This isn’t exactly what I’d like, though, so I set the Time Deadband setting to 30 seconds with the intent of only catching occasions when the OPC tag is truly disconnected. This doesn’t seem to have any effect on when the alert is triggered though. I still get emails immediately if I make a change to the group and save. Is there any reason this doesn’t work as I think it should?

Hey guys, sorry for the late reply:

jvandeve - Try wrapping the reference in “toInt()”. As in:

if(toInt({[.]DP3Aux.Quality})=192,0,1)

In the expression situation, the value is actually an enum, so the direct comparison isn’t working. In other situations, as in what porksmash described (using the quality reference for an expression tag, whose data type is set to int), the conversion is done for you.

porksmash -
It sounds like you have the “send initial” option enabled on your notification profile. Go to your profile under Alerting>Notification in the gateway, and look for that setting under “Notification Settings”. Is it on? If so, try turning it off. If not, let me know. My quick sanity check worked fine, setting up what you described with !=192, and a time deadband.

Regards,