The post In-process gauging of bearing balls: nanometric measurement with Python in 10 minutes appeared first on ADDI-DATA.
]]>A manufacturer of spherical rolling elements, bearing balls and rollers, produces at high volume against tight dimensional tolerances. Diameter and length are checked after the part leaves the process, on a sampling basis. Every out-of-tolerance part found at that point has already been mixed with good parts, already moved downstream, and sometimes already shipped. Scrap is discovered late, rework is expensive, and a customer complaint costs more than either.
Gauging a part while it moves is a different problem from gauging it on a bench.
The tolerance is the first constraint: on a precision rolling element, the differences that matter sit well below the micrometre, so the measurement chain has to resolve dimensional change at a scale where cable noise, temperature drift and a slow ADC all become the dominant error. The second constraint is timing, the part is in the measurement zone briefly, and there is no dwell time in which to take a careful reading. The third is architecture: several probes must be acquired together and attributed to the same part as it passes, then reduced to a single pass/fail number fast enough for the PLC to act on it in the same cycle.
Most integrations solve this by adding hardware, a presence sensor to say when the part is there, a PC to do the maths, a conditioning rack between probes and acquisition. Each addition is another item to wire, align, power and maintain, and another place for the measurement to go wrong.
Put the acquisition on the machine, and let it do the reduction itself.
Die ADDI-DATA MSX-E3701 is a rugged IP 65 metal-housed Ethernet system (−40 to +85 °C) that drives 8 or 16 inductive displacement transducers directly (Half-Bridge, LVDT, Mahr-compatible or Knaebel) with no external conditioner. It generates the transducer supply itself (differential sine, 5 to 50 kHz) and digitises at 24-bit.
In this application six probes are mounted as three facing pairs on a ring the part is pulled through. The module runs a peak-hold (min/max) acquisition: it tracks the extremum on every channel in hardware while the part passes, and this is the part that removes components from the bill of materials, it can stop itself on a threshold crossing. When a watched probe falls back past a configured value, the part has cleared, and the acquisition ends. No presence sensor. No polling loop deciding when the part arrived.
Where does it fit in your architecture? Your probes stay yours. Your PLC and your IT stack stay yours, unchanged. The MSX-E3701 owns the level in between acquisition – reduction, and hands over a result that is already a measurement, not a raw signal.
The measurement range is not fixed by the module. It is set by the transducer fitted and selected in software, which is why the same hardware serves a micrometric gauging job and a millimetre-range positioning job.
Accuracy is 16-bit over whatever range you choose. The datasheet’s worked example: a TESA GT21 with a ±2 mm range (Δ 4 mm) gives 4 mm ÷ 2¹⁶ = ±61 nm, or 0.061 µm. Fit a narrower-range probe and the same 16 bits resolve proportionally finer. That relationship accuracy scales with the range you select is the whole reason tight-tolerance in-process gauging is viable on a general-purpose platform.
Key features
Connect the MSX-E3701 to your Ethernet network. The module ships with a default IP address; set it to match your network with ADDI-DATA ConfigTools (included in delivery).
Clone the open-source samples from github.com/ADDI-DATA/msxe-samples and install the runtime dependencies:
pip install zeep numpy
The WSDL service definitions are bundled with the API. The client starts fully offline, no internet access and no proxy configuration.
Before anything else, find out which transducer types this module knows and what range each one covers. The selection_index printed here is the value every acquisition call needs.
from msxe_api import MSXE370xAPI
from msxe_api.msxe370x import TYPE_NAMES
msxe = MSXE370xAPI("192.168.99.99") # SOAP control on :5555
for index in range(msxe.get_number_of_types()):
info = msxe.get_type_information(index)
print(f"[{info['selection_index']}] {info['name']} "
f"({TYPE_NAMES.get(info['type'])})")
print(f" range : {info['range_mm']} mm")
print(f" sensitivity : {info['sensitivity_mv_v_mm']} mV/V/mm")
print(f" frequency : {info['frequency_hz']} Hz")
Reading the range from the device rather than hardcoding it matters: a fixed constant silently produces wrong millimetre values the day someone fits a different probe.
This is the classic gauging pattern. Start a min/max acquisition, let the part pass, read the extremum per channel. No data travels to the data server in this mode, the values come back from the status call.
import time
from msxe_api import MSXE370xAPI
from msxe_api.msxe370x import counts_to_mm
TRANSDUCER = 1 # selection_index from Step 3
PAIR = [0, 1] # one facing pair of probes
msxe = MSXE370xAPI("192.168.99.99")
range_mm = next(
i["range_mm"]
for i in (msxe.get_type_information(n)
for n in range(msxe.get_number_of_types()))
if i["selection_index"] == TRANSDUCER
)
msxe.minmax_start(TRANSDUCER, PAIR, division_factor=12)
try:
time.sleep(5.0) # let the part pass
state = msxe.minmax_get_status()
for ch in PAIR:
low = counts_to_mm(state["min_values"][ch], range_mm)
high = counts_to_mm(state["max_values"][ch], range_mm)
print(f"Ch{ch}: min={low:+9.6f} mm max={high:+9.6f} mm "
f"span={high - low:.6f} mm")
finally:
msxe.minmax_stop() # always release the acquisition
With no part present the probes sit at maximum deflection. Give the acquisition a stop channel and a threshold, and the module ends the sequence on its own the moment the part clears, the presence sensor disappears from the design.
from msxe_api.msxe370x import STOP_CONDITION_LESS, MINMAX_END
THRESHOLD_COUNTS = 0x400000 # 24-bit value; set it from your own reference run
msxe.minmax_start(
TRANSDUCER,
channels=[0, 1, 2, 3, 4, 5], # three facing pairs, six probes
division_factor=12,
stop_channels=[0, 1], # the pair that watches for the part
stop_condition=STOP_CONDITION_LESS,
stop_value=THRESHOLD_COUNTS,
)
while msxe.minmax_get_status()["flag"] != MINMAX_END:
time.sleep(0.01)
print("part has passed — peaks are held on the module")
One transducer selection applies to all channels of a min/max acquisition. If your probes are of different types, gauge them in separate acquisitions.
Each facing pair gives you two extrema. The pair sum, plus the offset established when you master the system against a known reference part, is the diameter.
MASTER_OFFSET_MM = 0.0 # from mastering: gauge a certified reference ball once
state = msxe.minmax_get_status()
for a, b in ((0, 1), (2, 3), (4, 5)):
peak_a = counts_to_mm(state["max_values"][a], range_mm)
peak_b = counts_to_mm(state["max_values"][b], range_mm)
diameter = peak_a + peak_b + MASTER_OFFSET_MM
print(f"pair {a}-{b}: max diameter = {diameter:.6f} mm")
# Raw counts stay visible — calibration is what ties them to a physical
# position, so the counts are the traceable value.
print(f" raw counts: {state['max_values'][a]}, {state['max_values'][b]}")
counts_to_mm() is deliberately opt-in. The API always returns raw counts, because the real count-to-position relationship is established by calibration, not by a formula. Verify the mapping against a calibrated transducer before relying on millimetre values for measurement.
A gauging station that silently loses a probe produces confident, wrong numbers. The module tests its own wiring.
msxe.init_primary_connection_test()
msxe.test_primary_connection() # transducer supply present?
msxe.test_primary_short_circuit()
for ch in range(6):
msxe.test_secondary_connection(ch) # line break on this probe?
msxe.test_secondary_short_circuit(ch)
See sample_connection_diagnostic.py for the full status decoding and the rearm_primary() recovery path.
Install matplotlib and run sample_length_dashboard.py for a live chart of every probe, useful when aligning the ring and choosing the threshold value for Step 5.
More advanced applications can look like this :
The repository ships a complete, runnable sample suite for the MSX-E 3701/3700. Every sample reads the device address from the environment and is commented step by step.
| Sample | What it shows |
|---|---|
| sample_transducer_types.py | Supported transducer types and the selection_index every other sample needs |
| sample_transducer_database.py | Reading, adding and saving transducer definitions on the module |
| sample_minmax_measurement.py | Peak-hold gauging, the pattern behind this article |
| sample_length_polling.py | Timed position polling, tabular output |
| sample_length_continuous.py | Live display of every channel until Ctrl+C |
| sample_length_stream.py | sample_length_stream.py |
| sample_length_csv_logger.py | Data logger with CSV export straight into pandas, Excel or Grafana |
| sample_length_dashboard.py | Live matplotlib chart |
| sample_acquisition_finite.py | Finite capture of N sequences |
| sample_acquisition_continuous.py | Unbounded streaming into your own callback |
| sample_calibration.py | Guided calibration procedure, step by step |
| sample_connection_diagnostic.py | Line break and short-circuit detection per channel |
| Operation | What it does |
|---|---|
| get_number_of_types() / get_type_information(i) | Ask the module which transducers it supports: name, type, range, sensitivity, excitation frequency, impedance, and the selection_index used everywhere else. |
| minmax_start(…) / minmax_get_status() / minmax_stop() | Peak-hold gauging computed on the module. Optional self-stop when a watched channel crosses a threshold. Status returns min and max raw counts for all 16 channels. |
| auto_refresh_start() / auto_refresh_get_values() / auto_refresh_stop() | Continuous position polling over SOAP, for live display and setup. |
| acquire_finite(…) / acquire_continuous(callback, …) | Block capture and unbounded streaming over the dedicated data server, so control traffic and measurement data never compete. |
| Connection diagnosis | Primary and per-channel secondary connection and short-circuit tests, plus rearm_primary() recovery. |
| Calibration | calibration_start() / calibration_get_status() / calibration_next_step(), one guided run through primary feedback, 0 mm null point and displaced user position. |
| Transducer database | Add, delete and persist transducer definitions on the module itself, so the configuration travels with the hardware. |
| Offline by design | WSDLs bundled with the package; the client constructs with no internet access. |
| Version | Wandler | Transducer Type | Protection |
|---|---|---|---|
| MSX-E3701-HB-16 | 16 | Half-Bridge | IP 65 |
| MSX-E3701-HB-8 | 8 | Half-Bridge | IP 65 |
| MSX-E3701-LVDT-16 | 16 | LVDT | IP 65 |
| MSX-E3701-LVDT-8 | 8 | LVDT | IP 65 |
| MSX-E3701-K-8 | 8 | Knaebel | IP 65 |
| MSX-E3701-M-8 | 8 | Mahr-compatible | IP 65 |
| MSX-E3700-HB-16 | 16 | Half-Bridge | IP 40 |
| MSX-E3700-HB-8 | 8 | Half-Bridge | IP 40 |
| MSX-E3700-LVDT-16 | 16 | LVDT | IP 40 |
| MSX-E3700-LVDT-8 | 8 | LVDT | IP 40 |
All versions operate from −40 °C to +85 °C. Knaebel and Mahr-compatible are offered on the MSX-E3701 only, in 8-channel form, if you already run those probes, the variant is decided for you.
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.
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.
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: info@addi-data.com
If you want to learn more about the MSX-E3701, you can find additional information directly on the product page.
PC-Karten
• Für vielfältige Signaltypen
• Höchste Präzision
• Robust und störsicher
Echtzeit-Systeme
• EtherCAT und Profinet
• Systeme mit Linux inkl. Echtzeiterweiterung
• PC-Karten mit Treibern mit Echtzeit-Erweiterung RTX
Ethernet-Systeme
• Direkter Sensoranschluss
• Integrierte Auswertung der erfassten Daten
• Für den Einsatz im Feld, bis IP 67
Datenlogger
• Langzeitdatenaufzeichnung vielfältiger Signaltypen
• Einrichtung der Messstelle ohne Programmierkenntnisse
• Visualisierung der Live-Daten
Die bessere Lösung ist oft maßgeschneidert. Als Hersteller können wir unsere Lösungen
schnell und effizient an Ihren Bedürfnissen anpassen. Wir beraten Sie gerne um die optimale Lösung für Ihre Applikation zu finden und führen auch gerne die notwendige Anpassung für Sie durch.
Fragen Sie uns!
The post In-process gauging of bearing balls: nanometric measurement with Python in 10 minutes appeared first on ADDI-DATA.
]]>The post Predictive maintenance for rotating equipment: rugged vibration acquisition with Python in 10 minutes appeared first on ADDI-DATA.
]]>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.
Die 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
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.
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:
| Sample | What it shows |
|---|---|
| sample_acquisition_finite.py | Finite capture saved to capture.npy / capture.csv, straight into pandas, Excel or any BI tool |
| sample_acquisition_continuous.py | Continuous streaming with live per-channel RMS |
| sample_acquisition_callback.py | Streaming into your own callback |
| sample_iepe_accelerometer.py | ICP®/IEPE accelerometer capture, sensor powered by the module |
| sample_advanced_acquisition.py | Mixed gains, differential inputs and hardware timestamps |
| sample_triggered_acquisition.py | Capture 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:
| Operation | What 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 configuration | Gain ×1/×10/×100, AC/DC coupling, single-ended/differential, ICP® on/off (one value for all channels or a per-channel dict) |
| Metadata | Optional hardware timestamps, sequence counter and trigger flags delivered alongside the samples. |
| Offline by design | WSDLs bundled with the package, the client constructs with no internet access |
| Version | Channels | Sensor Types | Typical Applications |
|---|---|---|---|
| MSX-E3601 | 8 SE/diff. inputs | ICP® or IEPE sensors | Noise & vibration measurement |
| MSX-E3601-2 | 2 SE/diff. inputs | ICP® or IEPE sensors | Noise & 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:
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.
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.
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: info@addi-data.com
If you want to learn more about the MSX-E3601, you can find additional information directly on the product page.
PC-Karten
• Für vielfältige Signaltypen
• Höchste Präzision
• Robust und störsicher
Echtzeit-Systeme
• EtherCAT und Profinet
• Systeme mit Linux inkl. Echtzeiterweiterung
• PC-Karten mit Treibern mit Echtzeit-Erweiterung RTX
Ethernet-Systeme
• Direkter Sensoranschluss
• Integrierte Auswertung der erfassten Daten
• Für den Einsatz im Feld, bis IP 67
Datenlogger
• Langzeitdatenaufzeichnung vielfältiger Signaltypen
• Einrichtung der Messstelle ohne Programmierkenntnisse
• Visualisierung der Live-Daten
Die bessere Lösung ist oft maßgeschneidert. Als Hersteller können wir unsere Lösungen
schnell und effizient an Ihren Bedürfnissen anpassen. Wir beraten Sie gerne um die optimale Lösung für Ihre Applikation zu finden und führen auch gerne die notwendige Anpassung für Sie durch.
Fragen Sie uns!
The post Predictive maintenance for rotating equipment: rugged vibration acquisition with Python in 10 minutes appeared first on ADDI-DATA.
]]>The post Industrial High-Precision Temperature Monitoring on Production Lines in 10 minutes with MSX-E3211 and Python appeared first on ADDI-DATA.
]]>Industrial production lines like food processing, chemical plants, plastics extrusion, and metal treatment require continuous, high-precision temperature monitoring across multiple zones. Curing ovens, cooling tunnels, extrusion dies, and chemical reactors all demand accurate, real-time temperature data to ensure product quality and process safety.
Integrators and Machine Builders need a fast, open, and cost-effective approach that integrates seamlessly with modern data analysis tools.
Die ADDI-DATA MSX-E3211 module provides 16 channels of industrial-grade temperature measurement over Ethernet. Available in two versions, the module covers virtually any industrial temperature monitoring scenario:
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:
Connect the MSX-E3211 to your Ethernet network. The module ships with a default IP address. Configure it to match your network using the ADDI-DATA Config Tools.
1. Automatic search for the MSX-E systems
4. Firmware update
5. System configuration through web interface
6. ConfigTools for acquisition systems with inductive transducers
Install the Python SOAP client library:
pip install zeep
Run the following Python code to read temperatures from all 16 channels:
"""Sample: Temperature polling on the MSX-E 3211.
Demonstrates:
- Querying the number of temperature channels
- Auto-detecting sensor class (RTD, TC, or NTC) per channel
- Configuring channels with appropriate types
- Starting auto-refresh acquisition
- Polling temperature values at regular intervals
- Stopping acquisition
Works with both thermocouple (TC) and RTD versions of the MSX-E 3211.
"""
import sys
import time
sys.path.insert(0, "../..")
from msxe_api import MSXE3211API
from msxe_api.msxe import MSXEError
from msxe_api.msxe3211 import TC_TYPE_K, RTD_PT100, REFRESH_UNIT_MS
MSXE_ADDRESS = "192.168.99.99"
MSXE_PORT = 5555
POLL_INTERVAL_S = 1.0 # seconds between each poll
POLL_COUNT = 10 # number of readings
def main():
msxe = MSXE3211API(MSXE_ADDRESS, MSXE_PORT)
# ── Auto-detect sensor class and configure all channels ──────
counts = msxe.configure_all_channels(tc_type=TC_TYPE_K, rtd_type=RTD_PT100)
print(f"Configured: {counts}")
# ── Show current configuration ───────────────────────────────
num_channels = msxe.temperature_get_number_of_channels()
msxe.print_channel_configuration()
# ── Start auto-refresh (all channels, 500 ms refresh) ───────
channel_mask = (1 << num_channels) - 1
msxe.auto_refresh_start(
channel_mask=channel_mask,
refresh_time=500,
refresh_time_unit=REFRESH_UNIT_MS,
force_start=1,
)
print(f"\nAuto-refresh started (mask=0x{channel_mask:04X}, 500 ms)")
# ── Poll temperature values ──────────────────────────────────
print(f"\nPolling {POLL_COUNT} readings, {POLL_INTERVAL_S}s apart:")
print("-" * 60)
header = " Time |" + "".join(f" Ch{ch:2d} " for ch in range(num_channels))
print(header)
print("-" * 60)
for i in range(POLL_COUNT):
ts_low, ts_high, counter, values = msxe.auto_refresh_get_values(blocking=1)
row = f" {i * POLL_INTERVAL_S:5.1f}s |"
for ch in range(min(num_channels, len(values))):
row += f" {values[ch]:6.1f}°"
print(row)
time.sleep(POLL_INTERVAL_S)
# ── Stop auto-refresh ────────────────────────────────────────
msxe.auto_refresh_stop()
print("\nAuto-refresh stopped")
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("\nInterrupted — stopping acquisition")
msxe = MSXE3211API(MSXE_ADDRESS, MSXE_PORT)
msxe.auto_refresh_stop()
except MSXEError as e:
print(f"MSXE error: {e}")
except Exception as e:
print(f"Connection error: {e}")
Get below our Live Dashboard sample on Github:
Install matplotlib and run the dashboard sample for real-time visualization:
pip install matplotlib
python sample_temperature_dashboard.py
A live chart window opens showing all 16 temperature channels updating in real time. Close the window to stop acquisition.
Get below our Live Dashboard sample on Github:
Log all channels to CSV for analysis in Excel, pandas, or any BI tool:
python sample_temperature_csv_logger.py
Outputs a timestamped CSV file with one row per reading and one column per channel, ready for import into any analysis tool.
The system architecture is simple and modular:
Multiple MSX-E 3211 modules can be connected to the same network. Each module is addressed by its IP address. The Python API handles SOAP communication transparently.
The Python API is designed for simplicity. Here are the key operations:
All operations raise MSXEError with clear error codes on failure. The API supports both RTD and Thermocouple versions with the same code.
Download the Python API and samples from our GitHub repository:
For technical support, please contact: info@addi-data.com
If you want to learn more about the MSX-E3211, you can find additional information directly on the product page.
PC-Karten
• Für vielfältige Signaltypen
• Höchste Präzision
• Robust und störsicher
Echtzeit-Systeme
• EtherCAT und Profinet
• Systeme mit Linux inkl. Echtzeiterweiterung
• PC-Karten mit Treibern mit Echtzeit-Erweiterung RTX
Ethernet-Systeme
• Direkter Sensoranschluss
• Integrierte Auswertung der erfassten Daten
• Für den Einsatz im Feld, bis IP 67
Datenlogger
• Langzeitdatenaufzeichnung vielfältiger Signaltypen
• Einrichtung der Messstelle ohne Programmierkenntnisse
• Visualisierung der Live-Daten
Die bessere Lösung ist oft maßgeschneidert. Als Hersteller können wir unsere Lösungen
schnell und effizient an Ihren Bedürfnissen anpassen. Wir beraten Sie gerne um die optimale Lösung für Ihre Applikation zu finden und führen auch gerne die notwendige Anpassung für Sie durch.
Fragen Sie uns!
The post Industrial High-Precision Temperature Monitoring on Production Lines in 10 minutes with MSX-E3211 and Python appeared first on ADDI-DATA.
]]>The post MSX-BOX-IPC-2 – Machine and Test Bench Migration to PCIe and Modern Operating Systems for High-Performance DAQ appeared first on ADDI-DATA.
]]>In den letzten Jahren haben sich Datenerfassungssysteme zwar weiterentwickelt, doch viele bestehende Maschinen und Fabrikinstallationen basieren weiterhin auf veralteten Komponenten. Dies macht Wartung, Skalierbarkeit und Kompatibilität zunehmend schwieriger. Ohne Modernisierungsmaßnahmen drohen Kunden längere Ausfallzeiten, steigende Wartungskosten und ein reales Risiko für zukünftige Projekte.
Unsere Kunden wenden sich mit einer Vielzahl technischer und betrieblicher Herausforderungen an uns, wenn sie ihre Anforderungen darlegen.
Der Kunde betreibt weiterhin Systeme, die auf veralteten Hardware-Architekturen basieren – ursprünglich um den ISA-Bus herum aufgebaut und später größtenteils auf den PCI-Bus migriert. Während der ISA-Bus längst veraltet ist und Ersatzteile heute praktisch nicht mehr verfügbar sind, folgt der PCI-Bus demselben Weg: Er wird zunehmend aus modernen Hauptplatinen ausgephast, und die Verfügbarkeit kompatibler Komponenten nimmt stetig ab. Diese doppelte Herausforderung macht eine Modernisierung der Hardware unumgänglich, um die langfristige Zuverlässigkeit der Systeme, die Betriebskontinuität und eine nachhaltige Infrastrukturunterstützung zu gewährleisten.
Der Kunde verwendet weiterhin eine Mischung aus PCI- und PCIe-basierter Hardware in Kombination mit einem 32-Bit-System. Da die Unterstützung für Windows 10 und ältere Betriebssysteme eingestellt wurde, besteht ein großer Wunsch, auf 64-Bit-Windows 11 umzusteigen. Da dieser Übergang ohne neue Hardware praktisch unmöglich ist, wird ein vollständiges System-Upgrade notwendig.
In vielen Industrieprojekten stammen kritische Komponenten oft von verschiedenen Lieferanten, was die Beschaffung komplexer macht und die Betriebskosten durch mehrere Ansprechpartner erhöht. Durch die Integration leistungsstarker Industrie-PCs (IPCs) in unser DAQ-Portfolio bieten wir eine einheitliche Lösung, die Verantwortlichkeiten zentralisiert, die Beschaffung vereinfacht und den Koordinationsaufwand durch einen kohärenten Systemansatz reduziert.
Abstimmung mit den Bedürfnissen und Erwartungen der Stakeholder, strukturiert um drei zentrale Überlegungen:
Eine große Herausforderung entsteht, wenn Kunden Zugriff auf den Quellcode ihrer Anwendung benötigen oder zumindest die Möglichkeit, den ursprünglichen Softwareanbieter einzubinden. Wenn der Zugriff nicht mehr verfügbar ist oder der Hersteller die Unterstützung verweigert, wird die Anpassung der Hardware nahezu unmöglich.
Als Lösung bietet ADDI-DATA die Entwicklung einer funktional äquivalenten Anwendung an, um die weitere Nutzbarkeit des Systems sicherzustellen.
Der Austausch veralteter Hardware kann zu unerwartetem Verhalten in verbundenen Systemen führen. Dies liegt oft daran, dass neuere Hardware mit höherer Geschwindigkeit oder Effizienz arbeitet, was zu Timing- oder Signalabweichungen führen kann.
In solchen Fällen müssen Signaltypen oder Kommunikationsmuster angepasst werden entweder durch Hardware-Modifikationen oder durch Software-/Firmware-Anpassungen.
In manchen Situationen muss neue Hardware mit bestehender, älterer Software integriert werden.
Dies ist grundsätzlich möglich, aber nur, wenn die von der Altsoftware verwendeten Funktionen und Treiberaufrufe von der neuen Hardwareplattform weiterhin unterstützt werden. Eine sorgfältige technische Prüfung ist unerlässlich, um die Kompatibilität zu gewährleisten und unerwartete Probleme zu vermeiden.
Die MSX-BOX-IPC-2 geht direkt auf die betrieblichen Herausforderungen und sich wandelnden Anforderungen ein, mit denen Organisationen heute konfrontiert sind:
Wenn Sie weitere Informationen über die MSX-BOX-IPC-2 erhalten möchten, finden Sie zusätzliche Details direkt auf der Produktseite.
PC-Karten
• Für vielfältige Signaltypen
• Höchste Präzision
• Robust und störsicher
Echtzeit-Systeme
• EtherCAT und Profinet
• Systeme mit Linux inkl. Echtzeiterweiterung
• PC-Karten mit Treibern mit Echtzeit-Erweiterung RTX
Ethernet-Systeme
• Direkter Sensoranschluss
• Integrierte Auswertung der erfassten Daten
• Für den Einsatz im Feld, bis IP 67
Datenlogger
• Langzeitdatenaufzeichnung vielfältiger Signaltypen
• Einrichtung der Messstelle ohne Programmierkenntnisse
• Visualisierung der Live-Daten
Die bessere Lösung ist oft maßgeschneidert. Als Hersteller können wir unsere Lösungen
schnell und effizient an Ihren Bedürfnissen anpassen. Wir beraten Sie gerne um die optimale Lösung für Ihre Applikation zu finden und führen auch gerne die notwendige Anpassung für Sie durch.
Fragen Sie uns!
The post MSX-BOX-IPC-2 – Machine and Test Bench Migration to PCIe and Modern Operating Systems for High-Performance DAQ appeared first on ADDI-DATA.
]]>The post Industrial measurement : technology for automation appeared first on ADDI-DATA.
]]>Um Automatisierungsprozesse nachhaltig zu optimieren müssen in erster Linie deren Schwachstellen aufgedeckt werden: das ist die Rolle der modernen Messtechnik.
die Sie mit den hochpräzisen intelligenten Messsystemen von ADDI-DATA erzielen können!
Moderne Messtechnik kann für vielfältige Aufgaben eingesetzt werden, da viele Signalarten erfasst werden können. Dadurch ist es möglich, die verschiedenen Schwachstellen in der Automatisierungskette zu identifizieren. Hier sind einige Beispiele:
Temperaturmessung
Druckmessung
Analoge Signale
Positionserfassung
Längenmessung
Vibrationsmessung
With high-precision DAQ cards and distributed systems by ADDI-DATA you can acquire and process numerous signal types, control and readjust processes directly and loop signals for readjustments and regulation to control units via standard interfaces. The acquired data can also be transferred to super-ordinate databases and software for evaluation and visualisation.
Positionserfassung von Glasbausteinen für den Schweißvorgang
Problemstellung:
Für die Montage von Glasbausteinen werden zwei Teile mit Heißluft geschweißt. Da das Material sehr empfindlich ist, muss der Montagevorgang trotz Geschwindigkeit, behutsam und sehr präzise verlaufen (1 µm), um die Teile nicht zu zerstören. Es muss auch gewährleistet sein, dass die Glasbausteine nah genug aneinander sind, um die Qualität der Schweißnaht zu sichern. Die Position der Teile soll deshalb im Abstand von 200 ms erfasst werden.
Furthermore it must be made sure that the glass components are close enough to guarantee a good quality of the weld seam. Thus the components’ position shall be acquired in intervals of 200 ms.
Lösung:
Das Ethernet-Zählersystem MSX-E1731 wurde zur Positionsermittlung der Glasbausteine mittels EnDat 2.2-Sensoren ausgesucht, weil es schnell und präzise ist. Zu Beginn des Schweißvorganges triggert die SPS das System MSX-E1731, um die Messung zu starten. Sobald die Glasbausteine in Position sind, sendet das System zwei Signale: Einen digitalen Ausgang, um die Achsen zu stoppen, und via Ethernet das Startsignal für den Schweißvorgang. Nach Beendigung der Schweißphase werden alle ermittelten Daten auf einem Linux-Server zur Archivierung abgelegt.
Das Ethernet-Zählersystem MSX-E1701 wurde zur Positionsermittlung der Glasbausteine mittels EnDat 2.2-Sensoren ausgesucht, weil es schnell und präzise ist. Zu Beginn des Schweißvorganges triggert die SPS das System MSX-E1701 um die Messung zu starten. Sobald die Glasbausteine in Position sind, sendet das System zwei Signale: einen digitalen Ausgang, um die Achsen zu stoppen, und via Ethernet das Startsignal für den Schweißvorgang. Nach Beendigung der Schweißphase werden alle ermittelten Daten auf einem Linux-Server zur Archivierung abgelegt.
PC-Karten
• Für vielfältige Signaltypen
• Höchste Präzision
• Robust und störsicher
Echtzeit-Systeme
• EtherCAT und Profinet
• Systeme mit Linux inkl. Echtzeiterweiterung
• PC-Karten mit Treibern mit Echtzeit-Erweiterung RTX
Ethernet-Systeme
• Direkter Sensoranschluss
• Integrierte Auswertung der erfassten Daten
• Für den Einsatz im Feld, bis IP 67
Datenlogger
• Langzeitdatenaufzeichnung vielfältiger Signaltypen
• Einrichtung der Messstelle ohne Programmierkenntnisse
• Visualisierung der Live-Daten
Lösungen nach Maß
Die bessere Lösung ist oft maßgeschneidert. Als Hersteller können wir unsere Lösungen
schnell und effizient an Ihren Bedürfnissen anpassen. Wir beraten Sie gerne um die optimale Lösung für Ihre Applikation zu finden und führen auch gerne die notwendige Anpassung für Sie durch.
Fragen Sie uns!
The post Industrial measurement : technology for automation appeared first on ADDI-DATA.
]]>The post Position acquisition with EnDat 2.2 appeared first on ADDI-DATA.
]]>Mit den Messtechnik-Lösungen von ADDI-DATA können Sie jetzt bis zu 8 EnDat 2.2-Geber anschließen und die Positionswerte absoluter Geber erfassen. Kombiniert mit der digitalen, bidirektionalen Schnittstelle EnDat 2.2, geben Absolutgeber den Positionswert direkt aus, ohne Referenzfahrt. EnDat 2.2 wird bevorzugt für Applikationen mit hochpräziser Positionierung und hoher Wiederholgenauigkeit eingesetzt. Es lassen sich auch Diagnose-Daten wie Temperatur, Leitungsbruch, etc. übertragen.
In Mess- und Werkzeugmaschinen werden zunehmend Positionsdaten mittels EnDat 2.2-Schnittstelle an die Folgeelektronik übertragen. Damit erhöhen Maschinenbauer die Produktivität ihrer Maschinen und die Wettbewerbsfähigkeit der Anlagen, in denen die Maschinen verbaut sind.
Um den Positionswert auch bei längeren Leitungen zuverlässig und schnell einordnen zu können, bietet die EnDat 2.2 die Signallaufzeitkompensation. Beginnt der
Positioniervorgang, wird die Zeitspanne bis zur Rückmeldung des EnDat 2.2 Datenpakets erfasst und als Referenz für die weiteren Positioniervorgänge verwendet.
Da zusätzliche Daten, wie z. B. Temperatur, mitgesendet werden, können Korrekturen im Prozess zeitnah vorgenommen werden um eine bleibende Genauigkeit im Positionierverfahren zu gewährleisten. Das spielt insbesondere bei kleineren Fertigungslosen und wechselnder Werkzeugnutzung eine bedeutsame Rolle.
EnDat 2.22 ist ein bidirektionales synchron-serielles
Interface für Positionsmessgeräte. Diese Schnittstelle ermöglicht das Auslesen von absoluten Positionswerten und von Parametern, das Beschreiben von Status- und Initialisierungsregistern und die Übertragung von Zusatzinformationen zum Positionswert. Zusätzlich unterstützen die EnDat 2.2 Lösungen von ADDI-DATA die Auswertung von Diagnose-Werten und den Zugriff auf den OEMSpeicherbereich. Die Daten werden rein seriell übertragen.
• Schnelle Datenübertragung, Takt wird von der Folgeelektronik vorgegeben
• Signallaufzeitkompensation
• Hohe Konturtreue
• Hohe Übertragungssicherheit
• Ersparnis zusätzlicher Sensorik: Auswertung (Temperatur, Endschalter, etc.)
• Serielle Übertragung: nur 4 Leitungen nötig
• Einfache Verdrahtung (M12, 8-polig)
• Automatische Parametrierung durch elektronisches Typenschild
Hohe Anforderungen an die Folgeelektronik
Ob PC-basiert oder dezentral, die EnDat 2.2-Schnittstelle fordert die Folgeelektronik heraus: präzise Positionermittlung bei hoher Taktfrequenz, Schnelligkeit, Robustheit oder Störunanfälligkeit zeichnen die Folgeelektronik aus.
ADDI-DATA bietet gleich vier unterschiedliche Lösungen zur Positionserfassung:
• Zählerkarte, PCI-Express mit hoher Eingangsgeschwindigkeit von 10 MHz
• Intelligente Achsensteuerungskarte, für komplexe Positionieraufgaben
• Intelligentes Ethernet-Zählersystem, direkt in Maschinen einsetzbar
• Motion Control Box, für Positionieraufgaben in Echtzeit
Funktionsprinzip
Exact positioning of axes for the regulation of surface measurement devices for
rotationally symmetric parts (e.g. gear wheels)
Problemstellung:
Für die Messung der Oberfläche von rotationssymmetrischen Teilen müssen viele Achsen positioniert werden. Außerdem müssen die Signale schnell übertragen werden um die
Position möglichst genau zu ermitteln. Um zusätzliche Zeit einzusparen sollen absolute
Geber eingesetzt werden, denn damit sind Referenzfahrten beim Einschalten überflüssig.
Lösung:
Die Messmaschine besteht aus einem Messtisch mit Portal. Die rotationssymmetrischen
Teile werden auf dem Messtisch eingespannt und deren Oberfläche über einen, mit dem Portal verbundenen Sensor ermittelt. Um den Sensor rund um die Teile zu bewegen, besteht das Portal aus mehreren Achsen, die mit EnDat 2.2-Absolutgebern ausgestattet sind. Mit der PCI-Express-Zählerkarte APCIe-1711 wird die Genauigkeit der Achsenpositionen gesichert: Durch ihre hohe Eingangsgeschwindigkeit von 10 MHz und ihre Störfestigkeit ermöglicht die Karte, die Achsen bei hoher Geschwindigkeit präzise zu verfahren.
Positionserfassung von Glasbausteinen für den Schweißvorgang
Problemstellung:
Für die Montage von Glasbausteinen werden zwei Teile mit Heißluft geschweißt. Da das Material sehr empfindlich ist, muss der Montagevorgang trotz Geschwindigkeit, behutsam und sehr präzise verlaufen (1 µm), um die Teile nicht zu zerstören. Es muss auch gewährleistet sein, dass die Glasbausteine nah genug aneinander sind, um die Qualität der Schweißnaht zu sichern. Die Position der Teile soll deshalb im Abstand von 200 ms erfasst werden.
Lösung:
Das Ethernet-Zählersystem MSX-E1701 wurde zur Positionsermittlung der Glasbausteine mittels EnDat 2.2-Sensoren ausgesucht, weil es schnell und präzise ist. Zu Beginn des Schweißvorganges triggert die SPS das System MSX-E1701 um die Messung zu starten. Sobald die Glasbausteine in Position sind, sendet das System zwei Signale: einen digitalen Ausgang, um die Achsen zu stoppen, und via Ethernet das Startsignal für den Schweißvorgang. Nach Beendigung der Schweißphase werden alle ermittelten Daten auf einem Linux-Server zur Archivierung abgelegt.
Automatic measurement device for clutch disks
Problemstellung:
Geprüft wird die Funktionstüchtigkeit von Rückstellfedern bei Kupplungen. Dafür soll die
Kraft bei entsprechendem Weg gemessen werden. Wie lässt sich das Verhältnis Kraft/Weg
der Federn genau ermitteln?
Lösung:
Um das Verhältnis Kraft/Weg der Federn richtig zu ermitteln, spielt die Positionserfassung eine wichtige Rolle. Eine Kupplungsscheibe wird auf dem Förderband positioniert und arretiert. Ein Stößel fährt herunter bis die Kupplungsscheibe erreicht ist. Der Stößel wird gedreht und dabei werden Weg und Kraft gemessen. Um die absoluten Positionen möglichst genau und schnell zu ermitteln, werden zur Positionierung der Achsen EnDat 2.2-Geber
eingesetzt. Mit der APCI-8008 werden die EnDat 2.2-Geber erfasst – die Position fließt in die Regelung ein. Um die Kraft zu erfassen liest die APCI-8008 die Messwerte der PCI-Druckmesskarte APCI-3300 direkt per Bus-Master-Zugriff.
Zählerkarte PCI-Express
• Schnelle Zählereingänge (bis 10 MHz)
• Mit Funktionen wie PWM, Inkremental kombinierbar
• 64-Bit Treiber für Windows 7/Vista/XP
Intelligente Achsensteuerungskarte
• Bis 8 Achsen steuern
• Mischbetrieb Servo-/Schrittmotoren
• Ethernet-/EtherCAT-Schnittstellen
Intelligentes Ethernet-Zählersystem
• 4 Zählereingänge
• Direkter Sensoranschluss
• Für den Einsatz im Feld, IP 65
Lösungen nach Maß
Die bessere Lösung ist oft maßgeschneidert. Als Hersteller können wir unsere Lösungen
schnell und effizient an Ihren Bedürfnissen anpassen.
Wir beraten Sie gerne um die optimale Lösung für Ihre Applikation zu finden und führen auch
gerne die notwendige Anpassung für Sie durch.
Fragen Sie uns!
The post Position acquisition with EnDat 2.2 appeared first on ADDI-DATA.
]]>