ABSTRACT
It is critical in todays enterprises that manufacturing facilities are not isolated from design, planning, and other
business activities and that information flows easily and bidirectionally between these activities. It is also important and
cost-effective that COTS (commercial-off-the-shelf) software, databases, and corporate legacy codes are well integrated in
the information architecture. Further, much of the information generated during manufacturing must be dynamically
accessible to engineering and business operations both in a restricted corporate Intranet and on the Internet.
The software integration strategy in the Sandia Agile Manufacturing Testbed supports these enterprise requirements.
We are developing a CORBA-based distributed object software system for manufacturing. Each physical machining
device is a CORBA object and exports a common IDL interface to allow for rapid and dynamic insertion, deletion, and
upgrading within the manufacturing cell. Cell management CORBA components access manufacturing devices without
knowledge of any device-specific implementation. To support information flow from design to planning to
manufacturing, an electronic traveler, itself a persistent CORBA object, has been developed. Thus, design and planning
data is accessible to machinists on the shop floor.
CORBA allows manufacturing components to be easily accessible to the enterprise. Dynamic clients can be created
using web browsers and portable Java GUIs. A CORBA-OLE adapter allows integration to PC desktop applications.
Other commercial software can access CORBA network objects in the information architecture through vendor APIs.
Keywords: distributed objects, CORBA, agile manufacturing, enterprise integration, information architectures.
1. INTRODUCTION
Increasing competitiveness in manufacturing worldwide has spurred efforts to increase production flexibility and
permit rapid setup for smaller lot sizes. Agile manufacturing [8] must support changes in product mix, batch size,
manufacturing processes, customer requirements, and technology and at the same time provide cost-effectiveness, reduced
cycle times, and high quality and accuracy.
An agile manufacturing facility imposes special requirements including support for human interaction with
machining devices, plug-and play of manufacturing devices with little to no downtime in service, ease of upgrading
machine controllers, and information flow into and out of manufacturing devices. Further, this facility itself must allow
for information to dynamically flow both to and from design environments, planning environments (fabrication,
inspection, and assembly), and other business services in an extended enterprise, both within a corporate Intranet and on
the Internet. In practice, the enterprise may span geographic, organizational, and possibly international boundaries;
hence, it is most often heterogeneous with respect to computer platforms, operating systems, network capabilities, and
custom and commercial software.
A robust software architecture is key to achieving agility and to realizing the integration of the extended enterprise.
This information architecture must be scaleable, interoperable, and reconfigurable. Internet technology, web browser
technology, electronic data exchange, and industry standards for interoperability will be core to the infrastructure. It
comes as no surprise that the February 1996 Communications of the ACM devoted an entire issue to the growing role of
computer science and software in manufacturing [14].
This work was supported by Sandia Corporation under Contract No. DE-AC04-94-AL85000 with the U.S. Department of Energy.
as a network connection to the machine controller, allowing programs and control commands to be downloaded
and executed in an automated fashion, and
as an operator console for electronic data to be delivered to the shop floor in support of manual operations, e.g.,
machine setup, or as a guardian interface [11].
The computers in the manufacturing cell include both PCs and Sun workstations.
The cell management activities include scheduling, tracking, and job dispatching to the shop floor. The cell
management software and machine operators need access to design and planning data. Furthermore, information from
fabrication and inspection must be stored, analyzed, and accessible to designers and process engineers at a later time. An
underlying objective of the cell management software is information-driven manufacturing, that is, to first automate the
flow of information to facilitate all those processes which precede and follow the actual machining of a part. Where it
makes sense, the cell management software will also permit the automation of the machining itself.
stored in a database for use by designers and process engineers in the future. In this section, we discuss some of our
design goals, and show how the use of CORBA provides a solution for integrating a manufacturing enterprise.
Object
Object
Tk/Tcl
adapter
X Display
http
adapter
WWW
Browser
Java
adapter
Applet
OLE
adapter
MS Excel
Visual Basic
integration of Java clients; we have used OrbixWeb from IONA Technologies. Some ORB vendors also allow the
implementation of CORBA servers in Java. The OMG has not yet specified a mapping from IDL to Java, however, so
only Java clients supporting IIOP will be transportable across ORBs. Note that not all Java-CORBA integration strategies
will work through a corporate firewall since some may require an open socket connection from the applet to the ORB
daemon. Netscapes LiveConnect allows JavaScript programs to access Java applets and HTML forms, thus enabling
HTML form data to be used as input to a Java applets client program to a CORBA object.
Another method of allowing web access to CORBA objects is by using CGI (Common Gateway Interface) scripts
which are clients to the CORBA objects. This may be helpful when a firewall is an issue. We have successfully used
TclDii as a language for writing CGI scripts. Any executable code, for example, written and compiled in C or C++, can
be used in the CGI. Hence, C, C++, and Java are other options for developing and deploying CGI clients to CORBA
objects. These other papers [10] [11] discuss the integration of the World Wide Web and distributed objects (i.e.
CORBA), and the consensus is that this is a very complimentary and powerful technology integration.
In future releases of Netscape client and server software, Netscape ONE [6], the open network environment, has
announced support for IIOP. Thus any Netscape application will be able to communicate transparently with any CORBA
enterprise application.
Cell Management
Software Components
Software
Interface
...
Machine Tool
Software
Interface
Machine Tool
Network client
Device independent
CDevice class
Device dependent
Lathe
The IDL used throughout this paper is abbreviated. We refer the interested reader to [15] for the complete IDL.
IBaseDev
IAllocDev
IRunDev
IMovePart
The GetProgDB() operation within IDevice returns a value of type IProgDB , which is an object reference to
its database of manufacturing numerical control (NC) programs. This type corresponds to another IDL interface, thus,
the returned object reference can be used to access the database of NC programs available for the device. As discussed in
Section 2.1, IProgDB assumes nothing about the underlying database. Similarly, the GetConsole() function returns
a reference to an IConsole object. This object can be used to access the operators console for the device, enabling
communication with a human operator.
IRunDev
Pause ();
Resume ();
Abort ();
string
The RunThisProgram()operation provides a way to execute a program on a device. When the requested
processing activity is completed, RunThisProgram() returns a string as its value. Not a status value as one might
expect, the return value instead is the information output of the activity. If the downloaded program performs a
machining operation, then the output of the operation is the physical part machined, and the return value is a null string.
However, the downloaded program may be one that causes a lathe to position a touch probe and measure a part to test
conformance to required tolerances while the part is still in the machine [5]. In this case, the principal output of the step
is the measurement data, and the returned string value holds the probe data. This, then, is our mechanism for ensuring
the easy extraction of process information out of manufacturing devices and into the broader information processing
environment: the act of requesting an operation producing such data yields that data as the return value of the request.
This data will then be entered into the electronic traveler (See Section 4.0) for the particular part. A call to
RunThisProgram() returns only when the operation is complete, causing the caller to block during processing. An
asynchronous call StartThisProgram() immediately returns a boolean success/fail value, indicating whether the
operation was successfully initiated. The string output value that would have been returned by RunThisProgram() is
instead posted to the passed INotify object when the operation is completed. Details can be found in [13].
};
Material movement is accomplished with the operations TakeFromPartner() and GiveToPartner(). Using
these operations, direct device-to-device communications affect exchanging a part without micro-management of cell
manager. A robot device, for example, has an object reference to its partner in the exchange (set in a previous call to the
robots SetPartner() operation), the robot object can manipulate the lathe directly. Thus a call to the
GiveToPartner() operation on the robot results in its assuming responsibility for the transfer, invoking operations on
the lathe interface as needed, and awaiting its replies. This kind of peer-to-peer interaction is very natural and easy to
implement with distributed objects, and is a real strength of the CORBA technology.
In the case that the machine does not support automated operation, it still must be a part of the information flow in
the cell. Thus, we still provide an IDevice object for the machine which implements, for example, the
RunNamedProgram() operation. The implementation of this operation is obliged to do whatever is necessary to carry
out the task. In this case, the implementation uses an IConsole interface to perform the operation. The IConsole
interface provides operations needed to carry on a dialog with a human operator. The IConsole interface gives the
machine operator access to the electronic traveler, described in Section 4. The IDevice implementation uses these
operations to request that the operator run the named NC program on the machine, for example.
As seen in Figure 4, from the cell management software perspective, both automated and manual operations appear
the same. This design decision allows us to implement a wider range of manufacturing devices without changing any cell
management software.
Cell Sequencer
RunNamedProgram()
IConsole
IDevice
Cell Sequencer
RunNamedProgram()
IProgDB
IDevice
The attribute CellName contains the name of the manufacturing cell, allowing for several cell sequencers to be
coordinated by a shop floor scheduler. A new job can be added to the sequencer with the AddJob() operation. This
operation takes a ITraveler object reference as an argument. When it comes into the cell, the ITraveler object
will contain all of the necessary information to execute the job, including a script of high-level instructions to be
accomplished in the cell. The AddJob operation also takes an INotify object reference so that the sequencers client
can be notified of job completion or error conditions encountered. The return value of the AddJob() operation is of
type long, indicating the assigned JobID given by the sequencer; this JobID can then be used to Pause(), Abort(),
Resume(), or Delete() a job in the sequencer, even while the task dispatcher is operating. Though the cell sequencer
coordinates cell activities, many operations will be accomplished intelligently by the devices. For example, we have
mentioned that all material transfer is performed as peer-to-peer object interaction, independent of the supervisory control
of the task sequencer.
There are four operations in ICellSeq which allow a client to manipulate devices known to the sequencer:
AddDevice(), AddRobotDevice(), RemoveDevice(), and QueryDevice(). Notice that there are two
different operations to add a device to the sequencer: the AddRobotDevice() is necessary to distinguish robot and
transport vehicles from all other manufacturing and storage devices known by the sequencer. The sequencer must know
if a device is a transport device in order to prevent certain deadlock conditions in the cell. By including operations for
dynamically adding and removing devices in a cell sequencer, the sequencer will never have to be recompiled or restarted
when a new IDevice object is available on the network. In theory, this architecture supports a cell sequencer remotely
dispatching jobs to any IDevice objects.
The current task sequencer is quite simple, with no scheduling optimization criteria. This task dispatcher will be
used by a smart scheduling object (ICellSched). This elaborate scheduler will call ICellSeq to dispatch jobs once it
has optimized on "time", "cost", and "priority" values on jobs. The strength of our CORBA implementation is that the
current interface and implementation of ICellSeq should remain as described above once we add this new component
to the cell management activities.
4. ELECTRONIC TRAVELER
As illustrated in Figure 5, an electronic traveler is a key CORBA component in connecting our manufacturing
environment to the larger enterprise. This allows information from design and planning to flow into the manufacturing
facility, and allows manufacturing data to feedback into the broader enterprise. Traditionally, a traveler is the set of
paper documents (drawings, routing information, signatures) which accompany the part as it is manufactured. An
electronic traveler is a persistent object which contains all relevant part data and information generated during design,
process planning, fabrication, and inspection.
Process
Planning
NC Program: GTS-2
Design
TRANSFER
RUN
Data Base
Machinist Comments
RUN
CMM MeasurePart
TRANSFER
Measurement Report.
xxxx
xxxx
Fanuc MachinePart
TRANSFER
Cell
Manager
Shop
Floor
Figure 5. Electronic Traveler.
RunNamedProgram()
Pause();
Setup();
In short, the traveler object is a persistent CORBA object which contains other object references to part information
accessible in a networked environment, such that designers, process engineers, managers, and machinists can access the
information that they need. There are several advantages to the electronic traveler. First, more complex data (for
example, multimedia data such as video and voice) can be included in the traveler. Second, the traveler can be connected
to PDM systems such that it is archived for future reference. Finally, the traveler can be accessible to many people on a
network, unlike a paper traveler.
The traveler itself is comprised of several CORBA objects; for example, objects which contain contact information on
an engineer, objects which hold manufacturing setup data, objects which describe manufacturing operations, or objects
which contain manufacturing results. The data is stored in databases and PDM systems across the enterprise, yet
logically it appears that the data is stored together. Figure 6 shows a traveler object which contains an object reference to
inspection results that are stored in a database which is geographically distributed from the manufacturing site. CORBA
provides a good infrastructure for building such complex, persistent objects.
Traveler
...
InspectResults
IDevice
IDevice
InspectResults
...
.
Data Base
Data Base
Designers
Manufacturing floor
Outside Suppliers
Figure 7. Use of VRML in a Manufacturing Environment.
In the traveler, were also using Portable Data Format (PDF), viewable on any platform with Adobe Acrobat
software, to view drawings on-line. Both the drawing conversion and the VRML conversion can be done dynamically by
checking out the current drawing from the PDM, converting the file, and displaying it to a user. Translating on-the-fly
guarantees that the most recent version of the drawing is always seen and that all Pro/ENGINEER files do not need to be
translated and stored as VRML. As discussed in Section 2, CORBA facilitates the seamless access to the PDM,
translation from Pro/ENGINEER to VRML, and web browser viewing.
Web
Client
CGI
CMS API
CMS
Data Base
Data Base
CORBA supports integration with many different information technologies: world wide web, OLE, Java, and
different programming languages. In time, as commercial software vendors provide CORBA interfaces to various
software components, it will be easy to integrate them with our developed manufacturing software.
We are continuing to wrap COTS software, databases, and legacy codes, such that they are accessible in our
manufacturing environment. As such, we are working on a framework to integrate engineering and manufacturing
environments. This framework contains common interfaces to applications and data, support for data translators, and
common services. The framework allows many developers to integrate their applications into the same CORBA-based
enterprise.
One of the necessary missing components in our manufacturing environment is security. CORBA does not, at this
time, have built-in security; however, there are efforts underway in the OMG to provide this service. Currently, our
manufacturing devices, electronic traveler, and cell management software are only accessible on our Intranet; in order to
extend this through the corporate firewall, security is an important concern. Finally, we are going to integrate the
electronic traveler with digital signatures, providing an authenticated electronic signature of any work instruction.
6. ACKNOWLEDGMENTS
The authors express gratitude to a number of people at Sandia National Laboratories. Norm Breazeal, now retired,
was a great visionary and supporter for this work. Jim Costa is a program manager for this work. Hisup Park is the
project lead of the SAMT project. Paul Klevgard contributed significantly to the IDevice interface. Robert Hillaire, Jon
Baldwin, and Tony DeSousa are responsible for various implementations of CDevice. Jill Schwegel, Tracy Walker, Paul
Klevgard, Scot Marburger, and Kristen Witthoeft contributed to the implementation of a prototype electronic traveler. Jill
Schwegel, Barry Hess, and Jim Smith have implemented some of the CORBA translators which we use to translate CAD
files on-the-fly prior to displaying them in a browser.
7. REFERENCES
1. G. Almasi, Suvaiala, A., et. al., TclDii: A TCL Interface to the Orbix Dynamic Invocation Interface, Concurrent
Engineering Research Center, West Virginia University, Morgantown, West Virginia, 1994.
2. K. Arnold and Gosling, J., The Java Programming Language, Addison-Wesley Publishing Company, Reading,
Massachusetts, 1996.
3. K. Brockschmidt, Inside OLE 2, Second Edition, Microsoft Press, Redmond, Washington, 1995.
4. The Common Object Request Broker: Architecture and Specification, OMG Technical Document PTC/96-03-04,
Object Management Group, Framingham, Massachusetts, July 1995.
5. A. J. Hazelton, On-Machine Acceptance of Machined Components, Proceedings of the 10th Annual Meeting of
the American Society of Precision Engineering , Austin, Texas, October 1995.
6. Netscape Communication Corporation, The Netscape ONE Development Environment Vision and Product
Roadmap, white paper, Netscape Communications Corporation, Mountain View, California, July 1996.
7. Ousterhout, J. K., Tcl and the Tk Toolkit, Addison-Wesley Publishing Company, Reading, Massachusetts, 1994.
8. R. Nagel, and Dove, R., editors, 21st Century Manufacturing Enterprise Strategy, An Industry-Led View, Iacocca
Institute, Lehigh University, Bethlehem, Pennsylvania, 1991.
9. H. Park, Sandia Agile Manufacturing Testbed, white paper, Sandia National Laboratories, Livermore,
California, January 1996.
10. O. Rees, Edward, N., et. al., A Web of Distributed Objects, ANSA, Cambridge, United Kingdom, November
1995.
11. M. K. Senehi, Barkmeyer, E., et. al., Manufacturing Systems Integration Initial Architecture Document,
NISTIR 91-4682, National Institute of Standards and Technology, Gaithersburg, Maryland, September 1991.
12. A. Vogel, WWW and Java Threat or Challenge to CORBA?, CRC for Distributed Systems Technology,
University of Queensland (Brisbane), Australia, 1996.
13. R. A. Whiteside, Pancerella, C. M., and Klevgard, P. A., A CORBA-Based Manufacturing Environment, to
appear in the Proceedings of the Hawaii International Conference on Systems Sciences , January 1997.
14. M. J. Wozny, and Regli, W. C., guest editors, Computer Science in Manufacturing, Communications of the
ACM, Vol. 39, No. 2, February 1996.
15. http://primetime.ca.sandia.gov/~raw/cell/index.html.