affecting the software in a less obvious way. For
brevity, the following items (that each deserves one
paper) are very shortly described without references:
a) Driven by time or events: EtherCAT, TTP, and
RTNet are time driven while ThrottleNet and
normal socket connections naturally forms
event driven communication. Combinations?
b) Exposing services or data: Configuration
methods and operational state, RPC or REST?
c) Operating peer-to-peer or master-slave: Is an
EtherCAT slave PC node a slave or a peer?
d) Connecting peer-to-peer or client-server:
Server socket in server, client, or p2p software?
e) Topology as star or ring: Implications on
predictability, reliability, resources and cabling?
f) Connection-based or datagram channels:
How to deal with the tradeoff between
performance and reliability/simplicity?
g) Synchronous or asynchronous: Both events
and calls can be both. Best practices and APIs?
h) Bidirectional or one-way: Should there be a
built-in support for handling event replies, for
unreliable low-cost means of communication?
i) Hot-plugging or reset: EtherCAT connected to
an end-effecter via tool exchanger, is a commu-
nication dip during tool changing acceptable?
j) Predictable or best-effort: Specification of
performance requested or obtained, but what
does it mean for the application software?
k) Dependable or fail-safe: SME robots only need
to be failsafe or are there mission-critical cases?
l) Guarded or collaborating nodes: Does
human-robot space-sharing imply a need for the
‘babbling-idiot’ protection as in TTP.
Since not all this complexity should be exposed in a
complete API (that nobody would use), we need:
o Tradeoffs such that the most critical and
common cases are well supported, for instance
by suitable default configurations.
o Abstractions in layers and a guide such that only
a few types of configurations are needed in
actual scenarios. Integration with model-driven
design tools is desirable.
o Ontology-based definitions of the communi-
cation model, including formal definitions of
items a to l above. Today standards and
definitions are only expressed in documents (for
humans) and code (for computers), but there is
no meaning including semantics that is
understandable by both humans and machines,
which is necessary for application-level PnP.
o Open source reference implementation working
with some generic devices. Different vendors
will then adopt the software (or perhaps re-
implement in other languages and for other
platforms) but agreements and specifications
need to be with respect to actual runnable code.
Suitable tradeoffs with respect to embedded
distributed software for robot work-cell devices
should primarily suit low-cost solutions as needed
for SMEs. Our research indicates that the following
decisions are appropriate:
A. Real-time data-flows should be based on one-
way data streams that from a programming
point of view is equal to an event or message
stream, but only resource use should be defined
programmatically (e.g. by providing a
maximum size message and a maximum
frequency) and no configuration of
communication profiles should go into the
application code.
B. There needs to be a binary version of the real-
time data flows, with complete description of
message types when a connection is established
but with only minimal binary information
during real-time operation. That way most
control messages fit into Ethernet frames and
low cost raw Ethernet can be used for
predictable communication.
C. Real-time RPC, RMI, CORBA method calls, or
web services, should not be permitted, at least
not the standard IDL way. If permitted, the
underlying asynchronous operation should be
explicit, meaning that there is a call object that
can be queried for completion, errors, etc.
D. Non-real-time network traffic should be
possible to do in the same way as for real-time
communication, but in this case synchronous
method calls could map (automatically) to RPC
calls or web services.
E. All encapsulated entities used by the real-time
parts of the application should be resource
aware; real-time is just a special case of
resource limitations (namely CPU power and
the scheduling of it), so also memory usage and
IO bandwidth allocation should be taken care of
in a structured way.
F. The use of safe languages such as Java and C#
should be used for improved modularity and
robustness of hand-written code. Unsafe
languages such as C++ should not be used for
flexible dynamic parts of systems since the risk
for dangling pointers and crashes get too high.
G. All systems should (without extra engineering)
run on standard desktop computers for
simulation and debugging purposes, then
without real-time performance but with full
concurrency using a virtual time scale.
There will of course be no power to enforce the
decisions above and standardization via a committee
would not work; freely available implementations of
selected abstraction must be the most simple and
efficient way of building systems, and thereafter de-
PLUG-AND-PRODUCE TECHNOLOGIES REAL-TIME ASPECTS - Service Oriented Architectures for SME Robots
and Plug-and-Produce
253