Predictive maintenance for rotating equipment: rugged vibration acquisition with Python in 10 minutes

6–10 minutes

An operator of critical rotating machinery specialized in rail rolling stock running assets such as bearings, gearboxes and drivetrains around the clock. Uptime and safety are non-negotiable: an unplanned stop halts production or takes an asset out of service, with direct cost, contractual penalties and reputational impact.

Reliable vibration monitoring is difficult in harsh industrial environments such as those encountered with rail rolling stock. Long analog cables can degrade sensitive accelerometer signals, while advanced machine diagnostics require simultaneous, phase-true acquisition across multiple channels.

Measurement points are distributed across the asset, installation space is scarce, and the environment is rough: vibration, temperature swings, dirt and water. And there is a second, quieter cost: every engineering hour spent taming the measurement chain is an hour not spent on the diagnosis itself.

What is needed is acquisition that is rugged, compact and mounted close to the sensors.

Instead of pulling long cables back to a cabinet, the acquisition is placed directly at the machine.

La ADDI-DATA MSX-E3601 provides a rugged, IP65 metal-housed node (−40 to +85 °C) accepts the ICP®/IEPE accelerometers directly, without external signal conditioner and digitises every channel simultaneously in 24-bit, up to 128 kHz with anti-aliasing, so the vibration signature is captured phase-true.

Nodes connect over standard Ethernet, are synchronized to the microsecond and cascade through an integrated switch, so coverage scales from a couple of points to the whole asset. On-board processing buffers and pre-conditions the data at the edge before it reaches the maintenance/analytics layer, turning raw vibration into an early-warning signal.

Where does it fit in your architecture? Your sensors stay yours. Your control system and your IT stack stay yours, unchanged. The MSX-E3601 owns the level in between (acquisition) and hands over data that is already correct: in volts, phase-true, timestamped.

Combined with our open-source Python SOAP API, users go from unboxing to live data acquisition in under 5 minutes without proprietary software required.

Key features

  • Entrée trigger numérique 24 V
  • 8 or 2 current sources for ICP® or IEPE sensors
  • Processeur ARM®9 32 bits
  • 64 Mo de SDRAM pour le stockage des données
  • Boîtier métallique robuste et normé
  • Power Save Mode: Reduced power consumption when
  • no acquisition runs

Connect the MSX-E3601 to your Ethernet network. The module ships with a default IP address. Configure it to match your network using the ADDI-DATA Config Tools.

To make another scan, click on the green icon on the top right corner of the “ConfigTools Explorer” window. Click on the MSX-E system that you want to administrate.

Vue d'ensemble de la fenêtre ConfigTools

In the “Product information section”, you can find information about the system (serial number, IP address, firmware version etc.).

Clone the open-source samples from github.com/ADDI-DATA/msxe-samples and install the two runtime dependencies:

pip install zeep numpy

The WSDL service definitions are bundled with the API, the client starts fully offline, with no internet access and no proxy configuration.

This is the real API, not pseudocode. One call opens the data stream, captures a phase-true block on four ICP®/IEPE accelerometers at 50 kS/s per channel, then stops and cleans up:

from msxe_api import MSXE3601API
from msxe_api.msxe3601 import GAIN_X1, COUPLING_AC, INPUT_SE
msxe = MSXE3601API("192.168.99.99")   # SOAP control :5555, data stream TCP :8989
volts, meta = msxe.acquire_finite(
    channels=[0, 1, 2, 3],
    frequency_hz=50000.0,
    n_sequences=4096,          # samples per channel
    gains=GAIN_X1,
    coupling=COUPLING_AC,      # AC coupling for accelerometers
    input_type=INPUT_SE,
    icp=True,                  # sensor powered by the module
)
print(volts.shape)             # (4096, 4) float32 — already in volts

The heavy sample data does not travel over SOAP: it streams over the module’s dedicated data server (raw TCP), so control traffic and measurement data never compete.

For monitoring, register a callback and stream without limit. Each block arrives as a NumPy array already in volts, run your FFT, envelope or band-RMS analysis directly on it:

import numpy as np
def on_block(volts, meta):
    rms = np.sqrt((volts.astype(np.float64) ** 2).mean(axis=0))
    print("  ".join(f"Ch{c}: {r:.4f} Vrms" for c, r in enumerate(rms)))
    # your FFT / envelope / band-RMS analysis goes here
    # return False to stop; None keeps streaming
msxe.acquire_continuous(
    on_block, channels=[0, 1, 2, 3], frequency_hz=50000.0,
    block_sequences=2048, gains=GAIN_X1, coupling=COUPLING_AC, icp=True,
)

The stream always shuts down cleanly, on a callback stop, on an exception, or on Ctrl+C the sequence is stopped and the socket closed, so the next start never finds the module blocked.

Install matplotlib and run the dashboard sample for visualization:

import numpy as np
import matplotlib.pyplot as plt
volts, _ = msxe.acquire_finite(
    channels=[0], frequency_hz=50000.0, n_sequences=8192,
    gains=GAIN_X1, coupling=COUPLING_AC, input_type=INPUT_SE, icp=True,
)
signal = volts[:, 0] - volts[:, 0].mean()      # remove the DC offset
# Hann window with amplitude correction — peaks read in true volts
window = np.hanning(len(signal))
amplitude = np.abs(np.fft.rfft(signal * window)) / (len(signal) * window.mean())
amplitude[1:] *= 2
amplitude[-1] /= 2                             # Nyquist bin is not mirrored
frequency = np.fft.rfftfreq(len(signal), d=1 / 50000.0)
fig, (ax_t, ax_f) = plt.subplots(2, 1, figsize=(11, 7))
ax_t.plot(np.arange(len(signal)) / 50.0, signal, lw=0.6)
ax_t.set(xlabel="time (ms)", ylabel="amplitude (V)", title="Time domain")
ax_f.plot(frequency, amplitude, lw=0.8)
ax_f.set(xlabel="frequency (Hz)", ylabel="amplitude (V)",
         title="Amplitude spectrum — Hann window, \u0394f \u2248 6 Hz")
plt.tight_layout(); plt.show()

A live chart window opens showing all vibration channels updating in real time. Close the window to stop acquisition.

The repository ships a complete, runnable sample suite for the MSX-E3601. Every sample reads the device address from the environment and is commented step by step:

SampleWhat it shows
sample_acquisition_finite.pyFinite capture saved to capture.npy / capture.csv, straight into pandas, Excel or any BI tool
sample_acquisition_continuous.pyContinuous streaming with live per-channel RMS
sample_acquisition_callback.pyStreaming into your own callback
sample_iepe_accelerometer.pyICP®/IEPE accelerometer capture, sensor powered by the module
sample_advanced_acquisition.pyMixed gains, differential inputs and hardware timestamps
sample_triggered_acquisition.pyCapture gated on the 24 V hardware trigger input

The CSV output imports into Excel, pandas or Grafana as-is; the continuous stream feeds a time-series database or ML pipeline directly.

The Python API is designed for simplicity. A few operations that do exactly what they say:

OperationWhat it does
acquire_finite(…)1. open stream
2. capture exactly N sequences
3. stop
4. close.
5. Returns (volts, meta) as NumPy float32 in volts.
acquire_continuous(callback, …)Unbounded streaming; every block delivered to your callback; sequence stopped and socket closed on any exit path.
init_and_start_sequence() / get_sequence_status() / stop_and_release_sequence()Full manual control when you need custom acquisition logic.
Per-channel configurationGain ×1/×10/×100, AC/DC coupling, single-ended/differential, ICP® on/off (one value for all channels or a per-channel dict)
MetadataOptional hardware timestamps, sequence counter and trigger flags delivered alongside the samples.
Offline by designWSDLs bundled with the package, the client constructs with no internet access
VersionChannelsSensor TypesTypical Applications
MSX-E36018 SE/diff. inputsICP® or IEPE sensorsNoise & vibration measurement
MSX-E3601-22 SE/diff. inputsICP® or IEPE sensorsNoise & vibration measurement

Because the data leaves the module as clean and timestamped, it feeds an AI-based monitoring layer without any preparation. For example, combined with Grafana and its machine-learning tooling:

  • Automatic anomaly detection: Identify unusual vibration patterns and gradual changes in machine behaviour.
  • Equipment degradation forecasting: Use historical condition indicators to anticipate potential failures.
  • Smarter alerts: Detect deviations before critical thresholds are reached and reduce false alarms.
  • Earlier fault detection: Help maintenance teams anticipate bearing, gearbox or drivetrains failures.
  • Predictive maintenance strategy: Move from scheduled or reactive interventions to targeted, condition-based maintenance.

You run a test bench or a validation programme?

Validate the technology on your own application before committing budget.

We provide a free loan unit with a working example tailored to your measurement task, support you in meeting your target performance, and provide the documentation required for your internal validation process.

Prove the concept first. Invest later.

You integrate condition monitoring for your customers?

Start with a documented and proven building block.

Request our reference architecture, including hardware, Python API, sample code and integration guidance. You benefit from predictable commissioning, clearly defined interfaces, and lifecycle commitments.

Reduce risk. Accelerate deployment.

You build the machine?

Integrate once and rely on it for the lifetime of your machine.

We support your design-in with product variants, dedicated part numbers and custom firmware whenever the standard offering does not fully match your requirements. Long-term availability and lifecycle commitments are provided in writing.

A measurement platform designed for long-term machine programmes.

Download the Python API and samples from our GitHub repository:

For technical support, please contact: [email protected]


If you want to learn more about the MSX-E3601, you can find additional information directly on the product page.


SOLUTIONS ADDI-DATA

Cartes d'acquisition
• Pour différents types de signaux
• Haute précision
• Robuste et résistant aux interférences

apcie-1711 PC board

Systèmes temps réel
• EtherCAT et Profinet
• Systèmes Linux avec extension temps réel
• Cartes PC avec pilotes RTX temps réel

Systèmes Ethernet
• Connexion directe des capteurs
• Connexion directe des capteurs
• Pour une utilisation sur le terrain, degrés de protection jusqu’à IP 67

MSX-E1701 fieldbus system

Enregistreurs de données
• Enregistrement de longue durée de nombreux types de signaux
• Configuration du point de mesure sans connaissances en programmation
• Visualisation des données en direct

intelligent data loggers MSX-ilog

Solutions sur mesure

La meilleure solution est souvent une solution sur mesure. En tant que fabricant, nous pouvons vous proposer des solutions adaptées à vos besoins de manière rapide et efficace. C'est avec plaisir que nous vous conseillons afin de trouver la solution idéale pour votre application. Nous procédons également aux adaptations ou aux développements nécessaires.
Contactez-nous !

HAUT

To access this Product Notification file, please enter your email address.

You will have immediate access to the document.

Download - PCN-AD-2608004 - APCIe-1564-5V-PNP/-NPN - Rev C to Rev E

To access this Product Notification file, please enter your email address.

You will have immediate access to the document.

Download - PCN-AD-2608003 - APCIe-040 - Rev D2.03

To access this Product Notification file, please enter your email address.

You will have immediate access to the document.

Download - PCN-AD-2608002 - APCle-2200 - RevD2.03

To access this Product Notification file, please enter your email address.

You will have immediate access to the document.

Download - PCN-AD-2608001 - APCIe-1711 - Rev E

To access this Product Notification file, please enter your email address.

You will have immediate access to the document.

Download - PCN-AD-2510001 - CPCIs-1532_1564 - RevC2

To access this Product Notification file, please enter your email address.

You will have immediate access to the document.

Download - PCN-AD-2603001 - MSX-RDC-17 - Rev D

To access this Product Notification file, please enter your email address.

You will have immediate access to the document.

Download - PCN-AD-2511005 - APCIe-1500 - RevE

To access this Product Notification file, please enter your email address.

You will have immediate access to the document.

Download - PCN-AD-2511003 - APCI-1710 - Update to APCI-1712

To access this Product Notification file, please enter your email address.

You will have immediate access to the document.

Download - PCN-AD-202606001 - APCI-2200 - Rev D to F1

To download this driver, please enter your email address.

Once submitted, the file will begin downloading automatically.

Download drivers (xPCIx-17xx)

To access this Certificate, please enter your email address.

You will have immediate access to the document.

Download certificate (PFAS)

To access this Certificate, please enter your email address.

You will have immediate access to the document.

Download certificate (AEO)

To access this Certificate, please enter your email address.

You will have immediate access to the document.

Download certificate (ISO)

To access this Certificate, please enter your email address.

You will have immediate access to the document.

Download certificate (POPs)