OEE Downtime is the Sepasoft, Inc. module for Ignition (the platform from Inductive Automation) that records machine modes, states, counts and downtime reasons against a model of lines and cells, and calculates OEE from them. On an Allen-Bradley line the data comes from ControlLogix or CompactLogix tags read by Ignition's Logix driver: one integer state per cell, free-running infeed, outfeed and reject counters, and optionally a mode, product code or work order. Most of the work is deciding those tags and the rules behind them before anything is configured.
What the OEE Downtime module does
Sepasoft's documentation and product page describe these functions. All Sepasoft modules require Ignition, and the Production module, which holds the shared MES functions, is always installed with them. OEE Downtime has components for both Vision and Perspective.
| Function | What it does | Where you see it |
|---|---|---|
| Equipment modes | what the line is used for (production, changeover, maintenance…), each included in OEE or not | OEE Time Chart, analysis |
| Equipment states and reasons | the status of a line or cell from an integer code | OEE Downtime Table, OEE Time Chart |
| Downtime events | start and end recorded automatically; operators add reasons and notes or split events | OEE Downtime Table |
| Runs and schedules | work orders, scheduled operations, changeover and production start, end of run | MES Work Order Table, MES Schedule View, OEE Run Director |
| Counts and calculation | infeed, outfeed and reject counters; OEE per run, shift or period | Live Analysis tags, analysis components |
The OEE formula and a worked shift example are in the OEE article. One point matters for configuration: Sepasoft calculates availability as run time divided by elapsed time minus planned downtime, so whatever is marked as planned downtime does not lower availability. Performance compares the infeed count with run time × standard rate × package count, and quality is infeed minus rejects over infeed. Sepasoft licenses OEE Downtime per production site, with no limit on lines, machines or users at that site.
The production model: lines and cells
Everything in the module hangs on the production equipment model, configured in the MES Equipment Manager. Sepasoft names the levels Enterprise, Site, Area, Line, Cell Group and Cell; Process Cell and Unit serve Batch Procedure, Storage Zone and Storage Unit serve Track & Trace, and Location serves SPC. OEE Downtime works on Lines, Cell Groups and Cells.
Two points from the documentation shape the design. A rename makes a new item and disables the old one, and the data already recorded stays with the old item, so names should be final before the first run. A line of several machines modelled as one cell gets much less from the downtime detection methods, cell cycle time and the OEE Time chart. We recommend making each machine that has its own state in the PLC a cell; Sepasoft notes that a machine with no real-time interface can be combined with a neighbouring cell.
From PLC tags to OEE screens
Ignition reads the controller through its Allen-Bradley drivers. In Ignition 8.3 the Logix driver covers ControlLogix and CompactLogix with firmware v20.19 and later, and legacy drivers cover v20.18 and earlier; the Logix driver is optimised for firmware 21 and later. Each cell and line in the model then has tag collectors that point at Ignition tags, which can be PLC, memory or expression tags.
The OEE engine needs tags for equipment state and counts. Other inputs (mode, shift, product code, work order, package count, standard rate) come from a tag or, if the path is blank, from the scheduled run or the material settings. Rates written by tag must be per minute, because OEE stores all rates that way. Recording resolution is one second: if a tag changes twice within the same second, the later value replaces the earlier one.
Results go back into Ignition: Live Analysis creates tags in the MES tag provider for a chosen period (shift, production day, run, hour or a custom start), updated at most once every 60 seconds, for binding to any screen.
Machine state: one integer per cell
The module takes the state of each cell from a single integer. Each value in the cell's state class has a name, a type and a code, and Sepasoft says the code generally matches the status code in the PLC. Code 0 must not be used: it is reserved internally, and when communication with the PLC fails the state becomes 0. The default class contains Blocked, Disabled, Idle, Planned Downtime, Running, Starved and Unplanned Downtime, and any number of states can be added on those types. An example for one filler:
| Code | State | Type | Note |
|---|---|---|---|
| 1 | Running | Running | other running codes can be grouped with it |
| 2 | No order | Idle | no run active on the line |
| 10 | Outfeed full | Blocked | from the downstream accumulation sensor |
| 11 | No bottles | Starved | from the infeed sensor |
| 20 | Planned stop | Planned Downtime | does not lower availability |
| 100 | Stop button | Unplanned Downtime | parent state: the operator must pick a sub-state |
| 110 | Infeed jam | Unplanned Downtime | first-out alarm in the PLC |
States can have sub-states. With Override set to Required and Scope set to Sub State, the operator has to replace the detected reason with one of its children, which is how a generic "stop button" event turns into a real cause. Each state also has a Short Stop Threshold in seconds: a state shorter than this does not count against availability, 0 counts everything, and Running states ignore the setting.
On the PLC side the state code is a small piece of logic per machine. We recommend fixing a priority for when several conditions are true at once (a fault above blocked, blocked above running), latching the first fault so the code shows the cause and not the consequence, and holding each code for at least a second, since the module records at one-second resolution.
Modes: production, changeover and maintenance
A mode answers what the equipment is being used for. Sepasoft provides six fixed mode types: Production, Idle, Changeover, Maintenance, Other and Disabled. The plant defines its own modes on these types, for example a cleaning or test mode, and each mode has an integer code. Two flags decide what a mode does: Include in OEE (states and counts feed the calculation) and Include in Production Counts (good units count towards the run). Sepasoft's guidance is both for production, counts only for changeover or setup, neither for cleaning or testing; OEE without counts is not valid, because performance and quality need counts.
The mode is normally set by the run itself. The OEE Run Director offers Start Changeover, Start Production and End Production; the changeover segment's mode applies from the start of the operation, the production mode when changeover ends, and Idle when the run ends. A mode tag from the PLC can override this, which can suit machines where the operator selects maintenance or cleaning on the HMI.
Blocked, starved and the first-out question
Inside one machine, the PLC's first-out alarm says what stopped it. Across the line, OEE Downtime decides which machine caused a line stop with a detection mode set on the line or cell group:
- Equipment State: the line state comes from one tag of its own. A line state tag can also be added under any other mode, and an active downtime state on it (Sepasoft's example is a line-wide e-stop) replaces the derived reason.
- Initial Cell: the first cell to go down for an unplanned reason is blamed; if it restarts, the other down cells are considered in the order they stopped. It works like a first-out at line level, and Sepasoft points it at processes where one stopped cell stops all the others.
- Key Reason: a key cell, normally the bottleneck, decides. If it is down for an unplanned reason, that is the cause; if it is starved, upstream cells are checked, and if blocked, downstream cells. Cell Priority blames the nearest cell with a recordable reason; Neighbor Priority starts from the farthest cell and needs every cell in between to show blocked or starved.
- Parallel Cells: for cells doing the same job; a threshold sets how many must run.
When no cause can be found, the module records fallback reasons such as Blocked for Unknown Reason or Unexpected Starved, with negative codes. Sepasoft stresses that every cell between the key cell and the faulted cell must report Blocked or Starved; if the PLCs do not report those states, Key Reason has nothing to follow. A cell group sees only its own children.
Counters: infeed, outfeed, reject and roll-over
Counts enter as MES Counters on a line, cell group or cell, each with a tag path and a kind: Infeed, Outfeed, Reject or General. If a line has no reject counter, the module adds up the reject counters of its cells, and without those it uses infeed minus outfeed. Package count converts between infeed and outfeed units (Sepasoft's example is 24 bottles per case). Rejects are taken in infeed units by default; a reject counter that counts cases needs the reject count scale.
The Count Method decides how PLC values are read:
- Roll Over: for a counter that only counts up and wraps. When the value drops, the module adds the roll-over value to keep the total rising. The default is 32768, which Sepasoft ties to a
16-bit signed value, and the right setting depends on the data type of the PLC tag: set it to the value at which your tag actually wraps. - Actual: the tag value is used as it is and may go up or down.
- Positive Change: only increases are added and decreases are ignored, and so is a jump from 0 to a value, which protects against a false zero after a communication loss at the cost of a small lag.
We recommend a PLC counter that only counts up and is never reset by the program, read with Roll Over. If the PLC resets counts at shift or order change, Positive Change fits better: Roll Over would read each reset as a wrap and add a false jump.
Worked mapping: PLC tags to OEE inputs
A generic bottling line with a filler, capper, labeller and case packer, the filler as key cell. Tag names are examples.
| PLC tag (example) | Type | OEE Downtime input | Setting |
|---|---|---|---|
| L1_Filler_State, L1_Capper_State… one per cell | DINT | State tag collector of each cell | codes from the cell's state class; never 0 |
| L1_Line_State (optional) | DINT | State tag collector of the line | for line-wide reasons such as e-stop |
| L1_Mode (optional) | DINT | Mode tag collector | otherwise set by the run segments |
| L1_Filler_Infeed | DINT | MES Counter, kind Infeed | Roll Over, roll-over value = PLC wrap |
| L1_CasePacker_Out | DINT | MES Counter, kind Outfeed | Roll Over |
| L1_Vision_Reject, L1_Checkweigher_Reject | DINT | MES Counters, kind Reject, on their cells | same units as infeed |
| L1_ProductCode, L1_WorkOrder (optional) | STRING | Product Code, Work Order tag collectors | blank: taken from the scheduled run |
| not from the PLC | n/a | OEE Standard Rate per material and line | in outfeed units; per minute if written by tag |
Shifts usually come from Ignition's Schedule Management, selected per line; a shift tag is the alternative. Shifts must not overlap. The analysis detects a shift by its name changing, so Sepasoft suggests splitting a single all-day shift into alternating shifts on different days, and adding a filler shift for the hours a line does not work.
What to agree before configuring
- Planned downtime. Which events are planned (breaks, planned stops) and which modes are excluded from OEE. Under Sepasoft's formula this decides availability, so write the rule down and apply it on every line.
- Ideal rate per product and line. The OEE Standard Rate is set per material and per line in outfeed units, with the package count. The OEE article defines the ideal rate as the fastest the process can achieve in optimal conditions.
- The reason tree. One state class shared by similar lines, with codes agreed with the PLC programmers, parent states for operator-selected reasons and a short stop threshold per state.
- Key cell, counters and names. The key cell (usually the bottleneck), which machines count infeed, outfeed and rejects, whether the PLC resets counters, and model names fixed before the first run.
How TDL approaches it
TDL Industrial Automation is a Sepasoft MES Certified Integrator and an Ignition Certified Integrator. TDL's production-data work so far is on Rockwell Automation platforms: machine states defined in the PLC, good and reject counts from fillers, vision systems, checkweighers and reject stations, and machine alarm words mapped to the plant's production system, as described on the OEE and downtime monitoring page. Where a plant uses or chooses OEE Downtime, TDL connects it to the existing PLCs, as described on the MES on Ignition page. For which other modules fit next, see which Sepasoft MES module for which plant need; for when a spreadsheet is still enough, see what MES is.
Frequently asked questions
Do the PLC programs have to change for OEE Downtime?
Only where a signal is missing. The module needs an integer state per cell and counters; if the PLC already holds them they are read as they are. Key Reason detection also needs the cells between the key cell and a faulted cell to report blocked or starved, so check those states first.
Which state code should mean a communication failure?
None of yours. Sepasoft reserves code 0 and sets the state to 0 when PLC communication fails, so start your own codes at 1 and never write 0 from the PLC.
How does OEE Downtime handle a PLC counter that wraps or resets?
With the Count Method of each MES Counter. Roll Over adds the roll-over value each time the count drops, with a default of 32768 for a
Does planned downtime lower availability in Sepasoft OEE?
No. Sepasoft calculates availability as run time over elapsed time minus planned downtime, so states of the Planned Downtime type are excluded. Agree which events are planned before configuring.
Can OEE Downtime run in Perspective?
Yes. Sepasoft lists OEE Downtime components for both Vision and Perspective, including the OEE Run Director, OEE Downtime Table and OEE Time Chart in Perspective.
Sources
- Sepasoft, Using Sepasoft MES Modules, MES Module Suite user manual
- Sepasoft, Production Equipment Model, MES Module Suite user manual
- Sepasoft, Line Settings, MES Module Suite user manual
- Sepasoft, OEE Downtime Settings, MES Module Suite user manual
- Sepasoft, Equipment Modes and States, MES Module Suite user manual
- Sepasoft, Configuring Equipment States, MES Module Suite user manual
- Sepasoft, Configuring Equipment Mode, MES Module Suite user manual
- Sepasoft, Downtime Detection Modes, MES Module Suite user manual
- Sepasoft, MES Counters, MES Module Suite user manual
- Sepasoft, OEE Material Production Settings, MES Module Suite user manual
- Sepasoft, How Is OEE Calculated?, MES Module Suite user manual
- Sepasoft, Shift Configuration, MES Module Suite user manual
- Sepasoft, Live Analysis, MES Module Suite user manual
- Sepasoft, OEE Downtime Components (Perspective), MES Module Suite user manual
- Sepasoft, OEE Run Director (Perspective), MES Module Suite user manual
- Sepasoft, OEE Downtime Table (Perspective), MES Module Suite user manual
- Sepasoft, OEE Time Chart (Perspective), MES Module Suite user manual
- Sepasoft, Core MES Features, MES Module Suite user manual
- Sepasoft, OEE: Features, MES module tutorials
- Sepasoft, OEE Downtime product page
- Sepasoft, MES Pricing, licensing terms only
- Inductive Automation, Allen-Bradley Ethernet drivers, Ignition 8.3
- Inductive Automation, Connecting to Logix, Ignition 8.3
Read 12 November 2026. This article paraphrases the sources and does not quote them; read the original documents before designing or working on a system.