Skip to main content

Visualizing Dynamic Status

This article describes how to pair MissionView Display with custom Data Flows (NetAcquire Data Flow Option) to achieve event-driven diagnostics and status. The examples presented here demonstrate how to configure data flows for use by MissionView Display and set up drawings to take advantage of these data flows. The contents of this tech note and accompanying material will show you how to,

  • Obtain status from entities or devices
  • Process status to derive useful values

Dynamic Status

Entities that provide dynamic status appear on the Dynamic Status page. These values can be published and read by MissionView.

status applet

We’ll demonstrate gathering the status of a serial channel. In our example we’ll be using a new data flow to monitor and gather information from the server. Lets gather the status and bytes in of a serial channel and publish those.

sio rx status

Serial Status Published

First we’re going to need a Timer to drive our polling, then a Computation Set. A DeviceDynamicStatus computation can read the text value from the Status field (seen above in the image). We’ll use a Lookup to turn that text into an integer we can better use in MissionView Display, then publish the value. Here’s the entire flow,

dfe

Timer

The timer provides us the period for polling. Some entities provide relatively frequent updates, but it’s usually not recommended to go faster than about 4Hz.

Computation

To access the serial channel, we’ll add a DeviceDynamicStatus computation for each field we want. For instance, for the Status field we are triggered by the timer and gathering the Status for Serial Channel 0 (sio/0/in0), which means we’ll get the Receive (Rx) status.

computation config

Lookup

Perhaps we’re interested in the channel losing lock. The status may be values like,

  • Locked
  • Flywheeling
  • No Data
  • … many others

We can convert values using a Lookup by inputting the status from the computation above and looking for the “Locked” text to mean true, which we’ll output as a one 1. We’ll set a default of zero 0 to mean the channel is not locked and is on some other state.

lookup config

Publisher

Finally, we publish the converted value. While I have used subscription names to identify the field, this is not the only way to categorize subscriptions. For instance, if you published the status of various entities or channels, you could use Domains to separate the names, such as,

  • serial/0/rxstatus, serial/0/bytesin – or –
  • serial/0/rx/status, serial/0/rx/bytes
  • etc.

Color

Since we’re going to some data visualization, perhaps we also want to change the display along with the locked state. We can calculate and output a color value that we could use in a MissionView drawing. I’ll output the color as a hex RGB value, which is commonly used on the web as well.

color dfe

The lookup here converts a one to green and a 0 to red. The evaluator accomplishes the same task, although is simpler to configure and can handle multiple values all within a single evaluator. Now let’s see what we can do with this data in MissionView Display.

MissionView Display

We’ll visualize and capture in a couple different ways, in an Alarm and in a drawing.

Alarm

We might want to see and log when we lose lock on our serial channel and we can do that with an alarm. From the main menu, open the Manage… menu from Alarms.

menu

The click Add to add a new Alarm. Use the tree to find your server and the status publication we turned into the integer, in my case it’s example/ch0RxStatusConverted.

select naps

Select the Comparison Limit Type since we want to compare to see if the state is a one or zero. Now I’ll configure the Alarm’s format a bit. I’m also going to enable Latching.

alarm config

Click Commit to apply this Alarm. You can save the alarm configuration from the File menu, but MissionView will prompt you if you forget. Now lets open Display Alarms from the Alarms menu.

menu2

Now we can see the state of the alarm. When my channel goes out of lock, I get an obvious display.

alarm table

Latching

Latching means that the Detected state will remain in place until someone acknowledges the alarm by clicking the row’s Latched cell in the table. If the channel is still not locked, the state will return immediately.

Drawing

We can also use a drawing to visualize the state, including the text. I’ll use a simple drawing with an LED and a text field, with a backing panel to house them.

drawing

Right-click the LED to configure, then we’ll right-click on the Fill Color field to have it use a Publication.

fill color

Now click the ellipses and connect to the color publication, in my case:

add naps

The value should connect and update and we’ll see this for my non-locked state:

naps complete

Now we’ll right-click the text and assign the text publication, in my case:

add naps 2

And the text will update:

naps complete 2

Next Steps

This article covers some basics to using subscriptions from dynamic status. Next we’ll look at more advanced options for use and display.