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
RESTful JSON API (~12 endpoints)
Parameters • Data • Device status
cRIO Real-Time Processor
50 ms deterministic control loop — no Windows jitter
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
Parameters — configure frequency range, target amplitude (g), sweep rate, dwell time via JSON payloads
- 2
Control — start a sweep, stop a sweep, query sweep progress
- 3
Data — real-time amplitude (actual measured g-level), optional raw waveform capture
- 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.


