The Digital Coriolis MassFlow Meter

Digital Coriolis prototype architectureThe architecture of the Oxford prototype transmitter is inherently simple. The two sensor signals are received by two ADC channels in the codec, which operates under the control of the FPGA. After processing and buffering, the data is presented to the processor, for detailed analysis. In addition to the calculation of process variables such as mass flow and density, the µP determines parameter values for maintaining flowtube oscillation. These are passed to the FPGA, which synthesises the required drive output signals and passes them to the output channels of the codec. Flowtube temperature data is acquired using a conventional sigma-delta ADC, which includes the driver circuitry to drive a 4-wire RTD interface. The term codec is used for a combined ADC and DAC chip, typically for use in audio applications, and therefore combining two (stereo) input channels and two output channels, all operating continuously in parallel. This specification matches Coriolis flow transmitter applications well, particularly dual-drive flowtubes, with each flowtube sensor being read by one ADC channel, and each drive signal being generated by one DAC channel.

The device provides 24 bit ADC and DAC channels, and is driven at a sampling rate of 40kHz. The processor is a relatively powerful 32-bit Pentium processor with hardware floating point, running at 266MHz. It executes high precision, computationally intensive measurement and control algorithms in full floating point. In the latest version, the FPGA is a 300,000 gate XILINX Spartan-IIE chip. In addition to acting as the interface between the other devices, it also carries a significant computational load.

The measurement calculations take place in four stages:

  • filtering
  • determination of frequency and phase difference
  • correction algorithms
  • conversion to engineering units.
The operating frequency of the Foxboro dual drive flowtube is typically 75 to 95Hz. For high precision measurement it is of course necessary to sample at a much higher frequency, for example at 40kHz. Filtering is used to minimise the effect of higher frequency components on measurement calculations. Specifically, the next mode of flowtube resonance, the so-called higher Coriolis mode, which typically exceeds 300Hz on the Foxboro dual drive flowtube, may cause increased noise in the flowrate measurement. This may occur if the higher mode is excited by, for example, external vibration or shock. A set of six-pole elliptical filters has been implemented within the FPGA to suppress all frequencies above 250Hz. The 24 bit data streams from the codec ADCs are processed using 24 bit filter coefficients. For numerical stability, the filters are implemented as second-order structures. Calculations are implemented in 38 bit fixed point registers within the FPGA, and results are transferred to the processor as 32 bit values, at between 10kHz and 40kHz, depending on the flowtube resonant frequency.

Recently, Foxboro has developed a commercial version of the Oxford meter. In the commercial transmitter a PowerPC processor is used running substantially similar code under VxWorks. A Spartan IIE chip provides FPGA functionality, using substantially similar core Handel-C code. The overlap of technologies between academic prototype and commercial product has reduced development time, and allows for further rapid transfer of new intellectual property developed at Oxford. The commercial device was launched in September 2002 and has won a number of industry awards.


Railway Points Machine Condition Monitor


The railway points machine condition monitor (Westwatch) is the result of a collaboration with Westinghouse Rail Systems in the UK and Australia.

Railway points machine condition monitor

Signal conditioning is kept to the bare minimum (buffering, scaling) so that raw data is transferred to the digital domain as early as possible. Seven Analogue-to-Digital Converters (ADCs) are used in parallel to monitor all the measurement channels. The devices used, Analog Devices 7731 sigma-delta ADCs, provide multiplexing on up to three input channels, good noise rejection (essential for the railway environment), and a high degree of configurability (e.g. programmable gains, trade-off between sampling rate and precision). The 7 ADCs are programmed and monitored in true parallel by the FPGA on a continuous basis. The FPGA also controls a 256K x 16 bit RAM; this is used to store data (for example, the complete data set from a points machine movement). This relieves the processor from the burden of providing rapid, real-time responses to point machine events.

In background mode, the FPGA continuously reprograms the ADCs to poll each input in turn. A complete scan of all 21 channels is completed within 7ms, corresponding to a sampling rate of 140Hz. As long as no movement event occurs, the data on each channel is averaged within the FPGA. On request from the processor (typically once per second), the accumulated average is reported and a new averaging process is begun. If the beginning of an event is detected by the FPGA, via thresholding levels on the motor current and voltage, then the FPGA immediately switches data acquisition to the movement event mode, where each ADC scans a single channel only at 2500Hz. The switch to event mode occurs within 7ms of the motor current and voltage rising above the selected threshold level. The event data is stored in local RAM. The processor is informed of the start and completion of the event, after which the event data is read back to the processor on request.

The processor is a Pentium 166MHz on a PC-104 form factor, running the condition monitoring application under the real-time operating system VxWorks. A local (silicon) hard drive is used to store programs and data. The tasks of the processor are as follows:

  • Poll the FPGA once per second for its status. If the FPGA is in background mode, collect background data and update records; if it is in movement event mode, wait until the event is complete and then retrieve event data from FPGA.
  • Process event data to generate event record files and to calculate parameter values based upon event data.
  • Update the object-oriented database, which stores the values of all key parameters at different time scales.
  • Use the database to update the status of all diagnostics and alarms.
  • Alert maintenance staff to any significant change (e.g. via e-mail, or SMS message).
  • Record background data and comment files for incorporation into archival reports, e.g. case open/closed, crank engaged, user comment submitted from console, diagnostics.
  • Detect train events on-line and generate train event record files and reports.
  • Generate ASCII logfile giving time-stamped messages of all activities.
  • Provide http, ftp and telnet services for local or remote access, with full security features enabled (e.g. two levels of password protection).