Korpra
Test & MeasurementRochester, NYVibration & Calibration

Closed-Loop Vibration Shaker Control on a Headless NI CompactRIO

Constant g-level amplitude control across frequency sweeps, a RESTful JSON API, and zero Windows dependencies — built for a Rochester-area sensor manufacturer who needed real-time precision without learning LabVIEW.

Published March 2026

50ms

Deterministic control loop

~12

RESTful API endpoints

1–10

Hz frequency sweep range

0

LabVIEW skills needed by customer

The Challenge: Precise Amplitude Control Across a Frequency Sweep

A sensor manufacturer in the Rochester, NY area needed a way to qualify their IEPE accelerometers on an electrodynamic shaker. The requirement sounds simple: mount a sensor on a shaker, sweep through a frequency range, and verify the output. The catch is that electrodynamic shakers don't behave the same at every frequency. Without active correction, the vibration level at the sensor changes as the frequency changes — and that makes qualification data unreliable.

Why Open-Loop Control Fails Here

At low frequencies, displacement limits the achievable acceleration. At higher frequencies, the shaker's force capacity and mechanical resonances cause amplitude to drift. The system had to maintain a constant g-level as the shaker swept from 1 Hz to 10 Hz — a range where open-loop control is essentially useless. This is a classic closed-loop problem that demands deterministic timing a Windows PC cannot guarantee.

Why Windows Couldn't Do It

The customer had strong in-house expertise in C# and web-based development and initially explored building the shaker control on a Windows PC. The fundamental limitation: Windows is not a real-time operating system. The control loop needed to execute every 50 milliseconds with consistent, bounded timing.

A Safety Problem, Not Just an Accuracy Problem

On Windows, the OS scheduler can preempt any process at any time — an antivirus scan, a Windows update, a background service — and your 50 ms control loop suddenly takes 200 ms. For a closed-loop system driving a shaker with a human standing nearby, that kind of timing jitter isn't just an accuracy problem. It's a safety problem.

The Solution: cRIO as a Black Box with a RESTful API

The design philosophy was straightforward: make the cRIO invisible. The customer didn't want to learn LabVIEW, didn't want to maintain LabVIEW code, and didn't want to depend on LabVIEW developers for day-to-day operation. They wanted a black box — send it parameters, tell it to run, and get data back.

System Architecture: cRIO Controls, C# Commands

The entire system runs headless — no monitor, no keyboard, no PC required for operation. Communication between the customer's C# application and the cRIO uses standard HTTP:

Customer C# Application

Sends JSON over HTTP — configure, start, stop, query results

Layer 1

RESTful JSON API (~12 endpoints)

Parameters • Data • Device status

Layer 2

cRIO Real-Time Processor

50 ms deterministic control loop — no Windows jitter

Layer 3
Layer 4 · Parallel I/O

NI 9234 (IEPE Input)

24-bit • 51.2 kS/s • constant-current IEPE excitation

NI 9263 (Analog Output)

Drive signal to shaker power amplifier

Approximately 12 API Endpoints — Everything the Customer Needed

The web service API exposed roughly 12 RESTful endpoints covering three categories:

  1. 1

    Parameters — configure frequency range, target amplitude (g), sweep rate, dwell time via JSON payloads

  2. 2

    Control — start a sweep, stop a sweep, query sweep progress

  3. 3

    Data — real-time amplitude (actual measured g-level), optional raw waveform capture

  4. 4

    Device status — current state: idle / running / sweep complete / error

The Hardware: NI 9234 and NI 9263 in a CompactRIO Chassis

The I/O was clean and purposeful. The NI 9234 provided IEPE signal conditioning — it supplies the constant-current excitation that IEPE sensors require and digitizes the AC-coupled vibration signal with 24-bit resolution at up to 51.2 kS/s. The NI 9263 analog output module generated the drive signal sent to the shaker's power amplifier.

Why Backplane Integration Matters

Both modules sit in the same CompactRIO chassis, connected directly to the controller's backplane. No USB latency, no external DAQ box, no Windows driver stack in the signal path. The real-time OS reads the input and writes the output in a single deterministic loop iteration — exactly the tight coupling that closed-loop control demands.

Closed-Loop Control: Holding Constant G Across the Sweep

The control algorithm continuously monitored vibration amplitude through the NI 9234 and compared it against the target g-level. As frequency swept linearly from 1 Hz to 10 Hz, the controller adjusted the NI 9263 output to compensate for the shaker's changing mechanical response — driving harder at low frequency where displacement is the constraint, backing off as the shaker became more efficient at higher frequencies.

The Result: Flat Amplitude, Start to Finish

A flat amplitude profile across the entire sweep — exactly what sensor qualification requires. The customer sets a target g-level, starts the sweep from their C# application, and trusts that the vibration at the sensor is held constant throughout. No manual gain adjustments, no operator intervention, no post-test corrections. The cRIO handles it all in real time.

The Result: Multiple Stands, Same Architecture

The system gave the customer exactly what they needed: the precision of real-time deterministic control without having to build or maintain a LabVIEW application. Their C# developers could integrate the shaker controller into existing workflows, build custom UIs, and automate multi-step qualification sequences — all using HTTP and JSON, tools they already understood. The cRIO was just another service on the network.

The accuracy improvement over their previous approach was significant enough that the customer didn't stop at one. The same architecture is now running on multiple qualification stands — deploy a cRIO with the same image, point the C# application at a new IP address, and it's running.

Why This Architecture Works

cRIO handles what it does best: deterministic real-time control, hardware-timed I/O, IEPE signal conditioning. The customer's C# application handles what it does best: user interfaces, database integration, workflow automation. The RESTful API is the clean boundary between the two worlds — no shared codebases, no platform dependencies, no skills gap. For manufacturers who have invested in web-based or .NET teams but need the precision of real-time hardware control, this pattern is repeatable.

Need a Similar System?

If you're building vibration test systems, sensor qualification stands, or any closed-loop control application that needs to talk to your existing software infrastructure — that's what we do. Korpra has been designing LabVIEW and NI CompactRIO systems for manufacturers across Rochester, Buffalo, Syracuse, and nationwide since 2016. Call us at 585-678-1649 or request a quote.

Interested in a similar system?

Let's talk about your requirements.

Request For Quote

Further Reading

Related articles on LabVIEW, NI hardware, and test automation.