What is a PLC? How It Works, How It Is Programmed and How to Get Data Out
A programmable logic controller (PLC) is an industrial computer that controls a machine or a plant according to a stored program. It reads its inputs, runs through the user program and then sets its outputs, over and over. This scan cycle repeats every few milliseconds. It makes a PLC’s timing predictable, and it is the reason you cannot simply query a PLC the way you would query a database.
- Stands for
- programmable logic controller
- German
- SPS (speicherprogrammierbare Steuerung)
- Definition
- Industrial computer that controls a machine or a plant
- Scan cycle
- Read inputs, run the program, set outputs
- Designs
- Compact PLC, modular PLC, soft PLC
- Languages
- LD, FBD, ST (IEC 61131-3)
- Level
- Control level; Level 2 in ISA-95
- Connectivity
- OPC UA, MQTT, S7 protocol over RFC1006
What is inside a PLC?
Three designs are common, and the choice has consequences for connectivity.
| Design | What it is | Typical use |
|---|---|---|
| Compact PLC | A single unit with a fixed number of inputs and outputs | Small plants, stand-alone machines |
| Modular PLC | A rack with modules added as needed | Production lines, larger plants |
| Soft PLC | Control software running on an industrial PC | Where computing power or connectivity comes first |
For connectivity, the design matters less than which communication modules are installed. A modular PLC from the nineties with a retrofitted communication module may well speak Ethernet, which makes it easier to connect than a compact PLC ten years newer that simply has no slot for one. When assessing a fleet of machines, it therefore pays to look inside the racks first and at the nameplate second. This is especially true where plants have been extended over the years rather than replaced.
PLC or SPS: what is the difference?
None, apart from the language: SPS is the German abbreviation for speicherprogrammierbare Steuerung, a name that set it apart from the earlier hard-wired controllers, in which the logic lived in the wiring. It is the term you meet in German documentation and at German suppliers, and it is also the name of an international automation trade fair, SPS – Smart Production Solutions, held in Nuremberg every November.
In Germany, SPS is searched around 14,800 times a month and PLC 5,400 times; in the US, PLC comes to around 40,500 searches a month (Google monthly average, collected in September 2026). The German figure for SPS does not separate searches for the controller from searches for the trade fair.
How do you program a PLC?
The current edition of the IEC 61131-3 standard (IEC 61131-3:2025) describes three programming languages: Ladder Diagram (LD), which looks like an electrical circuit diagram, Function Block Diagram (FBD) with graphical blocks, and Structured Text (ST), which resembles a high-level programming language. Sequential Function Chart (SFC) structures a program into steps and transitions. The former Instruction List (IL) is no longer part of the standard, but it still runs in many existing plants.
For connectivity, the language matters less than addressing. At Siemens, addressing changed fundamentally with the S7-1200 and S7-1500; more on that below.
Which level does the PLC sit on?
In the automation pyramid, the PLC sits at the control level. Below it is the field level with sensors and actuators; above it, the supervisory level with HMI and SCADA. ISA-95 counts differently and places controllers at Level 2, above Level 1 with sensors, actuators and valves.
This hierarchy describes responsibilities; it no longer describes data paths. An ERP system can talk to the supervisory level and also directly to the controller, when the order status is needed as of now rather than as of last night.
More on the levels: What is ISA-95?
How do you get data out of a PLC?
Which route is open depends on the generation of the controller, the model and the communication interface that is installed and enabled. This shows most clearly at Siemens, where addressing changed with the S7-1200 and S7-1500. The table therefore shows the Siemens generations. Whether controllers from other vendors have OPC UA, built in or via an add-on module, and which driver connects to them, is shown in the overview further down under “The translator: from PLC protocol to OPC UA”.
| Siemens generation | Access route | What it means |
|---|---|---|
| S5 | AS511, 3964R over a serial interface | Needs a driver, slow, but doable |
| S7-300 / S7-400 | S7 protocol (RFC1006, ISO-on-TCP) via the built-in Ethernet port of later CPUs (PN/DP) or a CP 343-1 / CP 443-1 communications processor | Access through fixed memory addresses in data blocks |
| S7-1200 / S7-1500 | The controller’s built-in OPC UA server, an OPC server with access to optimized data blocks, provided its driver supports the CPU’s firmware, or the classic S7 protocol | Symbolic access through OPC UA or the OPC server; the built-in server requires a license. The classic protocol reads fixed addresses, so no optimized data blocks |
Why the S7-1500 has its own OPC UA server
The reason lies in addressing, and it explains the break between generations.
On the S7-300 and S7-400, variables sat at fixed memory locations in data blocks and memory bits. An external system could read these addresses directly because they did not move. The RFC1006 method is built on that.
The S7-1200 and S7-1500 brought symbolic addressing. Programmers no longer have to place their variables at fixed memory locations, and in optimized data blocks the variables no longer sit at a predictable position at all. For programming, that is progress. For external access, it is a break: the address you wanted to read no longer exists in that form.
The built-in OPC UA server solves this by exposing the symbolic names to the outside. Instead of “data block 12, word 4”, you read Line3.Oven.Temperature. A change to the program then no longer breaks the connection unnoticed.
Two things to check: the controller’s OPC UA server requires a runtime license, and it has to be enabled in the device configuration. Without a check beforehand, both only surface in the middle of the project.
An OPC server in front of the controllers, used instead of the built-in server, gives you a uniform symbolic view of every controller it has a driver for, including older ones. On controllers with fixed addresses, such as the S7-300 and S7-400, the names do not come from the controller; they are created in the OPC server. For this case, OPC servers offer dedicated Siemens driver suites.
The S7-1200 and S7-1500 can also be addressed through the classic S7 protocol; an OPC server lists them in its Siemens Ethernet driver for that purpose. The same applies as with the S7-300: fixed addresses are read. Optimized data blocks cannot be reached this way, so the values have to sit in a non-optimized block. In addition, according to Siemens, “Permit access with PUT/GET communication from remote partner” must be enabled under Protection & Security in the CPU properties; otherwise the controller rejects read and write requests. According to its manual, the Kepware Siemens TCP/IP Ethernet driver also requires the protection level “Full access (no protection)”, because it does not support passwords.
The translator: from PLC protocol to OPC UA
Every controller speaks its vendor’s protocol, such as the S7 protocol, Modbus or EtherNet/IP. An OPC server translates it into OPC UA: downward, it talks to each controller in that controller’s protocol; upward, it exposes all values in one uniform OPC UA view. Behind it, the OPC Router can take over as an OPC UA client and pass the values on to ERP, MES or a database.
Across vendors, this is what Kepware Server (KEPServerEX up to version 6.18) does, with more than 150 drivers for over 300 protocols. Kepware Edge is the container version for Linux, which can be rolled out in a standardized way and managed centrally.
Whether translation is needed depends on the controller. Some have an OPC UA server built in, others get one through an add-on module, and for the rest an OPC server does the translating. The table shows this for the controller families of the four large vendors: according to Interact Analysis (2019 report), Siemens, Rockwell Automation, Mitsubishi Electric and Schneider Electric together account for nearly three-quarters of the global PLC market (74.3%). Modbus in its variants and controllers with a CODESYS runtime, with WAGO as the example, complete the table. The information comes from the vendors’ data sheets and manuals.
| Controller family | OPC UA in the controller | Requirement | Kepware driver |
|---|---|---|---|
| Siemens S7-1200 (first generation) | built in | Firmware V4.4 or later, runtime license “SIMATIC OPC UA S7-1200 Basic” | Siemens S7 Plus Ethernet (manual lists firmware up to 4.6), Siemens TCP/IP Ethernet, OPC UA Client |
| Siemens S7-1200 G2 | built in | Data sheet of the CPU 1214C G2 with firmware V4.1 lists the server, runtime license “Basic” | OPC UA Client; native drivers not listed |
| Siemens S7-1500, including ET 200SP CPUs | built in | Firmware V2.0 or later, runtime license “SIMATIC OPC UA S7-1500” small, medium or large depending on the CPU | Siemens S7 Plus Ethernet (manual lists firmware up to 3.0.x), Siemens TCP/IP Ethernet, OPC UA Client |
| Siemens S7-300 / S7-400 | S7-400: via add-on module, S7-300: not listed | S7-400: CP 443-1 OPC UA communications processor, listed as a spare part | Siemens TCP/IP Ethernet |
| Siemens LOGO! 8.4 | not listed | Data sheet lists MQTT and cloud connection | not listed |
| Rockwell ControlLogix 5580, CompactLogix 5380, also GuardLogix 5580 and Compact GuardLogix 5380 | built in | Firmware V36 or later, server has to be enabled; with V36 not on 1756-L81E, 5069-L306ER or in redundant systems | Allen-Bradley ControlLogix Ethernet |
| Rockwell, older Logix, such as ControlLogix 5570, CompactLogix 5370 | not listed | – | Allen-Bradley ControlLogix Ethernet |
| Rockwell Micro800 | not listed | Manual describes OPC via FactoryTalk Linx, CIP symbolic from firmware 7.011 | Allen-Bradley Micro800 Ethernet |
| Mitsubishi MELSEC iQ-R | via add-on module | RD81OPC96 server module | Mitsubishi Ethernet |
| Mitsubishi MELSEC iQ-F | via add-on module | FX5-OPC module | Mitsubishi Ethernet |
| Mitsubishi MELSEC Q, L | via an add-on module in an iQ-R | RD81OPC96 in an iQ-R polls Q CPUs (Q mode) and L CPUs as target devices | Mitsubishi Ethernet |
| Schneider Electric Modicon M580 | via add-on module | BMENUA0100 module | Modbus Ethernet |
| Schneider Electric Modicon M241 | built in | Configured in Machine Expert | Modbus Ethernet |
| Modbus TCP | depends on the device | – | Modbus Ethernet |
| Modbus RTU, Modbus ASCII (serial) | depends on the device | – | Modbus Serial, Modbus ASCII |
| Modbus RTU over TCP (encapsulated) | depends on the device | Serial device on a terminal server | Modbus Serial with Ethernet Encapsulation |
| Modbus Plus | depends on the device | Adapter card in the PC or Ethernet-to-Modbus Plus bridge | Modbus Plus; via the bridge, Modbus Ethernet |
| CODESYS-based controllers | provided in the CODESYS runtime, depending on the device firmware | According to CODESYS, set up in the project with the CODESYS Communication add-on; for SoftPLCs from the CODESYS Store, a “CODESYS OPC UA Server SL” license or an application-based runtime license | CODESYS Ethernet |
| WAGO PFC200 G2, PFC300, CC100 | built in | PFC200: CODESYS OPC UA server from FW 24 (04.02.13), FW 23 without a server, FW 18 to 22 (e!COCKPIT) with WAGO’s own server; PFC300: firmware with CODESYS 3.5; CC100: data sheet lists OPC UA server/client, but no firmware version, and the release notes refer to those of the PFC200 | CODESYS Ethernet, Modbus Ethernet |
“Built in” means that the server runs in the controller itself, in the CPU of a modular PLC. Where it runs on a separate module next to the CPU, the table says “via add-on module”. “Not listed” means that the vendor documents consulted do not list an OPC UA server or a driver. Where the Requirement column shows no license, that does not mean none is needed. Modbus is a protocol, not a controller: the Modbus Organization’s specifications define no mapping to OPC UA, and whether a device also has an OPC UA server depends on the device.
The manual for the Siemens S7 Plus Ethernet driver (version 1.052, from 2026) lists supported firmware up to 4.6 for the S7-1200 and up to 3.0.x for the S7-1500. Later firmware, such as V4.7 on the S7-1200 or V3.1 through V4.1 on the S7-1500, is not listed there.
“Built in” does not mean unlimited: for the S7-1200 with firmware V4.5 through V4.7 and for the S7-1200 G2, Siemens specifies a maximum of 10 sessions and 1,000 monitored items, the 1,000 given in the data sheets as a recommended maximum.
What if the controller is older than the requirement?
The translation layer from the previous section covers this case, and it has a second benefit: when a controller is replaced, that layer changes, and the ERP system behind it stays untouched. A case with a switch from S5 to S7 is described below under “What does this look like in real plants?”.
Which protocols does a PLC speak?
The protocols fall into two groups.
Fieldbus protocols connect the controller with its devices, for example PROFINET, PROFIBUS, EtherCAT and Modbus. They are designed for short distances and fixed cycle times.
Connectivity protocols link the controller to IT, for example OPC UA and MQTT; proprietary ones such as the S7 protocol over RFC1006, which newer Siemens controllers still speak as well; and in some cases direct database access. OPC UA and MQTT are designed for structure and security rather than short cycle times.
Where the controller and the IT system have no protocol in common, a translator sits between them, described above under “The translator: from PLC protocol to OPC UA”.
More on this: What is OPC UA? · What is MQTT?
What problems come up in practice?
A PLC works through its scan cycle and answers requests from outside within the share that communication gets. Its scan keeps running between the individual telegrams of a read request. The main consequence is that several values read together do not necessarily come from the same scan, even when everything is set up correctly. Planning questions add to this: how the interface is laid out, and how often each value is read.
Individual values arrive without context
There is no transaction boundary between the PLC and the system reading from it. A read request covering several values is split into one or more TCP telegrams. The controller answers each from whatever its memory holds at that moment. Between two telegrams, its scan cycle keeps running, possibly several times.
The result: the values may not all come from the same scan. The order number may come from scan 4711 and the matching quantity from scan 4713. With classic access routes such as RFC1006, nothing in the protocol stops this, and nothing flags it. The record looks complete but is internally inconsistent.
Reading ten values is therefore not the same as reading one record.
The error only occurs when a value changes between two telegrams, so not on every read request.
What helps. The fix has two halves, and the first lies in the controller. At a defined point in its cycle, the PLC copies the values that belong together into a separate data area, a kind of snapshot. Only then does it signal that the data may be read. That logic lives in the PLC program, and no tool on the IT side can replace it: only the controller program defines the point in the cycle at which the values are consistent with each other.
The second half lies on the IT side: the OPC Router reads the data area only after this signal and acknowledges once the transfer has succeeded, as described below under “How do you get consistent data from a PLC?”.
The effort is thus split between both sides. In the controller, it includes a data area that stays unchanged until the acknowledgment, setting the trigger and, with a Bit Trigger, resetting it after the response, plus a timeout that resends when no response arrives and reports an error after several failed attempts. In the OPC Router, it is configuration rather than programming.
Poorly laid-out interfaces create network load for nothing
Not every protocol between a PLC and an OPC server supports notifications. Where there is no subscription, polling is the only option: the server asks at fixed intervals, even when nothing has changed since the last request.
That is manageable as long as the interface is laid out contiguously. If the required values sit in one continuous data area, a single request fetches them all at once.
If they are scattered, one request becomes a dozen. Each one costs a telegram, a response and a share of the controller’s communication time. The result is long network cycles for a handful of values.
The layout of the interface is therefore a performance question. The data area is best defined together with the PLC programmer before the first connection is configured. Changing it later is expensive because both sides have to be touched.
The layout makes the biggest difference: contiguous areas instead of scattered individual addresses reduce the number of requests. That is work in the controller.
Then there is the method: where the protocol supports subscriptions, as OPC UA does, the controller reports changes itself instead of being asked. The S7-1200 and S7-1500 can do this through their built-in OPC UA server. Older controllers still have to be polled. An upstream OPC server only moves the polling to a single place, as the next paragraph explains.
Finally, bundling through an upstream data broker, described below under “The PLC runs the machine. Communication gets its share”. It reduces the load on the controller even when the protocol underneath has no subscriptions and polling continues, because only the broker polls the values that the consumers have subscribed to there.
The PLC runs the machine. Communication gets its share
A PLC’s main job is the machine. Its real-time requirement applies to the scan cycle: read inputs, run the program, set outputs, and do it reliably within a fixed time. Communication gets a limited share of that time.
The controller determines how large that share is. Depending on the vendor and model, the share is configurable, or a separate processor handles communication. On Siemens S7-1500 controllers, for example, the share is a CPU parameter, and according to Siemens, organization blocks with a higher priority interrupt communication. Whatever part of its share communication does not use is available to the user program. If the share is used in full, the cyclic part of the program takes longer, up to twice as long at a share of 50 percent. According to Siemens, the default depends on the CPU type and version. A smaller share reduces that extension. Siemens’s function manual “Cycle and response times” (edition 11/2024) recommends factoring the communication load into the maximum cycle time.
Polling density is therefore a planning parameter, and it is set on both sides: in the controller through the communication share and the cycle time, and on the connection side through how often and in what way values are read. This dictates the order of work: first determine which values are needed and at what rate, then design the connection around them.
The load drops when fewer systems ask and when they ask less often, wherever the value allows it. If a database, a dashboard and an MES need the same values, the controller does not have to deliver them three times. An upstream data broker, such as an OPC server or middleware, reads subscribed values once and serves all three consumers from the same request. Individual reads and writes from a consumer, on the other hand, can still go through to the controller: according to its manual, the Kepware Siemens S7 Plus Ethernet driver, for example, can be set not to poll subscribed values faster than a configured rate, but it processes individual reads and writes as soon as possible, regardless of that setting. One decision stays with the plant, and no software can make it: how often each value is actually needed. A temperature that changes every two minutes does not need to be read every second.
How do you get consistent data from a PLC?
The remedy for values from different scans is a handshake: the controller signals that a record is complete and receives an acknowledgment. For several values that belong together, the OPC Router provides two triggers: the Bit Trigger for individual events and the Message Trigger for sequences of records in which a gap should be noticed. With both, the OPC Router waits one more read cycle after the trigger fires before it reads the record, so that the PLC has had time to write all values.
The Bit Trigger is a data point the PLC sets once the values have been completely written. Only then does the OPC Router read them. The manual requires the Bit Trigger to be used with a response bit at all times and gives this reason: if the trigger data point in the PLC changes twice within one read cycle, the OPC Router does not detect the second change. The associated transfer does not take place, and neither does the response bit. If the PLC waits for the response with a timeout, it detects the failure and can send again.
The Message Trigger is, according to the manual, the more reliable of the two, because it uses a counter instead of a bit, the telegram number: the PLC increments it by 1 whenever a new record is ready, and the OPC Router can respond through a data point of its own. If the counter value is logged along with the data, you can trace later whether records were missed or transferred twice, for example when the counter jumps from 5 to 7 or the same counter value is logged twice. That serves traceability and diagnostics. Avoiding a gap is the PLC’s job: it writes the next record only after the response, and resends if no response arrives within a timeout.
The order of steps in the PLC is always the same: write all the values that belong together first, then set the trigger. The OPC Router’s extra read cycle does not replace this: if the trigger is set first, the reader can still pick up an intermediate state.
How does a PLC report back to ERP or MES?
This is a typical case for the Message Trigger.
The controller writes the values that belong together into the designated data points, such as material number, order number, quantity produced, quantity consumed and timestamp. Only then does it increment the message counter. The OPC Router detects the new counter value, reads the complete record and passes it to the ERP system. It then reports back to the PLC through the response data point that the confirmation has been handed over.
A label specialist, according to its user story on opc-router.com (undated; the company figures in it are from 2017), linked 14 machines to SAP through the OPC Router, with around 15,000 data telegrams a day and posting times below 15 milliseconds. SAP sent formulations and production speeds to the machines, and the machines reported flawed areas back. According to the story, the link to SAP ran over RFC with a handshake.
The return channel, writing orders to a PLC, is technically the same as reading, but organizationally it is something else: who is allowed to write, what happens in a conflict, and what the plant does when the connection is down. These questions belong in commissioning.
In the OPC Router, connections between controllers and ERP, MES or databases are configured graphically, with triggers, handshakes and the return channel as building blocks. The video tutorials walk through the configuration, and you choose the topics yourself when you request them. The data area, trigger and timeout stay in the PLC.
What does this look like in real plants?
A manufacturer of outdoor power equipment, according to a user story on opc-router.com (published in German in 2019), tested motor units in up to nine parallel test cells at the end of an assembly line, with test sequences lasting up to five minutes. The plant used Siemens Simatic PLCs, Sinumerik CNC, Simotion and robots. The story names 16 installations in Germany, plus the plants in the USA and China, with one OPC Router per assembly line and its own local database server. Here a connection was designed once and replicated as a pattern.
A bicycle manufacturer, according to its user story on opc-router.com (undated), first connected the Siemens S5 controller of its electric overhead conveyor to the OPC Router via an IBH interface. About a year later it switched to a Siemens S7 controller and took the changeover as an opportunity to restructure its data transfers.
An automotive supplier, according to its user story on opc-router.com (undated), manufactured car flooring systems for just-in-time and just-in-sequence delivery, with a wide range of variants and complete traceability. There, the PLCs of all stations were connected through one OPC server, and the OPC Router handled communication with SAP.
A container terminal group, according to its user story on opc-router.com (undated), connected handling equipment and facilities, that is, large mobile equipment rather than stationary machines.
A packaging manufacturer, according to a German-language user story from 2020 on kepware-opcserver.de, connected around 500 machines from different vendors in eleven plants, including injection molding machines, with Kepware servers in the plants and the OPC Router installed centrally.
More examples, sorted by industry, are collected in the international use cases on opc-router.com (page dated August 2026).
How much data can a connection handle?
The benchmarks in the OPC Router manual give some reference points for the path from the OPC server to the target system:
| Setup | Throughput |
|---|---|
| 640,000 OPC data points every 30 seconds over four OPC connections | about 21,200 data points per second |
| 32,000 tags across 160 template instances, triggered on data change | about 28,500 data points per second |
| 1,000 flows with 10 data points each, pushed to the performance limit | more than 19,500 tags per second |
The measurements were taken with an older version of the OPC Router against simulated OPC servers, not against controllers, and the targets were MQTT and InfluxDB. The figures mark the limit of each test setup: at 21,200 data points per second, some values were already being lost, and at 28,500 the OPC server was the limiting factor. What a specific plant can handle depends on the controller, the network and how many values are really needed, among other things. Load also comes from a read interval that is too short for values that rarely change.
Frequently asked questions
Your question is not listed? Our team will be glad to answer it.
What is a PLC?
An industrial computer that controls a machine according to a stored program. It reads its inputs, runs the program and sets its outputs, in a cycle that repeats every few milliseconds.
What does PLC stand for, and what is an SPS?
PLC stands for programmable logic controller. SPS is the German term for the same thing, speicherprogrammierbare Steuerung. In Germany, SPS is also the name of the automation trade fair held in Nuremberg every November.
Which languages are used to program a PLC?
IEC 61131-3:2025 describes three: Ladder Diagram (LD), Function Block Diagram (FBD) and Structured Text (ST). Sequential Function Chart (SFC) structures a program into steps and transitions. Instruction List (IL) is no longer part of the standard but still runs in existing plants.
How do you read data from a PLC?
Through a connectivity protocol such as OPC UA. Which route is open depends on the generation, the model and the enabled interface. At Siemens: older controllers through drivers and fixed addresses, the S7-1200 and S7-1500 through their built-in OPC UA server or an OPC server with symbolic names, or through the classic S7 protocol on non-optimized data blocks. If the controller does not speak OPC UA, an OPC server such as Kepware Server translates its protocol into OPC UA.
Why does the S7-1500 have a built-in OPC UA server?
Because symbolic addressing and optimized data blocks do away with the fixed memory addresses the older access method relies on. The OPC UA server exposes the variable names instead. The other route is an OPC server with access to optimized data blocks, provided its driver supports the CPU’s firmware.
Why can values read from a PLC come from different scan cycles?
Because there is no transaction boundary between the PLC and the reading system. A read request is split into one or more TCP telegrams, and the controller’s scan cycle keeps running between them. Values requested together therefore do not automatically form a consistent record.
Does a connection put load on the PLC?
Within limits the controller sets. Communication gets a limited share of processing time, configurable depending on the controller, or a separate processor. If that share is used up, the cyclic part of the program can take longer. How densely the controller is polled is therefore part of the planning.
Why does PLC polling create so much network traffic?
If the protocol has no notifications, the values have to be polled. If the required values are then scattered instead of sitting in one contiguous data area, one request becomes a dozen. Read intervals that are too short and several systems polling the same controller separately add to it.
How do you get consistent data from a PLC?
With a handshake: the PLC writes all the values first, then signals that the record is complete and receives an acknowledgment. In the OPC Router, a Bit Trigger or a Message Trigger is configured for this. A Bit Trigger needs a response bit, so that the controller can detect a failed transfer through a timeout. The Message Trigger, the more reliable of the two according to the manual, works with a counter that the PLC increments for every new record. If its value is logged, you can trace whether records are missing or were transferred twice.
Can you write data to a PLC?
Yes. Technically, it is the same as reading. Organizationally, three questions need answers first: who is allowed to write, what applies in a conflict, and how the plant behaves when the connection is down.
- What is ISA-95?The Five Levels, IEC 62264 and the Automation Pyramid
- What is a Manufacturing Execution System (MES)?Functions, MES vs. ERP, and Interfaces
- What is SCADA?Components and How It Differs from HMI, MES and DCS
- What is an HMI?Human-Machine Interfaces, Web HMI and IT Integration
- What is IEC 62443?Zones, Conduits and Security Levels Explained
- Connecting to a Unified NamespacePublishing and Consuming Shop-Floor Data
- What is a Distributed Control System (DCS)?
- What is an Industrial Historian?The Historian Database for Process Data