top of page

Track Machine Utilization Without Operators

Updated: Apr 18


Learn how to track machine utilization without operators using PLC/CNC signals, simple run/idle/down logic, and validation for shift-by-shift decisions

How to Track Machine Utilization Without Operators

If your utilization numbers depend on end-of-shift notes, you don’t have utilization—you have a negotiated story. The symptom is consistent: the ERP says the schedule was packed, the floor “felt busy,” and yet you still miss dates, expedite material, or quote lead times like you’re guessing.


Tracking machine utilization without operator input is workable when you treat the machine as the source of truth. Pull objective PLC/CNC signals, map them to a small set of states, validate the logic against short observation windows, and then use the resulting shift-by-shift patterns to recover hidden capacity—before you spend on another machine.


TL;DR — How to track machine utilization without operators

  • Manual end-of-day logs compress a shift into a guess and hide idle blocks and micro-stops.

  • Start with a definition you can enforce from signals: Scheduled vs Available vs Utilized.

  • Phase 1 should use 3–4 states max (Running, Idle, Down, Alarm) to keep comparisons consistent.

  • Use a minimum viable signal set (cycle active/in-cycle, feed hold, alarm, e-stop, door open where available).

  • Combine signals so warm-up, probing, and tool changes don’t inflate “running.”

  • Add debounce rules so brief transitions don’t become fake downtime.

  • Validate with 15–30 minute observations against the state timeline, not against operator notes.

  • Act on patterns first; add reason codes only after the data repeatedly points to the same losses.

Key takeaway If your ERP and manual logs say two shifts ran the same, but the machine-state history shows different idle and stop patterns, you have recoverable capacity hiding in plain sight. Objective PLC/CNC signals let you define run/idle/down consistently across a mixed fleet, compare shifts fairly, and close the gap between “scheduled” and what the machine actually did—without asking operators to log a single event.


Why operator-free utilization tracking breaks (and what ‘good’ looks like)

Operator-free tracking often “breaks” for one of two reasons: shops try to substitute ERP completion data for machine behavior, or they install data capture but never lock down definitions. In both cases, the output becomes debatable, so nobody uses it to run the day.


End-of-day logs are the most common failure mode. They compress 8–12 hours into a few lines: “ran good,” “some downtime,” “waiting on material.” That creates false precision—numbers that look exact but can’t tell you whether the loss was a single two-hour gap, twenty short interruptions, or alarms clustered around a tool issue.


The incentive problem is real. When parts are queued, tools need measuring, inspection is backed up, or a setup is half-finished, logging is last priority. Even well-intentioned operators will default to “same as yesterday” entries, especially across multiple shifts where handoffs are fast and accountability is diffuse.


What “good” looks like is straightforward: a consistent machine-state record (a state timeline you can audit) and utilization calculated the same way for every shift and machine. The goal is not to assign blame; it’s to reveal utilization leakage—idle gaps between jobs, micro-stops that add up, and alarm time that keeps repeating. If you can’t see those losses clearly, you’ll try to solve capacity with overtime, expediting, or capital spend.


A common tell is the multi-shift mismatch: day shift “looks busy,” night shift “looks quiet,” and both shifts turn in nearly identical manual logs. When you pull PLC states, you may find the opposite—night has longer uninterrupted cycle-active blocks, while day has extended idle windows between setups, first-article waits, and priority changes. The value is that the discrepancy becomes visible and discussable without arguing over recollection.


Start with a utilization definition your shop can enforce

Before you connect anything, decide what you want the number to do operationally. A usable definition is one you can derive from signals and apply consistently across shifts—especially in a high-mix job shop where setup, probing, and tool touch-off are everyday reality.


Keep phase 1 to these time buckets:


  • Scheduled time: the hours you intended the machine to be producing (by shift, day, or weekend).

  • Available time: scheduled time minus known planned exclusions you agree to ignore (e.g., planned PM, planned meeting, planned changeover window—only if you can enforce it).

  • Utilized time: the portion of available time where the machine is in a “productive” state per your rule set.

Next, choose 3–4 machine states for phase 1. A practical starting set is: Running, Idle, Stopped/Down, and Alarm. More states can wait. The more granular you get early, the more you will argue about edge cases instead of improving flow.


Decide how to treat setup time based on the decision you need to make. If your immediate goal is capacity recovery on pacer machines, you may define “utilized” as true cycle-active cutting only. If your immediate goal is staffing and shift coverage, you may count attended setup as utilized but separate it from running in a secondary view later. Either approach can work—what matters is that you lock it in so day vs night comparisons are fair.


Finally, set explicit rules for unattended running and warm-up. In a robot-tended or lights-out cell, an operator may never touch the machine for hours; utilization has to reflect actual in-cycle time without human confirmation. At the same time, a spindle warm-up can look like “activity” on some signals but doesn’t represent parts produced. If you define these up front, you avoid the “the number is wrong” debate later.


Which PLC/CNC signals can replace operator input (minimum viable signal set)

You don’t need every tag under the sun to get usable utilization. You need a minimum viable set of objective signals that represent machine intent. Common examples (availability varies by controller and how the machine was built) include: cycle active/in-cycle, spindle on, feed hold, alarm, e-stop, and door open.


Be cautious with single signals. “Spindle on” can be true during warm-up. “Cycle start” can remain latched through pauses. “Power on” says nothing about productivity. The way to make signals trustworthy is to combine them so the machine has to satisfy multiple conditions to be counted as Running.


Think in “state intent,” not brand-specific tags

Mixed fleets (Fanuc/Haas/Siemens/Heidenhain plus older retrofits) are normal in mid-market job shops. Instead of betting on one universal tag, define the intent you need (in-cycle, stopped, alarmed) and then map each machine’s available signals to that intent. When something is missing, use a best-available proxy and document the assumption so the metric stays defensible.


Sampling rate and time stamping: “real-time enough”

For utilization decisions, you typically don’t need millisecond precision. You do need reliable time stamps and a sampling rate that can see short stops without turning the data into noise. The right approach is to pick a practical interval, then add logic (like debounce thresholds) so brief transitions don’t become artificial downtime events.


If your main pain is downtime and visibility, you may also want to align with broader machine downtime tracking practices—but for operator-free utilization, keep the first pass focused on consistent states you can trust.


Turn raw signals into trusted run/idle/down states (logic that holds up on the floor)

The translation layer is where most systems succeed or fail: raw signals are not utilization until you apply rules that match how your shop runs. The best logic is simple enough to explain at a shift meeting and strict enough to be repeatable across machines.


Baseline state logic (with caveats)

A workable starting point looks like this:


  • Running: in-cycle (or cycle active) is true, and not in alarm/e-stop. Optionally require spindle on or axis motion if available.

  • Alarm: alarm is true (or fault state is active), regardless of other signals.

  • Down: e-stop is true, or machine is in a known stopped condition you treat as down (shop-defined).

  • Idle: not in-cycle and not in alarm/down during available time.

Debounce so your downtime isn’t “2-second fiction”

CNC machines transition states constantly: door open/close, brief feed holds, program pauses, tool changes. If you count every transition as a stop, utilization will look worse than reality and operators will dismiss it. Add debounce rules such as “only count a stop if it lasts longer than 10–30 seconds” (tune per process) and roll shorter events into running or idle depending on your operational definition.


Handle high-mix edge cases without operator reasons

In high-mix work, you’ll see frequent setup, probing cycles, tool touch-off, optional stops, and inspection pauses. Operators often won’t log reasons, so your logic has to separate true cutting from not-running using signals and time windows. For example, treat short feed holds as part of a run block, but treat extended not-in-cycle periods as idle even if the spindle is occasionally on for warm-up or positioning.


Mini example 1: a “clean” machine with clear signals

Signals captured: in-cycle, alarm, feed hold. State logic: Running when in-cycle is true and alarm is false; Alarm overrides all; Idle when not in-cycle and not alarm. Utilization output: shift-by-shift run blocks vs idle blocks that you can line up with the schedule. Action enabled: You can compare day vs night on the same part family. If day shift shows repeated idle blocks after job completion (not-in-cycle stretches) while night runs longer continuous in-cycle time, you can focus on day shift handoff and queue readiness—material staging, tool preset timing, and first-article flow—without debating what someone wrote at end of shift.


Mini example 2: a “messy” machine with probing and frequent holds

Signals captured: in-cycle, spindle on, feed hold, door open, alarm (where available). State logic: Running when in-cycle is true; treat brief feed holds as Running (debounced), but if feed hold persists beyond a threshold, classify as Idle (or a separate “Paused” state later). If door is open for longer than a threshold during available time, classify as Idle unless your shop defines attended setup as utilized for that machine. Utilization output: you can distinguish long not-in-cycle gaps from short pauses inside a cycle, even without reason codes. Action enabled: If the pattern is “many short pauses” you look for process friction—gaging frequency, chip management, or tool life variability. If the pattern is “long door-open blocks,” you address setup staging and presetting, not “operator compliance.”


If you’re evaluating broader approaches, keep your scope on objective signals and state mapping—not dashboards. This is the practical core of most machine monitoring systems that actually hold up in mixed-fleet shops.


Implementation without disruption: connect, validate, then scale machine-by-machine

The fastest path to credible utilization is a phased rollout that proves accuracy before you expand. The biggest mistake is connecting ten machines at once and then discovering your definition or signal mapping is inconsistent—because you’ll spend weeks arguing about the metric instead of using it.


Pilot 2–3 representative machines:


  • One easy machine with clear in-cycle and alarm signals.

  • One messy machine that reflects high-mix reality (probing, short stops, frequent setups).

  • One unattended/robot-tended cell if you have it, where utilization must be captured without anyone present.

For the unattended cell, make sure your logic handles door-open events and alarms cleanly. A robot-tended machine may be in-cycle for long stretches, then stop on an alarm with no operator nearby. Your utilization view should clearly show those alarm blocks so you can decide whether to add remote alerting, adjust staffing coverage, or change the recovery procedure—without relying on someone to remember what happened hours later.


Validate against reality, not against logs

Use short observation windows—typically 15–30 minutes at a time—where a lead or ops manager watches the machine and notes what it’s truly doing. Then compare that to the captured state history. You’re not looking for perfect classification of every second; you’re looking for a model that reliably separates Running vs not-Running in a way that supports daily decisions.


Lock governance early so metrics don’t become a moving target

Once your state logic is “good enough,” lock the definition for the pilot group before scaling. If you keep tweaking rules every week, shift comparisons lose credibility. Assign data ownership: who reviews exceptions (ops manager, cell lead, maintenance) and how often (daily quick check, weekly deeper review). Consistency is what makes the number usable in a standup, not at month-end.


Implementation usually raises practical questions about scope and support. If you want a straightforward way to frame the rollout effort without wading into pricing details, use your vendor’s deployment and support model as the filter—not the dashboard screenshots. When you’re ready to discuss packaging and what’s included, you can reference pricing in terms of how you’d scale across 10–50 machines.


Use the data to find utilization leakage (without needing reason codes yet)

Once you have consistent run/idle/down states, the win is not a prettier report—it’s operational visibility that supports daily decisions. You can recover capacity by targeting the specific patterns where time disappears between scheduled hours and actual cutting time.


Three pattern reads that drive action

  • Long idle blocks: often queue, staging, inspection waits, or handoff gaps between jobs.

  • Frequent micro-stops: usually process friction (chip control, gaging cadence, tool life variation) that needs a process fix, not a schedule change.

  • Alarm clusters: repeated faults around similar times or jobs; prioritize the top recurring alarms before you talk about buying equipment.

Shift comparison without politics

Go back to the multi-shift mismatch scenario: day shift feels slammed, night shift feels slower, and manual logs look the same. With state data, you can compare the same machine on the same part family across shifts and ask better first questions: Were tools preset the same way? Was material staged? Did first-article approval create a long idle window? Did alarms concentrate around a specific program? The point is accountability through consistent definitions, not finger-pointing.


Queue vs capability: is there work, and is it running?

One practical advantage of operator-free tracking is separating “no work queued” from “work queued but not running.” Your schedule (even if imperfect) tells you what should be in process; the machine-state record tells you whether it actually ran. When you see extended not-in-cycle time during scheduled hours, you can investigate whether the constraint is queue readiness (material, tools, inspection) or capability (process stability, recurring alarms).


When you actually need reasons (and how to add them later)

You don’t need reason codes on day one. Add lightweight reason capture only when the same utilization losses repeat and the state model can’t tell you which of two causes is dominant (for example, long idle blocks that could be “waiting on inspection” or “waiting on program”). At that point, reasons become targeted and minimal—not a burdensome logging program.


Utilization is most useful when it becomes a capacity recovery tool—especially when you’re debating overtime, weekend coverage, or buying another machine. For broader context on how shops use this day-to-day, see machine utilization software and how it supports consistent decisions across a mixed fleet.


Once the state data is flowing, the next bottleneck is interpretation: turning “idle since 9:40” into the likely next step for a lead, planner, or maintenance tech. That’s where an AI Production Assistant can help summarize patterns and exceptions without changing your core definitions.


If you want to pressure-test whether operator-free utilization tracking will work on your mixed fleet (including one “messy” machine and any unattended cells), the fastest next step is to walk through your pilot signal set, state rules, and validation plan with someone who does this in real shops. schedule a demo.

Machine Tracking helps manufacturers understand what’s really happening on the shop floor—in real time. Our simple, plug-and-play devices connect to any machine and track uptime, downtime, and production without relying on manual data entry or complex systems.

 

From small job shops to growing production facilities, teams use Machine Tracking to spot lost time, improve utilization, and make better decisions during the shift—not after the fact.

At Machine Tracking, our DNA is to help manufacturing thrive in the U.S.

Matt Ulepic

Matt Ulepic

bottom of page