Overview: What Replaced the FactoryPMI/SQL Workflow
Engineers arriving from Citect, RSView32, or the legacy FactoryPMI + SQL toolset hit the same wall: the platform is not a tag database with a drawing package bolted on, it is a server-side gateway plus a Designer client. The modern equivalent of that workflow is Ignition, where the pieces map as follows:
| Legacy concept | Current equivalent | Where configured |
|---|---|---|
| I/O server / device driver | OPC UA Device Connection | Gateway web config |
| SQLTags | Tags (Tag Browser / OPC Browser) | Designer |
| Logging to SQL tables | SQL Bridge Transaction Groups | Designer |
| Trend/history archive | Tag Historian | Designer (per-tag History tab) |
| Graphics / symbols | Vision or Perspective windows, templates | Designer |
Python scripting is optional for the first project. Property binding, expression binding, and the group builders cover the majority of a data acquisition project; scripting appears heavily in community discussion only because it is the topic that generates questions, not because it is required.
Step 1 — Create a Device Connection (No PLC Required)
Getting PLC data in is explicitly a two-step process: add a device, then add tags. Do the device first, in the Gateway web interface.
- Open the Gateway web page and navigate to
Config → OPC UA → Device Connections. - Click Create new Device and select a driver. If no PLC is available yet — normal during evaluation — select the built-in Programmable Device Simulator, which exposes ramping and writable tags with no hardware.
- Give the device a name. Keep it short and area-based (
Line1_PLC), because the name becomes the first node in every OPC item path and will be typed into Transaction Group items repeatedly. - Save and confirm the status column reads Connected.
Reference: Ignition 8.1 Quick Start — Connect to a Device.
Step 2 — Create Tags in the Designer
Tags are created in Designer, not the Gateway. Two documented paths:
- Open the OPC Browser, expand the device node, and drag nodes into the Tag Browser.
- Or use Tag Browser → Add icon → Browse Devices and select nodes from there.
This is the direct replacement for what older FactoryPMI and Ignition 7.x material called "SQLTags." If you find a tutorial that tells you to create SQLTags, translate it to "create Tags in the Tag Browser." See Ignition 8.1 Quick Start — Create Tags.
For a site-wide OEE rollout, impose a naming standard before dragging the first tag. A workable pattern:
[default]Plant/Area/Line01/Counters/GoodParts
[default]Plant/Area/Line01/Counters/TotalParts
[default]Plant/Area/Line01/Status/Running
[default]Plant/Area/Line01/Status/DowntimeReason
[default]Plant/Area/Line01/Rates/IdealRate_PPM
Consistent depth per line is what later lets you build one screen template and one Transaction Group and duplicate it per line instead of hand-editing dozens of copies.
Step 3 — Choose Tag Historian or Transaction Groups
This is the single architectural decision that most affects an OEE project, and it is easy to get wrong by picking whichever one you found first.
| Criterion | Tag Historian | SQL Bridge Transaction Group |
|---|---|---|
| Table schema | Ignition-managed, partitioned | User-defined, wide table you control |
| Optimized for | Trending and internal history queries | Structured records read by external systems |
| Third-party reporting access | Requires understanding the internal schema | Direct — you designed the columns |
| Configured in | Tag's History tab | Designer, Transaction Groups node |
If a third-party OEE, ERP, or reporting package must read the raw tables, use Transaction Groups so the column layout is yours. If the requirement is operator trending and internal charts, use the Tag Historian. Most site-wide projects use both: Historian for process trends, Transaction Groups for production/OEE records. See Tag History vs. Transaction Groups.
Step 4 — Build the Historical Transaction Group
Transaction Groups are the execution engines, configured in Designer, that run on an interval or on a schedule. For OEE production records, use a Historical Group.
- In Designer, right-click the Transaction Groups node and create a new Historical Group.
- Drag tags from the Tag Browser into the group's item list. Items may be OPC references, tag references, expressions, or SQL queries.
- Set the target database connection and table name. Map each item to a database column.
- Set the execution rate on the group's timing configuration — interval-based or scheduled.
- Configure a trigger if the record should be written on an event (end of batch, part complete, shift change) rather than purely on time.
Historical Groups also support expression items and hour/event meters, which handle the accumulating quantities OEE needs — run-time accumulation and event counting — without writing scripts. Full item and trigger reference: SQL Bridge — Transaction Groups.
Step 5 — OEE Calculation: Build vs. Buy
You can compute OEE in SQL from the tables above, but understand the arithmetic you are committing to. The standard decomposition is:
OEE = Availability x Performance x Quality
Availability = actual run time / scheduled run time
Performance = actual rate vs. designed speed over the available time
Quality = good parts / total parts
Hand-building this means you own the scheduled-time calendar, downtime state machine, downtime reason capture, changeover handling, and shift boundary alignment. The Sepasoft OEE Downtime Module computes these factors from configured line/equipment definitions instead, and individual factors can be overridden with custom scripts where plant definitions differ from the module defaults — see How Is OEE Calculated?.
| Approach | Use when | Cost |
|---|---|---|
| Transaction Groups + SQL views | Simple line, one product, existing reporting DB, full schema control required | Engineering time, ongoing maintenance of the state logic |
| OEE Downtime Module | Multiple lines/areas, downtime reason trees, shift schedules, changeovers | Module licensing, less custom logic |
For a site-wide rollout across multiple lines, the per-line engineering effort of the hand-built approach compounds quickly. Prototype one line with Transaction Groups to prove the data path, then evaluate the module against that prototype.
Step 6 — Screens and Symbols
Once tags exist, screen building is bind-driven, not code-driven. The two binding types that cover most of a project:
| Binding | Purpose | Example |
|---|---|---|
| Tag binding | Drive a component property directly from a tag | Label text ← Line01/Counters/GoodParts
|
| Expression binding | Derive a value or color from one or more tags | if({[default]Line01/Status/Running}, color(0,200,0), color(200,0,0)) |
For custom symbols, build a reusable component (template) containing the graphic plus parameters — line number, tag path prefix — then instantiate it per line and pass the parameter. This is the mechanism that makes a 40-line site maintainable: fix the symbol once, every instance updates. Avoid copy-pasting decorated groups per line; it looks faster on day one and is unmaintainable by line ten.
Recommended Learning Sequence
- Gateway concepts: gateway vs. Designer vs. client, and where each configuration lives.
- Device connection with the Programmable Device Simulator — get a Connected status with zero hardware risk.
- Tag creation via the OPC Browser drag-and-drop.
- Database connection in the Gateway, verified as Valid before any group is built.
- One Historical Transaction Group writing to a table you designed.
- Property and expression bindings on a single screen.
- Templates/reusable components for per-line duplication.
- Scripting — last, and only for what the builders cannot express.
Skip nothing in the first four steps. Nearly all "my data isn't logging" problems trace back to a device that is not Connected, a database connection that is not Valid, or a Historical Group trigger that never evaluates true.
FAQ
What replaced SQLTags in current Ignition versions?
SQLTags terminology from FactoryPMI and Ignition 7.x material maps to Tags created in the Designer's Tag Browser. Create them by opening the OPC Browser, expanding the device node, and dragging nodes into the Tag Browser, or via Tag Browser → Add icon → Browse Devices.
Can I evaluate Ignition data acquisition without a PLC?
Yes. In the Gateway under Config → OPC UA → Device Connections, create a new device using the built-in Programmable Device Simulator driver. It exposes ramping and writable tags with no hardware, and the connection status should read Connected.
Should I use Tag Historian or Transaction Groups for OEE data?
Use Transaction Groups when a third-party reporting or OEE system must read the raw tables, because they write to a user-defined wide table schema you control. Use Tag Historian for operator trending, since it writes to an Ignition-managed partitioned schema optimized for internal queries.
Why won't my Historical Transaction Group update an existing row?
By design — a Historical Group can only INSERT rows, never UPDATE. If you need to modify an existing record in place, such as a running shift total, use a Standard Group instead.
How much Python scripting do I need for a first project?
Very little. Property bindings, expression bindings, and the Transaction Group builders cover most data acquisition and screen work; treat scripting as the last item in your learning sequence, used only where the GUI builders cannot express the requirement.
What are the three OEE factors and how are they defined?
OEE = Availability × Performance × Quality, where Availability is actual run time divided by scheduled run time, Performance compares actual rate to designed speed over the available time, and Quality is good parts divided by total parts. Individual factors can be overridden with custom scripts when plant definitions differ from the defaults.