Java Reference
In-Depth Information
import
java.rmi.*;
import
java.rmi.server.*;
public interface
SumInterface
extends
java.rmi.Remote {
public int
sum(
int
a,
int
b )
throws
java.rmi.RemoteException;
}
public class
SumImplementation
extends
UnicastRemoteObject
implements
SumInterface {
public int
sum(
int
a,
int
b ) {
return
a
!
b;}
}
public class
Server {
public void
execute() {
SumImplementation sumImpl
#
new
SumImplementation();
Naming.bind( "Adder", sumImpl );
}
}
public class
Client {
String serverIP
#
"193.211.32.3";
String adderUrl
#
"//"
!
serverIP
!
"/Adder" ;
public void
execute() {
SumInterface adder
#
(SumInterface) Naming.lookup( adderUrl );
int
result
#
adder.sum(5, 8);
}
}
does not offer such support. For the sake of simplicity, we use the RMI
mechanism as the common distribution mechanism for the interconnection
of every remote object in the SCADA system. Figure 13.11 depicts the class
diagram of Prototype 2. Class
TankController
represents the PLCs that
control the colour tanks. It invokes the methods of class
Pump
and class
Tank
defined in
PumpInterface
and
TankInterface
using the RMI mechanism.
Class
MixerController
extends class
TankController
, since it controls the
mixture tank and its pumps and in addition it interacts with the colour tank
controllers. For this purpose, class
TankController
implements the remote
interface
ControllerInterface
that exports method
openPump()
. This method
is invoked by the mixture tank controller to request the colour tank
controllers to supply paint flows. The same interface is implemented by class
MixerController
, as the supervisory console will need to invoke the
openPump()
method to open the spray pump. In Figure 13.11 we have drawn
dashed lines to highlight the distribution of classes on different sites. The
arrows that cross a dashed line indicate that the interaction between two
classes is implemented using the Java RMI mechanism.
Both
TankController
and
MixerController
implement interface
Runnable
as
they manage an independent thread of control that executes their behaviours.
Decision point
How do PLCs and work cell devices handle synchronization of their behaviours?