Rethinking the Traditional Automation Stack: PLC, Historian, and MES in the Age of Industrial DataOps
If you walk into almost any factory built, automated, and “digitalized” in the last thirty years, you will find the same three-layer stack: PLCs and DCS systems running the process, a Historian collecting everything into a proprietary archive, and an MES on top orchestrating production with multiple and partly customized integrations. The model has served the industry well, and we are still connecting these layers to each other and to the IT world above them.
Recently, with the emergence of Clouds, data lakes, AI, and other modern Industrial Software Systems, I have realized that this stack is carrying responsibilities it was never designed for and is not flexible enough to respond to the necessary changes required to adopt new technologies.
In this post, I’ll give my view of the problems of the classic stack and what the emerging architecture, which is better suited for the future, looks like, and which are real products you can build it with today.
What the classic stack is actually struggling with
The PLC/DCS layer does far more than control, and that is the problem. Control programs are written for safety and determinism, and rightly so. But look inside a typical PLC or DCS program today, and you will find a surprising amount of business logic that exists only to serve the MES integration: how process messages are constructed for different cases, how different recipe formats are received and parsed, and other routines only distantly related to the automation system’s main task of controlling actuators, sensors, and motors. Every change to this logic means modifying a validated control program, which is slow, expensive, and risky, so in practice it’s made only when absolutely necessary. The same logic, placed in a DataOps layer above the controllers, is far easier to maintain, and adding a new message format or recipe variant becomes a configuration task instead of a PLC project.
The Historian collects large amounts of raw data, and much of it is never used or required by any regulation. The bigger problem, though, is what it takes to make that data useful. Turning raw tags into information requires information modeling, and here the classic stack makes you do the work twice. The Historian is seldom the source of present values, so the MES cannot rely on the Historian’s structures and builds its own model of the very same plant. The result is two heavily overlapping modeling efforts on the same layer of the architecture, neither benefiting the other, both maintained separately as the plant evolves. Placing an Industrial DataOps layer in front of a local time-series database instead is a combination that performs most of the tasks of both the Historian and the MES data collection at a fraction of the cost, and a single information model in Industrial DataOps serves both applications. Anything new is built as an extra on top of the same model, but no parallel models requiring custom linkages are required anymore.
The old-style on-premises Historian does not fit that well with modern data analysis. Modern analytics requires all relevant data in one place: production data alongside purchasing, sales, logistics, and warehouse data. A site-local archive in a proprietary format is exactly the opposite of that, which is where cloud data storage comes into play. The trend is recognized even by established historical vendors, which are offering cloud-based variants of their old systems, and new start-ups and early-stage companies are basing their cloud solutions on InfluxDB, a PostgreSQL variant, TimescaleDB, and other time-series databases, each with their own modifications.
And finally, MES products have never been particularly strong in connectivity. Their strength is orchestrating production, not talking to dozens of different device types. In older installations, integrating the various data sources has typically been done through customization or custom-made connectors built during the project and rarely touched afterward. How many cases have I seen with a middleware database as the integration point between the MES and actual production, with dozens of back-and-forth connectors, and these customizations aging badly. The developers who built them leave, the hidden knowledge disappears with them, and ten years later nobody dares to touch the interface that keeps production running. The better way to do this is to connect MES to the Industrial DataOps layer via OPC UA and let DataOps handle connectivity. It’s meant to do that in an easily maintained and configurable way without the need for custom coding.
The architecture I see emerging
The companies that drive for the next step of digitalization are migrating to having a following stack with responsibilities divided into three cleaner roles:
- The PLC/DCS layer controls, and only controls. The integration-driven business logic, such as message construction, recipe format handling, and similar routines, moves up to the DataOps layer, where it can be changed without touching a validated control program. All data sources of the plant, automation systems, energy meters, building automation, and standalone sensors connect upward through this single layer rather than each having its own integration path.
- The Industrial DataOps layer collects, contextualizes, and stores the data. The information model is built once, here, near the source, and serves both the local time-series storage and the MES, ending the overlapping modeling work of the classic stack. Data is stored as long as use cases require, which, for typical track & trace and quality needs, means months to a few years in a standard time-series database. This layer also forms the security boundary between OT and IT, which I covered in detail in my NIS2 post.
- The MES orchestrates through the DataOps layer rather than around it. Instead of dozens of custom connections and its own plant model, the MES consumes and writes contextualized data over a single standard OPC UA connection, inheriting the model that already exists one layer below.
Above all of this sits the analytics data platform, and it belongs in the cloud. This is where the long-term storage question is answered, and the scope expands beyond OT to integrate production data with purchasing, sales, logistics, and warehouse data. The DataOps layer feeds hand-picked, well-modeled production data into a cloud data platform, where it joins the rest of the business data.
Building it with real products
All of this can be built using products available today. At the center, our Prosys OPC UA Forge or other Industrial DataOps serves as the Industrial DataOps layer. Its Connectors speak the native protocols to PLCs, Energy Meters, Laboratory devices, etc. at the plant floor; its OPC UA server core harmonizes everything into standard information models, so a pump is a pump regardless of which vendor delivered it. The integrated time series database handles track & trace, and data loggers write the necessary data to SQL databases to support on-premises analytics. All data in Industrial DataOps is available to every consumer in the same information model over different standard interfaces: OPC UA for the MES, REST and i3X for IT applications, MQTT for a Unified Namespace, and MCP for AI agents.
On top of that, the rest of the stack assembles from well-known components. For example, the Forge Grafana Plugin covers operational dashboards directly at the plant. The analytics platform—Microsoft Fabric, Snowflake, or Databricks, depending on where your IT organization already lives—receives modeled, validated production data via MQTT or REST, ready to be joined with ERP and logistics data without having to redo tag mapping for every new project.
What this does not mean
PLCs and DCS systems are not going anywhere, and nothing here suggests moving control to the cloud, not a progress I think I’ll see during my active career.
Likewise, there are regulated industries where raw data must be stored for decades as a legal requirement, but instead of using dedicated Historians, this can be done at a fraction of the cost with an open database if the only use case is data storage. At the same time, it’s fair to admit that dedicated Historians outperform general-purpose time-series databases in raw storage efficiency and query performance.
And a good MES still earns its place; the point is to let it handle orchestration rather than plumbing.
A DataOps layer narrows the gap by handling aggregate calculations and applying compression rules to aging data, but it does not eliminate it. For most plants, the difference no longer justifies the cost and lock-in of a proprietary archive; disk is cheap, and the retention periods are shorter than people assume, but if your use case not just storing, but also actively querying data of extreme tag counts with high-resolution storing intervals, the classic Historian still has a technical edge worth weighing.
The change is not about removing layers, but about letting each layer do the job it is good at, while a dedicated DataOps layer takes over the work that today is spread across all three.
Conclusions
The traditional PLC–Historian–MES stack solved the problems of its time. The problems have changed: control programs are weighed down by business logic that belongs elsewhere; the same plant is modeled twice in the Historian and the MES; MES integrations rest on customizations whose builders have long since left; and analytics needs all the business data in one place rather than in a site-local archive. An Industrial DataOps layer between control and everything else answers all three at once, and as I argued in my previous post, it should be built on open information models so that the most expensive part of the work, the modeling, stays yours.
If you are planning where your own factory’s architecture should go next, or want to evaluate Forge as the DataOps backbone of that architecture, feel free to contact me directly at pyry.gronholm@prosysopc.com or through our contact form.
Pyry Grönholm
CEO
Email: pyry.gronholm@prosysopc.com