The colour tank controllers close the output pumps when the mixture
tank reaches the maximum threshold.
Prototype 3: The supervisory station
The third prototype deals with the interconnection of the supervisory
station with the PLCs. The result is the fully distributed SCADA system that
allows the technician responsible to control the car painting process from a
The supervisory console is a graphical user interface that runs on a net-
worked computer, displays relevant process data and events, and provides
the technician with tools to operate the car painting work cell. Prototype 3
implements a simplified version of a real-world supervisory console. In
particular, the console allows the technician to select a paint tonality and
the output flow of the spray pump. The console is directly interconnected
with the PLC that controls the mixture tank (i.e. Prototype 3 does not use a
central database for the exchange of process data between the distributed
components of the SCADA system).
The mixer controller is in charge of controlling the paint mixing in order to
obtain the desired colour tonalities as specified by the technician responsi-
ble through the graphical interface of the supervisory console. Therefore,
the mixer controller must export two new methods that are invoked by the
remote supervisory console, that is void setColor (int r, int g, int b) and
boolean colorReady () . The first method sets the values of the three funda-
mental colours corresponding to the desired tonality. The other method
returns the value “true” when the mixing process has been completed and
the new colour is ready. The class diagram in Figure 13.12 includes the new
interface MixerInterface that extends ControllerInterface and is implemented
by class MixerController .
Class Supervisor obtains a remote reference to the MixerController using
the RMI mechanism.
The first step towards the interconnection of the mixture tank controller with
the supervisory console is the extension of class MixerController with the
implementation of methods setColor() and colorReady() . Since both methods
are invoked by the remote supervisory console, they need to be declared in
a remote interface. Thus, we introduce interface MixerInterface that extends