Guralp Systems Limited
MAN-SAW-0013 - ArrayMon - Seismic Network Monitoring Software

Chapter 3. Configuration and Operation

3.1 IP network configuration

This section assumes that you already have a copy of Scream! running and configured to receive data from your seismic network. ArrayMon can be run either on the same PC or on a different PC.

Data collected by Scream! are transmitted to ArrayMon using UDP packets over an IP network. In the case where both programs run on the same PC, this network is just the IP loop-back interface, identified by the IP address 127.0.0.1. Scream provides coarse control over which streams are forwarded but the ArrayMon configuration allows streams to be selected for processing on a one-by-one basis.

Scream! must be configured to push data to ArrayMon. To do this, open Scream!'s "Network Control" window by starting Scream! and, from the main window, key +. In the "Network Control" window, switch to the "My Server" tab, right-click in the "Clients" list and select "Add…" from the context menu:

A window appears into which you can enter the IP address and UDP port for the instance of ArrayMon:

The default value is a broadcast address. Overwrite this with:

then click .

The destination UDP port number should be greater than 1024. It must not be Scream's "Port used for all network communications" and it be unused by any other application on the PC running ArrayMon. If you have no particular policy for allocating ports, use 15670 and see the note below.

Note: If the chosen destination UDP port does not work for any reason, simply pick a different port number. Right-click on the client entry in the "My Server" tab of Scream!'s "Network Control" window and select "Edit…" from the context menu. Change the port number and click . You then need to change the listen port number in ArrayMon to match, as described below.

The source port for UDP data from Scream - i.e. the port from which the UDP packets are transmitted - is configured via the "Port used for all network communications" field at the bottom of the "My server" tab of the "Network Control" window. This does not normally need to be changed.

Now tick one or both of the check-boxes "Transmit data from local Com Ports" and "Transmit data from Network", depending on the source(s) of the data coming into Scream. If you have multiple streams at different sample rates from the same channels, you may wish to reduce the "sps transmitted block limit" value to exclude the higher-rate streams. Scream should now be forwarding the selected data to the chosen IP address and UDP port.

Open ArrayMon and, in the main window, set the "Listen on Port" to the destination UDP port number configured in Scream in the previous step.

ArrayMon will listen on this port and accept any incoming packets. If you wish to restrict which packets are accepted based on their source address, tick the "Specify Sending Computer" check-box and enter the IP address of the PC running Scream!. If the same PC is running both Scream! and ArrayMon, use the loop-back address: 127.0.0.1.

ArrayMon is now configured to receive the data forwarded by Scream!, although no streams will appear in the display until you configure the seismic network - as described in the following section - and click the button.

3.2 Seismic network configuration

To configure which streams should be monitored by ArrayMon, open its configuration file using notepad++ or an equivalent text editor. The configuration file is called arraymon.ini and should be located in the same folder as the arraymon.exe program. It is created when you make a configuration change using the main window - typically when you set the "Listen on Port" - or when you exit the ArrayMon program.

Note: If you cannot see the file, exit and restart ArrayMon. If it is still missing, Windows may have moved it to the Virtual Store. See section 4.1.1 on page 38 for details.

Using the text editor, add a new section header

[Channels]

at the end of the file, followed by a list of the streams which you wish to monitor. Each line should consist of

For example, to receive a stream with ID GSL-TESTZ2 and display it with the name DEMO, enter a line

GSL-TESTZ2=DEMO

Note: Other parameters can be added to this line later - see section 3.8 on page 30 for details.

Once you have added your desired streams, click "Save" in your text editor and then click in ArrayMon. (Alternatively, select "Reload INI file" from ArrayMon's "Actions" menu.)

Each of the specified streams will appear in a row in the list in the main ArrayMon window. Initially, the only populated field in each row will be the "display name" in the Channel column.

Click . For each channel, ArrayMon will initialise the time-out (t/o) column and start listening for incoming data packets. See section 3.5.3 on page 23 for information about time-outs and associated alarms.

If a packet for a specified stream arrives, ArrayMon will reset the time-out counter and populate the "Mean" column with the mean sample value from the packet.

If a configured channel does not appear to be being updated, check first that the data are arriving in Scream! as expected and then check that the relevant entry in arraymon.ini corresponds exactly to the System ID and Stream ID as seen in Scream.

Note: You can edit, save and re-load arraymon.ini without having to exit the ArrayMon program.

3.3 The main window

The ArrayMon application's main window can be considered in three sections.

3.3.1 Configuration

The top left of the display contains configuration items:

This area also contains either the button or the button, depending on whether the application is currently monitoring or not.

3.3.2 Graphs

The bottom left of the display contains two graphs.

The first shows the number of bytes of data being received (but see the note below). This is indicated by the green trace; the average over the period displayed is indicated by the red line.

Received packets which are not processed (because there is no matching line in the Channels section of the configuration files) are not counted.

Note: Incoming streams are assumed to have come into Scream! using the BRP transport protocol and the traffic figures are inflated accordingly, adding an appropriate value to account for the BRP protocol overhead. If, instead, the scream protocol was used to bring data into Scream, set the RateUnit parameter in the configuration file to 2. The protocol overhead values used will be adjusted accordingly. See section 3.8.2 on page 33 for details.

The legend for this graph will "Serial bytes/sec" when RateUnit is set to 1 and "Network bytes/sec" (as shown above) when RateUnit is set to 2.

The graph is updated every second and shows the previous 260 seconds (just over four minutes) of data.

The three figures below the graph show:

The second graph shows the time difference between the incoming data and the PC's clock. This is indicated by the green trace:

A complex algorithm combines data from the time-stamp of the last sample in each time-series packet and the time-stamp of the last line in each status packet. The minimum value for each instrument is calculated - this provides a good estimate of the total system latency - and then the minimum value across all instruments is displayed.

Note: While this feature gives you a good measure of your seismic network's latency, it cannot alert you to a problem which results in high latency, unless that problem is array-wide.

The graph is updated every ten seconds and shows 2,600 seconds of data - a little under 45 minutes.

The three figures below the graph show:

3.3.3 Channels

The right-hand side of the main window shows the channels list:

Every channel specified in the arraymon.ini configuration file will appear in this list, whether or not data have been received.

The "Channel" column shows the "display name", as defined in the configuration file. Individual entries may be shown with coloured backgrounds:

The second column, "Mean", shows the mean of the absolute value of the associated channel (after DC removal), computed over the preceding five minutes. The average of these values across all active channels is displayed above the list as "Avg":

The third column, "%", shows the channel mean as a percentage of the all-channel average. This value can be monitored and warnings or alarms raised if it varies beyond pre-determined limits: see section 3.5.5 on page 24 for details.

Individual entries in the "Mean" and "%" columns may be shown with coloured backgrounds:

Note: If the mean value returns to below the threshold within the period, the highlighting in the "Mean" and "%" columns will be removed automatically. Once any alarm condition has lasted longer than the "Time to Alarm" period, however, the indication will remain displayed until explicitly reset, as described below.

The fourth column shows the incoming data packet time-out, as described in section 3.5.3 on page 23. If this value reaches zero, it is displayed with a red background.

The final column shows the supply voltage, as determined from the status stream associated with the channel being monitored. This value can also be monitored, as described in section 3.5.4 on page 24.

Note: It can often take ten minutes or more before the first status packet populated with a supply voltage value is received. The entry in the column will be blank until then.

Individual entries may be shown with coloured backgrounds:

Above the channel table is a button, , which causes the application to re-read its configuration file. Various dynamic data, such as channel mean values and supply voltage readings, are reset.

Below the table is another button, , which clears all existing alarm conditions. Beside this is a button icon which shows whether or not audible alarms are enabled. Click the button icon to enable or disable audible alarms:

3.3.4 Menus

The main screen provides two menus: "Actions" and "Help". Each menu item has an associated key-sequence. The "Actions" menu contains the following items:

The "Help" menu displays the configured title (see section 3.8.2 on page 33) and the program's version:

3.4 The Channel Trends window

ArrayMon can display the medium- or long-term trends of every configured channel in a single graph. To view this, select "Trends…" from the "Actions" menu on the main screen:

or key + then . The following screen is displayed:

An additional trace showing the array average is also displayed. This is, by default, unnamed but you can provide a title by editing the configuration file (see section 3.8 on page 30) and adding the following line to the [Settings] section:

Title=myTitle

substituting the required title in place of myTitle. The same title is also used in the title-bar of the main window and in screen displayed by the "Help" menu item.

A list of channels being processed is displayed on the left of the window with a check-box next to each.

The width of the channel list pane can be changed by holding down the left mouse button while dragging the border between the two sections to the left or right:

There are three controls at the top of the window above the graph:

Note: The data used to prepare this graph are stored in persistent files with a .trend extension. See section 4.2 on page 38 for more details.

3.5 Warnings and Alarms

3.5.1 Overview

ArrayMon can be configured to monitor various parameters for exceptional conditions, as described in the following sections. Should such a condition occur, a warning or alarm is raised as described below.

Warnings are indicated by a yellow highlight in the appropriate column(s) of the channel list in the main display. Warnings clear themselves automatically when the condition responsible is no longer present.

Alarm conditions are indicated and logged immediately. If the condition clears within a configurable period (see "Time to Alarm" in section 3.7.1 on page 28), the indication is cleared and the fact that the alarm was cancelled is logged. If the condition persists, further actions are taken, as described below.

The initial alarm condition is indicated by a red or maroon highlight in the appropriate column(s) of the channel list in the main display and by an entry in the daily log-file (see section 4.2 on page 38).

If the condition persists for longer than the configured "Time to Alarm",:

The red highlight in the channel name column will remain in place and the audible warning will continue to sound until the operator either:

Audible alarms can be silenced without resetting the visual indication by clicking the mute button () on the main screen.

Note: Clicking the button will return the mute status to its default setting, as defined by the DefaultMute setting in the configuration file - see section 3.8.2 on page 33.

3.5.2 Out-of-hours

During the daytime, an operator can be assumed to be interested in every alarm. During the night, however, some institutions take a more relaxed attitude and would only want to alert an operator in the event of a more serious problem.

ArrayMon supports this by providing a mechanism to define an "out-of-hours" period and a threshold value - a small integer. During the defined out-of-hours period, alarms are counted but not reported via SMS until the number of alarms exceeds the defined threshold value. If the threshold value is not exceeded, the alarms will be displayed visually and audibly until the operator returns to the PC and cancels them.

The threshold value and the start and end of the "out-of-hours" period are defined using the "Setup" window - see section 3.7.2 on page 29 for details.

3.5.3 Missing data

An alarm can be generated if any channel receives no data for a configurable period.

Each configured channel has its own independent inactivity counter. These counters are each initialised from the value specified on the main screen as “Rx Timeout (seconds)”. For each channel, if no packets are received, the associated timer counts downwards in seconds. When a data packet is received for a channel, the associated timer is reset to the initial value.

If any timer reaches zero, an alarm is generated for the associated channel.

This means that if, for example, you set the “Rx Timeout (seconds)” value to 300, an alarm is raised if any channel receives no data packets during any five-minute period.

Note: The “Rx Timeout (seconds)” value cannot be changed when monitoring is active. To change this value, click , adjust the value as desired and then click to resume operation.

While monitoring is active, the “Rx Timeout (seconds)” field displays the maximum value of all the channel inactivity counters.

This alarm can optionally generate an SMS message: this is configured via the "Setup…" window, described in section 3.7.3 on page 29.

3.5.4 Supply voltage

An alarm can be generated if the supply voltage associated with any channel drops below a configurable threshold.

The value of the supply voltage is determined from the status stream associated with the stream being monitored. The ID of the relevant status stream is constructed by replacing the last two characters of the ID of the stream being monitored with zeroes. For example, if you configure ArrayMon to monitor stream DEMO-TESTZ2, it will also monitor the stream DEMO-TEST00. Compatible Güralp digitisers print the supply voltage to the status stream every ten minutes.

Note: This means that it can take up to ten minutes before any value is displayed in this column after monitoring is first started.

The low-voltage threshold value must be manually entered into the configuration file on a channel-by-channel basis. It is entered as the seventh field (i.e. the last field) of each the channel definition line.

For example, if a channel definition line reads

TEST-1234Z2=DEMO 0.996 0 0 0 0 11.8

an alarm will be raised for channel "DEMO" if the associated status stream, TEST-123400, contains a report of a supply voltage of less than 11.8 volts.

See section 3.8 on page 30 for the definitions of the fields in the channel definition lines.

3.5.5 Signal - Deviation from array average

While monitoring, ArrayMon computes a rolling mean (over five minutes) of the absolute value of each channel. Any DC components are removed before these calculations. These values are displayed in the "Mean" column on the main screen (see section 3.3.3 on page 14).

These values are then averaged across the whole array and the resulting value is displayed on the main screen as "Avg". If the mean for any channel deviates too far from this array average, a warning can be raised. Warnings are indicated by a yellow highlight in the channels list, as seen for channel RED1 in the screen-shot below:

If the mean deviates further, an alarm can be raised.

The warning level and the alarm level are both configured using the "Setup…" window, accessible from the "Actions" menu:

Note: If you tick the “Draw limits” check-box in the "Trends" window (see section 3.4 on page 17), these threshold values will be indicated in the Trends graph.

Note: For this process to work across a diverse array, the incoming data values need to be normalised. This is achieved by specifying a normalisation factor in the second field of the channel specification line in the configuration file: see section 3.8.1on page 31 for more information.

The "Time To Alarm" field prevents short-term conditions from causing spurious false alarms. The alarm condition must persist for the configured amount of time before an alarm is raised.

3.5.6 Signal - Absolute limits

In addition to the limits on deviation from average described in the previous section, there are also absolute thresholds for the minimum and maximum channel mean values. If the mean value (calculated as described in the previous section) for any channel falls outside of these boundaries, an alarm is raised. The channel is considered to be in a fault condition and values from it are no longer used when calculating the cross-array average.

This facility will ensure that an alarm is raised if, for example, all sensors in an array are damaged by an electrical storm and start producing DC outputs or random, high-level noise.

If you do not configure these limits, they will default to:

Note: These values are appropriate for seismic arrays but are typically too small for infrasound arrays, depending on the instrumentation used.

To configure different threshold values, edit the configuration file (see section 3.8 on page 30) and add the following lines to the [Settings] section:

MinThreshold=50

MaxThreshold=500

substituting the required values in place of the defaults. Click the button in the main screen after saving your changes.

Note: If you tick the “Draw limits” check-box in the "Trends" window (see section 3.4 on page 17), these threshold values will be indicated in the Trends graph.

3.6 Data filtering

It is possible to apply filtering to the incoming streams before they are used by ArrayMon. Both high-pass filtering and low-pass-filtering are available and they can be used independently or together as a band-pass filter. Each channel can have its own filter settings. The filters are of the nth-order Butterworth type.

High-pass filtering can be used for many purposes, including:

Uses of low-pass filtering include:

Filters are configured by directly editing the configuration file. See section 3.8.1 on page 31 for details.

3.7 The Setup window

The "Setup" window allows configuration of many settings which control the behaviour of ArrayMon. To open this window, select "Setup…" from the "Actions" menu on the main screen:

or key + then .

The following screen is displayed:

This screen can be considered in three sections: Alarms, Out Of Hours and SMS, each of which is described in a section below.

3.7.1 Alarms

This section of the Setup window allows configuration of the "deviation from array average" warnings and alarms as described in section 3.5.5 on page 24.

The "Warning Level" control sets the upper and lower thresholds for the deviation from average, above or below which a warning is issued. These dynamic thresholds can be displayed as yellow dotted lines in the "Channel Trends" graphs, as described in section 3.4 on page 17.

Similarly, the "Alarm Level" control sets upper and lower thresholds, above or below which an alarm is issued. The alarm thresholds can be displayed as red dotted lines in the "Channel Trends" graphs.

The "Time to Alarm" control sets a delay time: the alarm condition must be present for at least this time before an alarm is raised. This prevents false positives caused by ephemeral conditions.

The final control in this section, "SMS On Rx Timeout"

specifies whether or not an SMS message is issued if any channel inactivity counter (see section 3.5.3 on page 23) reaches zero. SMS recipients are configured in this same screen: see below.

3.7.2 Out of Hours

This section allows the definition of an "Out-of-hours" period, during which alarms are counted but not sent via SMS until the count exceeds the threshold. See section 3.5.2 on page 23 for details.

The "Start" and "End" fields accept times in the format hh:mm:ss where hh represents the hour of the day (0 to 23), mm represents minutes and ss represents seconds. The user's configured time-zone is used.

3.7.3 SMS

The PC running ArrayMon can be connected to a GSM/GPRS modem or a mobile telephone in order to send SMS messages. The modem or 'phone can be connected through a serial cable, a USB cable, a Bluetooth link or an infrared link provided the link presents itself to applications as a COM port.

ArrayMon uses the SMS standard extensions to the AT command set. These commands all begin +CM and are very widely supported by many manufacturers.

To enable this feature, connect your modem or 'phone to the PC and determine the COM port number for the connection (using Device Manager if necessary). Select this port from the "Com Port" drop-down menu.

Note: Only ports which are free will appear on this list. If the expected port number does not appear, ensure that it has not been opened by another application, such as Scream!

Now enter one or more telephone numbers in the "Recipient Phone Nos" field, one per line. The 'phone numbers should be in the format that your modem or 'phone requires. This may involve replacing the leading zero with a plus sign ('+') and country code: consult the modem or 'phone documentation for further information.

You can test this feature using the "Generate test SMS" item from the "Actions" menu on the main screen, as described in section 3.3.4 on page 16.

3.8 The configuration file

The configuration file is called arraymon.ini and should be located in the same folder as the arraymon.exe program. It is created when you make a configuration change using the main window - typically when you set the "Listen on Port" - or when you exit the ArrayMon program.

Note: If you cannot see the file, exit and restart ArrayMon. If it is still missing, Windows may have moved it to the Virtual Store. See section 4.1.1 on page 38 for details.

The arraymon.ini file uses the conventional windows "INI" format. It consists of

Blank lines are allowed.

Some settings are managed through the graphical user interface while others can only be changed by editing the arraymon.ini file and then reloading it using the button located at the top right of the main window. In the descriptions below, these are differentiated with symbols as follows:

The arraymon.ini file consists of three sections, "Channels", "Settings" and "Trends", as described in the following sections.

3.8.1 Channels

The "Channels" section of arraymon.ini is introduced by the line:

[Channels]

Below this, you must enter a list of channels to be monitored with each line describing a single channel. For each line, the key identifies the incoming stream and the associated property is a list of one, two, four, six or seven parameters in one of the following formats:

Note: The filters used are identical to those implemented in Scream! so Scream!'s "Filter design window" can be used to experiment with parameters while developing the ideal filter for your application.

Note: Filtering can be used to help monitor a heterogeneous network containing both velocity-response and hybrid-response instruments. Contact <a "target="_blank" href="support@guralp.com">support@guralp.com if you need advice on this topic.

For example, a line like

GSL-TESTZ2=DEMO 1.1 0 0 8 4 14.0

specifies that data from the stream with System ID GSL and Stream ID TESTZ2 should be monitored and

Note: The HPF-f and HPF-o parameters must be present in this case so that the low-pass filtering and voltage monitoring parameters can be specified. Because high-pass filtering is not required in this example, these two parameters are set to zero and act here only as place-holders.

3.8.2 Settings

The "Settings" section of arraymon.ini is introduced by the line:

[Settings]

Below this, the following lines may be present:

3.8.3 Trend

The "Trend" section of arraymon.ini is introduced by the line:

[Trend]

Below this, the following lines may be present