
The Strolch PLC architecture sees the Strolch Agent as the server, managing logical devices, i.e. multiple sensors and actors together and thus deciding on further steps. With this architecture multiple PLCs can be combined in one agent for flow control.

On the agent side the two main classes are the PlcGwServerHandler and the
PlcGwService
The PlcGwServerHandler handles connections from remote PLCs over WebSockets and
sends the requests to these PLCs. A PlcGwService instance will be notified and
can then decide on an action. In an execution model with Activities, the
PlcNotificationListener interface can be implemented, or the PlcExecutionPolicy
can be directly extended.
On the PLC side, the PlcGwClientHandler is optional if no agent is required. The
PlcHandler initializes the model and connections. The Plc class is Strolch
agnostic and manages the connections and notifies PlcListener instances on
changes coming from the underlying connections. The PlcService implementations
implement business logic, and can also be notified on updates from connections.