MES downtime without the license
You don't need the MES modules to get real downtime tracking and a credible OEE number. A couple of tables and some gateway scripting go a long way.
What you actually need
- A run-state tag per line or cell — running, stopped, faulted.
- A
downtime_eventstable: line, start, end, duration, reason code, operator. - A short, standardized set of reason codes everyone agrees on.
The pattern
A gateway tag-change script watches the run-state and writes event boundaries on transitions:
def valueChanged(tag, previousValue, currentValue, ...):
if currentValue.value == previousValue.value:
return
system.db.runNamedQuery("oee/LogStateChange", {
"line": tag.parent,
"state": currentValue.value,
"ts": system.date.now()
})
OEE then falls out of named queries: availability from the downtime table, performance from count versus ideal rate, quality from scrap counts. A small Perspective screen lets operators attach reason codes to the stops the system already caught.
When to buy the module
Roll your own when you've got a line or two and want answers this month. Move to the MES modules when you need it standardized across many lines, with the scheduling, genealogy and support that come with them. Starting lightweight also teaches you exactly what you need before you spend.
Want OEE without a big software project? I'll scope a lightweight version against your real lines.
Contact us