This chapter describes the acquisition system used to collect geophysical and navigational data during field surveys in Antarctica. Instrumentation includes a laser altimeter, ice-penetrating radar, a cesium vapor sensor magnetometer, an aerogravity system, a pressure transducer, a GPS time code generator, two GPS navigation systems, an inertial navigation system, and a ten microsecond counter-timer. The acquisition computer runs under the QNX real-time operating system. Four concurrently executing programs interact to acquire, time-stamp, and 'packetize' instrument data in real time.
Data acquisition transpires aboard a modified Twin Otter aircraft
( known as SJB to its crew) as it navigates above the survey area at an
average airspeed of seventy-two meters per second. Most of the onboard
survey instrumentation is mounted in ten racks. In addition to these racks,
a gravity meter and its gyroscopically stabilized platform, a magnetometer
sensor and winch system, and a laser altimeter (Figure
2.1), are installed within this specially modified aircraft. The racks
are arranged in two layers, one on top of another. Three instrument operators
monitor data acquisition during a survey flight. Each operator is responsible
for the instrumentation within a rack set (Figures 2.2
and 2.3).
The data acquisition system includes an ice-penetrating radar system, a
laser altimeter, an airborne gravity system, a magnetometer, a time code
generator, a pressure transducer, two satellite navigation units, and an
inertial navigation system. A description of the instrumentation follows.
Together, the coincident data measurements clarify the dynamics and structure of the Antarctic ice sheet and discern the structure of the subsurface geology. Laser ranging when combined with aircraft GPS data can determine surface elevation to an accuracy of less than one meter. When surface elevation is combined with satellite imagery, the boundary between an ice sheet and its fast moving ice streams can be identified [Blankenship et al. 1993, 1994]. Using measurements of surface elevation, ice thickness, and ice velocity, the distribution of stress at the base of the ice and ice-sheet mass balance can be calculated [Bindschadler et al. 1996]. Magnetic and gravity profiles, ice thickness, and surface elevation have all been used to identify an active volcano located under the ice sheet [Blankenship et al. 1993]. Such complex and integrated measurements depend upon a robust acquisition system.
The acquisition computer is a rack-mounted, 50 MHz machine with
an Intel 486 processor. All data except the ice-penetrating radar data
are acquired through serial data lines. The computer contains a Comtrol
Hostess i Serial Board through which the serial data are obtained. The
acquisition of serial data is interrupt driven. The ice penetrating radar
data is acquired via coaxial cabling through an EG&G Model 9826 Digital
Signal Averager Board (DSA), that stacks the radar sweeps. A CTM05 Counter
Timer Board provides a ten microsecond counter and is used in combination
with the computer's hardware clock to time stamp incoming data.
The data are logged to two 1GB external macro-link disk drives connected to the acquisition computer via SCSI cabling. The data log created on each disk consists of a 512 byte section reserved for a Sun disk geometry label, a middle section containing space information about the log file, and a data section starting at byte 768. The data from each instrument are 'packetized' before being written to disk. This results in the data section consisting of a series of data packets. The end of the data section is marked with a terminator of four bytes of zeros.
All data packets have a consistent structure (Figure 2.4). Each packet contains a header section, a timing section, and a data section. The header section identifies the packet data. The first field, packet, is an 6 character ID, 'PACKET'. The second field, project, indicates the field season during which the data was collected. The third field, set, indicates the field sector where the data was collected. The fourth field, transect, indicates a particular flight line. The fifth field, stream name, is a data stream identifier that classifies the recording instrument supplying the data. The sixth field, sequence, gives the packet order of a particular data stream. The seventh field, length, gives the total length, in bytes, of the data section plus the timing section for that packet.
Following the header section is the timing section. The timing section indicates when the packet data was collected and is used to sequence all of the data packets belonging to a particular transect. Included in this section are the time from the computer's hardware clock and a sequence number from the CTM05 counter-timer board. Both the hardware seconds and the counter sequence number are accurate to two decimal places, noted by the two '100ths' fields (Figure 2.4). The last packet section is the data section. The size and type of data within the data section is different for each recording instrument. The magnetometer, time code generator, gravity system, pressure sensor, laser, and GPS receivers all output byte streams of ascii characters. The internal navigation system (DAI) outputs a byte stream of signed integers. The ice-penetrating radar system produces a stream of bytes representing a stacked digital waveform. Collecting data is the only job of the data acquisition system. The data is 'packetized' in the same form that it is read off the data boards. No interpretation is performed by the acquisition system.
The data acquisition process consists of independent programs running
concurrently on the acquisition computer. The interprocess communication
is based on message passing. Only one gigabyte of data is collected during
a single three to four hour flight period. The programs include the following:
A control program directs the running acquisition processes. Once SJB is in the air and the instrumentation is powered up, the acquisition processes are started. A number of user controllable commands start, stop, and guide the acquisition system. These commands are sent to the hipac and dsa processes.
The startup:STReam command directs hipac to send an initialization command to the instrument indicated by 'STReam'. The record:PST command sets the project name, set name, and transect name used by hipac and dsa when building packets. The start command directs the counter to be initialized and commences logging to disk. The stop command annuls the start command. The start and stop commands can be used multiple times during a single survey flight so that only the data collected over defined transects are recorded.
The operating system plays an important role in keeping data acquisition
running smoothly. Time-critical demands are placed on the operating system
when data acquisition rates are high, such as on SJB. The QNX operating
system was designed for real-time applications [Hildebrand 1989]. It employs
fast context switching and true multi-tasking. QNX relies on a network-distributed,
micro-kernel design. The advantages of a micro-kernel include simplicity,
flexibility, modularity, and a small footprint. The four basic services
provided by the QNX micro-kernel are:
The kernel occupies merely 12 Kbytes of code. This small footprint allows active portions of the kernel and system interrupt handlers to reside within a CPU cache, giving QNX the ability to execute real-time operations. Other operating system services are added as needed and implemented as user-level servers. Each user-level service has a defined interface and is accessible to all clients. Utilizing message passing, the user can send a message to a server process, which does the work and then returns the result. The ability to add, delete, and modify services gives the micro-kernel flexibility. Being able to design a unique system suitable for real-time data acquisition makes the kernel highly modular.
Message passing is the fundamental form of inter-process communication
(IPC) used by the QNX operating system. Messages that prevent or block
the execution of the currently executing process until a response is received,
support synchronous IPC between processes. Synchronous communication allows
an application to synchronize events among concurrently running processes
and share data. Three functions are used to implement message passing.
The message protocol works as follows:
Proxies are a special type of message that do not block the currently executing process or expect a reply. They are suited for event notification and the delivery of preformed messages. Signals, a traditional method of asynchronous IPC, are also supported by QNX. A combination of these different IPC primitives are used by the acquisition processes to regulate the transfer of data from instrument to computer.
Messages may be sent between processes on the same machine (locally) or between processes on different machines across a network (remotely). QNX machines residing on the same network are referred to as nodes. For example, the data acquisition processes dsa and hipac each run on a single node and communicate with spool, also running on that same node. A real-time display process, on the other hand, runs on a different node but still communicates with spool for packets. The code used to communicate with spool is the same for the display process as for dsa and hipac. From an application's viewpoint, communicating with a local process and communicating with a remote process represent the same operation. This network transparency is made possible by the use of virtual circuits. Virtual circuits are set up by the Network Manager to transmit messages over the network. A virtual process ID (VID) is associated with each end of the virtual circuit. Communicating processes at either end of the circuit transmit messages by using the VID as if it was merely the local process ID (PID) assigned to the process with which they are communicating. Applications do not need to set up these virtual circuits directly. A virtual circuit is set up on behalf of a running application when it requests access to resources across the network. The Process Manager maintains the integrity of the virtual circuit on its node so that time-consuming computer resources are not wasted when circuits links are broken.
Each node on a QNX network is identified by a physical node ID and a logical node ID. A computer's network card specifies the physical ID. Logical node ID's are assigned sequentially, typically starting with 1, and must be unique across the network. The Network Manager maps a node's logical ID to its physical ID so that all QNX processes can communicate using logical node ID's. The next chapter describes the role and operation of real-time display nodes connected to the acquisition system.