Edit me

A BTField project defines a sensor platform configuration as well as the data parsing logic that consumes the sensor data. All processing is performed within the BTField project also. In the DAQ tab, there are four levels of parsing logic that extract the data – the Input level, Message level, Sensor level, and Data Extraction level. For example, the sample BTG Demo project shown below has a DAQ configured with one Input called Dynamic EM Stream, and it encapsulates two messages named GGA Msg and EM Msg. Each of these messages may contain data from one or more sensors such as a position sensor (POS), or several EM receivers (Rx) as shown here:

Jekyll

Typically, Black Tusk Geophysics will pre-configure these 4 levels of data parsing logic, but we discuss this example here to illustrate BTField’s flexibility to be re-configured in the field if necessary.

Data Inputs

A Data Input is a stream of sensor data coming from either a serial COM port, or a TCP port. In our BTG Demo project, we can right click on the Dynamic EM Stream and select Edit:

Jekyll

Here we can see it is a TCP stream that BTField will connect to at the IP address 192.168.1.111 on port 9000. The Start and End delimiters are also defined for one full data window.

Jekyll

Data Messages

An input definition will grab a full window of data from the stream. Within this data window, there can be several messages. For example, we can right click on the EM Msg message and select Edit:

Jekyll

We can see this message contains Binary data that gets pulled out of data window using the specified start and end delimiters.

Sensor Definitions

A message may contain data from one or more sensors. Therefore, several sensor definitions can be established off each message node on the DAQ tree view. For example, we can right click on the first Rx sensor and select Edit:

Jekyll

Here we can specify its Sensor #, its xyz offset from the GPS, and the parsing settings. We specify there are 5 samples of Binary Rx data and each sample is 405 bytes in length. We also check the Merge Sen checkbox to indicate we want to merge data to the time base of this sensor.

Data Extractions

The data for each sensor definition will contain the final readings that we want to extract and map to BTField’s data types. For example, we can right click on the Rx1 Data Extraction and select Edit:

Jekyll

We can see it is mapped to the EM Obs data type, and we have also specified the loop geometry and number of Time Gates. The Byte Offset to the start of this sensor’s data is 14 and each reading has Byte Length of 3 bytes (i.e. a 24-bit number).

This is just one example of how data parsing logic can be configured in BTField. The 4 levels of encapsulated parsing logic (i.e. Inputs, Messages, Sensors, and Data Extractions) can be configured in numerous ways to provide a flexible means of consuming data from a variety of different sources and formats without the need for additional programming.

Loop Geometry

Loop geometry is also set in the Extraction window. The OffsetX, OffsetY, and OffsetZ are all relative to the parent Sensor definition that established the center position of the loop. The loop Width, Height and Shape are also set in the Extraction window. Three different loop shapes can be specified – rectangular, circular, and figure 8:

Jekyll

Sensor Commands

Sensor commands can be added in the DAQ tab to control sensor output directly from BTField via TCP or serial. Right click in the DAQ tab and select Add Manual Command.

Jekyll

Here is an example of a command named B1-RxOn, which turns on all platform receivers via TCP by sending out the bytes 2 2 2 0 3 0 1 1 (decimal format):

Jekyll

The command can then be sent manually by right clicking on it and selecting Send Command as shown:

Jekyll

Commands can also be sequenced together and sent all at once by selecting Add Command Sequence:

Jekyll

Here is an example command sequence that will turn off all transmitters and receivers, set the frequency, then turn all transmitters and receivers back on. Note the user has checked auto-send on OPEN, therefore BTField will always send this command sequence when a survey is first opened:

Jekyll

Configuring the Real-Time Flow

When BTField begins collecting data, it will execute the functions specified in the Real-Time flow found in the Proc tab. The Real-Time flow has one Merge function by default. This function is responsible for merging all raw data to the time base of the EM Sensors.

Jekyll

More functions can be added to the flow by clicking the f(x) button to display the Functions dialog. For example, the user can drag and drop the Detrend function into step 2 of the flow:

Jekyll

After dragging it into the flow, its parameter settings dialog will pop up. The Detrend function removes large geophysical trends and prepares the data for inversion. We can configure it as shown below by selecting the Rx type, and have it use the “UnFilt” merged data as the In variable, while setting the results to the “-a” Out variable. We have also selected a Filter Wnd of 7 meters, and a Default Mask that applies the Detrend function to “all” observations.

Jekyll

Our Real-Time flow now looks like this:

Jekyll

Later, when we collect data, these two functions will be run in separate threads to achieve the real-time performance. Section 5c of this manual, “Connecting Indicators”, will explain how the outputs from a flow can be connected to indicators on your display views.