Predictive maintenance across two CNC plants
Spindle failures stopped lines without warning, and the maintenance window was booked around a calendar rather than the state of the machine.
The situation
Two plants, roughly two hundred CNC machines between them, ranging from four to twenty-two years old. Maintenance ran on a fixed calendar: every machine serviced on the same interval whether it needed it or not, and failures happening anyway in between.
What made it hard
The machines could not be modified. Anything that touched the control system voided support contracts, so instrumentation had to be entirely external — clamp-on current sensors and adhesive accelerometers, retrofitted without opening a cabinet.
The data problem was harder than the hardware one. Eleven years of maintenance records existed, but the failure descriptions were free text written by six different technicians, and the same spindle bearing fault appeared under four different phrasings.
How we built it
Instrument without touching the machine
Vibration and current draw, sampled at the gateway. Together they characterise a spindle well enough to detect bearing degradation and tool wear without any cooperation from the machine controller.
Fix the labels before building a model
We spent five weeks with the maintenance leads consolidating eleven years of free-text records into a controlled vocabulary. This was unglamorous and was the single highest-value part of the project — the first model trained on cleaned labels outperformed everything built on the raw data.
Inference at the edge
A quantised TensorFlow Lite model runs on the gateway. The plant network is not reliable and the cloud round-trip added nothing useful, so detection happens locally and only conclusions are published upstream.
A ranked worklist, not an alarm
Nobody wanted a 2am page about a bearing that has eleven days left. Predictions accumulate into a morning worklist ordered by urgency and by what is already scheduled, so maintenance is planned rather than reactive. This framing is why the system is still used.
What changed
Unplanned downtime fell 31% across the two instrumented plants, with an average of eleven days of warning before failure. A third plant is in rollout. The model ran in shadow mode for six weeks before anyone was allowed to act on it, which is why the maintenance team trusts it.
What we would tell the next team
- Label quality dominated model architecture. Five weeks of vocabulary work beat every algorithmic improvement we tried afterwards.
- Delivery format decided adoption. The same predictions as pages would have been ignored inside a month; as a morning list they became routine.
- Shadow mode is not optional. Six weeks of being scored without consequence is what bought the team's confidence.
Results above were measured by the client against their own baseline. We are happy to arrange a reference call where the contract allows it.
Other builds worth reading
Cold-chain monitoring for a cross-border distributor
Vaccine shipments were being written off because temperature breaches were only discovered on arrival. Paper loggers gave no way to intervene while a truck was still moving.
Metering platform for a regional energy retailer
The retailer inherited three meter vendors with three protocols, and a billing team reconciling exports by hand every month.
Tell us what you are trying to measure
An engineer reads every message and replies within one working day. The first call is a conversation about your problem, not a sales script.