Shop Floor Controller Class Paper

advertisement
A Shop Floor Controller Class for
Computer Integrated Manufacturing
JEFFREY S. SMITH1 and SANJAY B. JOSHI2
ABSTRACT
Computer integrated manufacturing (CIM) has not yet provided the expected benefits for
small to medium volume discrete parts manufacturing operations. Typically, these systems come
in over budget and yet do not provide the promised flexibility. This can be directly attributed to
the high cost of control software development for integrated systems. Reusable software has
been proposed as a solution to the high software development and maintenance costs. One
paradigm for reusable software, object oriented modeling and programming, has emerged as an
important method for specifying, creating, and reusing software modules. This paper describes
an object oriented approach to specifying and developing shop floor controllers for automated
manufacturing environments. Specifically, a shop floor controller class hierarchy has been
developed based on the behavior of specific shop floor equipment and is described in this paper.
User experience has shown that software development time can be significantly reduced through
the use of this controller class.
1 Industrial Engineering Department, Texas A&M Univeristy, College Station, TX.
2
Industrial and Management Systems Engineering Department, Pennsylvania State University,
University Park, PA.
533580448
March 8, 2016
-1-
1. INTRODUCTION
Approximately 50-75% of manufactured parts produced in the United States are produced in
small to medium size batches. The current trend is some industries is to increase this percentage
even more and to reduce the batch sizes to approach single part production. Computer integrated
manufacturing (CIM) has been looked upon as a facilitator of these trends. With the entire shop
interconnected through a computer system, status information will be continuously available and
on-line decision making and control will be possible. However, CIM has not yet provided the
expected benefits in these small to medium volume discrete parts manufacturing environments.
The integration aspect of CIM seems to be the bottleneck. Although the computer hardware,
software, and networking components necessary for CIM are readily available over the counter,
the software necessary to perform integrated control over the individual shop floor components
has not been developed and commercialized. As a result, companies wishing to create CIM
systems must create custom implementations for each manufacturing system. These custom
implementations require not only manufacturing and manufacturing systems experts, but also
computer programming and networking experts. Furthermore, system maintenance and future
modifications to existing systems also requires significant expertise. This makes these systems
virtually out of reach of most of the small companies that could most benefit from CIM.
One solution to these problems is to develop “shrink wrapped” shop floor control software
which can be configured to any specific manufacturing system. This would make CIM available
to virtually any organization much as AutoCAD™ and other commercial CAD packages have
made advanced CAD technology available to anybody. While numerous off-the-shelf CIM
packages have been advertised, many of these appear to be shop floor monitoring packages and
include only minor provisions for shop floor control. Naylor and Maletz (1986) have stated that
the goal of off-the-shelf control software is probably impossible to completely attain, yet
consider that the goal can serve as a focus to work toward. We have been working towards this
goal for several years. In a previous paper, we described this use of existing software as a single
type of software reuse which can be applied to the development of shop floor control systems
(Smith and Joshi, 1992). A more promising approach to this problem is the use of object
oriented development and programming. In this previous paper, the use of object oriented
programming, and, specifically, the development of a shop floor equipment class is also
described. This class simplifies the development of the interface between the physical device
533580448
March 8, 2016
-2-
and the shop floor control system by providing a vendor independent interface based on
equipment type.
This paper presents a new development based on the equipment class. This original class has
been embedded inside a larger shop floor controller class, which exploits the similarities of
controllers at all levels in the control system. Also, the equipment behavior has been explicitly
defined within each class and provisions are provided for extending this class for devices which
exhibit specific behaviors not included in the current implementation. The controller behaviors
are described using a formal model called a message-based part state graph. These desriptions
are implementation independent and provide the input for an automatic software generation tool
(Smith and Joshi, 1993). Control software based on this class has been successfully implemented
in two separate laboratories, and implementation experience has shown that the software
development requirements have been greatly reduced through the use of this class.
After a brief background on object-oriented applications in manufacturing control in Section
2, Section 3 describes the control architecture underlying this work. Section 4 describes the shop
floor controller class hierarchy. Section 5 describes our implementation experience, and Section
6 provides some concluding remarks.
2. BACKGROUND
The term “object-oriented” is used to describe a method of software design and development
in which the system is organized as a collection of discrete objects. The implementation of each
object contains both the data and the behavior (procedures) for that object. In other words, an
object knows what it is and how it is supposed to behave. This is in contrast to conventional
software design where the behavior (procedures) and the data structures exist as separate entities
and are only loosely connected. Under the object-oriented paradigm, the software objects more
closely correspond to the physical objects that they model. Booch (1991) defines object-oriented
programming as “a method of implementation in which programs are organized as cooperative
collections of objects, each of which represents an instance of some class, and whose classes are
all members of a hierarchy of classes united via inheritance relationships.” For a more detailed
description of object oriented programming and development, see Booch, 1986; Coad and
Yourdon, 1991; Meyer, 1988; and Rumbaugh et al., 1991.
533580448
March 8, 2016
-3-
Naylor and Volz (1987) introduce the software/hardware component as an integral part of a
formal model of manufacturing control. A software/hardware component is an encapsulation of
a physical device (e.g. a machine tool, robot, AGV, etc.) and the software necessary for low-level
control of that device. The software components have three basic characteristics [Naylor and
Volz, 1987]:
1. a well defined public interface;
2. an internal implementation that is inaccessible to the user; and
3. the visible part and the inaccessible implementation of software components should be
separately compilable from the components that use them.
The main rationale for these characteristics is so that “plug compatible” modules could be
developed offsite based on provided specifications. The equipment vendors would then provide
the compiled software to meet the specifications along with the physical device. Naylor and
Volz point out that these new components not only must react to calls, but also must be able to
originate an event when necessary. These are termed active components. For example, a
machine tool would need to generate an unsolicited signal to the controller if a tool breaks.
Chaar et al. extend the work of Naylor and Volz by allowing hierarchically constructed
assembled software/hardware components and present several implementations of
software/hardware components [Chaar, 1990 and Hadj-Alouane et al., 1990].
Maimon and Fisher (1988) present the development of an Object-Based Controller (OBC).
The OBC is a hierarchical control system constructed as a goal-driven object/knowledge-based
system with progressing levels of abstraction. A detailed example implementation for a robotic
printed circuit board (PCB) assembly cell is described. Basnet et al. (1990) describe an objectoriented modeling environment for manufacturing systems. This system was developed based on
the need for a separation between the physical components and the information components in a
system. This separation is important so that changes in one can be done independently of the
other.
O'Grady and Seshadri (1991) introduce an object-oriented cell control model called X-Cell.
X-Cell is implemented in Scheme, a dialect of Lisp, using the object-oriented programming
environment SCOOPS. X-Cell consists of three modules. The scheduler checks for resource
533580448
March 8, 2016
-4-
availability, assigns resources, sequences jobs, and responds to feedback requests from the other
modules. The operation dispatcher receives requests from the scheduler and generates detailed
operation sequences for the individual machines in the system. Finally, the monitoring object
acts as the cell supervisor and error handler. Glassey and Adiga (1990) present a library of
software objects for control and simulation of manufacturing systems. The primary objective of
this project was to develop a set of simulation modules which simplified the task of assembling
special purpose simulation models customized for individual research questions. The objectoriented paradigm was chosen to provide reuse, extension, and simplified maintenance of the
underlying simulation software. Adiga and Gadre (1990) further illustrate the use of objectoriented programming for modeling FMS. The primary impetus for using object-oriented
modeling, however, is to help in the development of simulations of FMS rather than actual
control systems.
Guo et al. (1990) describe an integrated object-oriented simulation environment for flexible
manufacturing systems. Application specific objects for the system simulations are created
using a class hierarchy. New classes are defined by inheriting the generic features and adding
the implementation specific features. A prototype implementation developed in Smalltalk 80
running under UNIX is described. Kerpelman (1989) describes an object-oriented model of a
manufacturing system used for error diagnosis. The object-oriented software model runs in
parallel to the actual manufacturing system as a real-time simulation. The discrepancies between
the behavior of the model and the behavior of the actual system are used to suggest possible
faults. Narayanan et al., (1992) also describe an object-oriented simulation tool to support
control of manufacturing systems. Mize et al. (1992) describe the modeling of manufacturing
systems using an object oriented approach. This paper includes an extensive discussion of the
justification for and basic principles of object oriented programming and modeling in
manufacturing systems design. One of the goals of this research is to develop a library of objects
for modeling manufacturing systems. Using this library, non-programmers would have the
necessary tools to model their own systems without having to consult modeling experts.
The shop floor controller class described in this paper is designed to fill a similar need to that
of the systems described by Mize et al. (1992) and Narayanan et al. (1992). However, rather
than producing a simulation model, functional shop floor control software is the end result. We
envision the manufacturing engineers being able to build fully operational control systems by
simply “plugging” the individual components together and filling in the implementation-specific
533580448
March 8, 2016
-5-
details. For example, given a manufacturing cell with two CNC machine tools loaded and
unloaded by an industrial robot, the engineer would instantiate three equipment controller objects
and one workstation controller object from the shop floor controller class. These objects would
provide the interfaces and control logic required for integrated control of the cell. The engineer
would use these objects as a starting place and fill in the hardware specific code and the decision
making logic for the particular implementation (as dictated by the production requirements).
Before describing the details of the controller class, we first describe the control architecture
which provides the foundation for the control system.
3. CONTROL ARCHITECTURE
The architecture for a hierarchical system must describe the decomposition of the system
into individual subsystems and provide functional decompositions of these subsystems. The
architecture should also provide the guidelines necessary to develop these subsystems so that
they can be transparently integrated into the larger system. The primary goal of a hierarchal
structure is to develop systems whose subsystems are completely independent so that individual
components can be developed at different locations (e.g. by different vendors) and can be
replaced or updated as necessary without adversely affecting the rest of the system. This has
often been referred to as “plug compatibility,” and has been described extensively in the field of
network communications and in the OSI Reference Model [Pimentel, 1990].
Among existing hierarchical architectures there is much debate over the required number of
distinct levels. We identify three “natural” levels (which are generalized from Joshi et al. (1990)
and Jones and Saleh (1989)): From the bottom of the hierarchy to the top (as shown in Figure 1)
are the equipment, workstation, and shop levels. The equipment level is defined by the physical
shop floor equipment and there is a one-to-one correspondence between equipment level
controllers and shop floor machines. The workstation level is defined by the layout of the
equipment. Processing and storage machines that share the services of material handling
machines and buffer storage space together form workstations. Finally, the shop level acts as a
centralized control and interface point for the system.
These descriptions of each level are virtually identical to those descriptions provided by
Jones and McLean (1986), Jones and Saleh (1989), Simpson et al. (1982), and many others.
However, while these qualitative descriptions of each level provide a conceptual view of the
533580448
March 8, 2016
-6-
hierarchical decomposition, they do not provide the specific detail required to formalize the
control software requirements for control systems based on these architectures. In order to
facilitate software generation (automatic generation, in particular), more detailed descriptions of
the decomposition and of the individual levels are required. Prior to describing these details,
however, we must first present some preliminary material describing the target environment.
3.1. Preliminaries
A part is an individual item that is to be produced by the manufacturing system. While a
part is logically an individual item, it may actually be an assembly or fabrication composed of
other parts. In the production system, each part will have a set of technical attributes which
describe the part and define the required manufacturing operations. These technical attributes
are used to create a process plan for the part. A process plan provides the processing instructions
necessary to produce the part. The representation of a process plan used in this research is a
directed graph that shows the precedence constraints and alternative routings for the part as paths
through the graph (see Figure 2). Each node in the graph represents a specific operation or set of
operations performed by a machine or group of machines. The processing instructions associated
with each operation (e.g., NC files) are assumed to exist. Each arc represents the movement of
the part from the machine or workstation represented by the tail node to the machine or
workstation represented by the head node. Any path from the start node to the end node
represents a valid processing sequence. This representation is a simplified view of those
described by Mettala (1989) and Catron and Ray (1991).
We also introduce the concept of a part group. A part group is a group of parts which is
handled as a single entity. For example, several parts can be attached to a multi-part fixture for
transport and/or processing. In this context, the parts and the fixture together would constitute a
part group. Part groups correspond to the smallest units which are assigned to a controller's
subordinates. For example, consider the case where a pallet of parts is removed from a storage
device, placed on an AGV, and delivered to a workstation for processing. Once at the
workstation, the individual parts are removed from the pallet, processed by the machines in the
workstation, and placed back on the pallet. From the storage system and AGV points of view,
the parts and the pallet together constitute a part group since the parts are not separated from the
pallet. However, from the workstation point of view, they do not constitute a part group since
the parts are removed from the pallet and processed individually. Assemblies are special cases of
533580448
March 8, 2016
-7-
part groups which are not separated (unless rework is required). An important property
illustrated by the assembly and disassembly cases, is that part groups can be dynamically created
and destroyed by different controllers. In its simplest form, a part group is one or more items
being processed, handled, or transported as a unit.
A shop or manufacturing system is comprised of a number of machines. These machines
perform the processing, transportation, inspection, and storage of raw materials, WIP, and
finished goods. Each part is processed on the machines with the system according to the process
plan for that part. The controller class presented in this paper concentrates on the equipment and
workstation levels in the control hierarchy.
3.2. Equipment Level
Within the control hierarchy shown in Figure 1, the equipment level represents a logical view
of a machine and an equipment level controller (see Figure 3). Individual pieces of equipment
also have machine controllers which provide physical control for the devices. These include
CNC controllers, programmable controllers, and other motion controllers and are usually
provided by the machine tool vendors. Equipment controllers provide a standard interface (based
on the equipment type) to the rest of the control system. This interface hides the
implementation-specific code required for machines from different vendors. An equipment level
controller makes decisions regarding local part sequencing, keeps track of part locations, and
monitors the operation of the machine under its control. Equipment is partitioned into material
processors, material handlers, material transportors, and automated storage devices. This
partitioning is based on the equipment behavior. The behavior of a controller is described by the
corresponding message-based part state graph (MPSG) and physical model (Smith,1992). These
models are described in more detail in Section 4.3.
The class of material processors (MP) includes machining centers, inspection devices,
assembly machines, and other devices. The key factor in placing a machine in this class is that
the machine has the ability to autonomously “process” a part in some way as indicated in the
process plan. By “processing,” we mean any activity that results in a change in the information
content associated with the physical state of the part. For example, a turning center, a coordinate
measuring machine, and a painting booth are fundamentally different in terms of their processes,
but from a control point of view, each of these simply processes parts according to some set of
533580448
March 8, 2016
-8-
instructions described by the process plan. A material processor may also have local storage and
a dedicated load/unload device to move parts between the processing area and local storage. For
example many machining centers include a rotating index table or a pallet exchanger which holds
multiple parts. These dedicated load/unload devices are controlled by the same device controller
as the material processor. Based on the capability for local storage, each piece of equipment has
a maximum capacity, indicating the maximum number of parts that can be assigned to that device
at one time. Each unit of the capacity is designated as a location. A location can be addressable
or nonaddressable. An addressable location is reachable by an external device (e.g., a robot or
an operator), whereas a nonaddressable location is reachable only by the material processor
itself.
The class of automated storage machines (AS) is made up of various automated storage and
retreival (AS/R) type devices. A piece of automated storage and retrieval machinery stores raw
materials, work in process, finished parts, tools, and fixtures in locations known to the AS/RS
controller. Storage machines deliver stored objects to a load/unload point and retrieve objects
from (possibly different) load/unload points and place them in storage in response to commands.
Similar to previous machines, automated storage machines have a capacity, which consists of
addressable (load/unload points) and non-addressable (storage) locations. In general, the
capacity of an automated storage device is much greater than the number of addressable
locations.
Machines used for moving objects within the manufacturing shop are separated into two
classes. The class of material handling machines (MH) is made up of robots, indexing devices,
and other devices capable of moving parts from one location to another in a specified orientation.
These locations are typically close together relative to the size of the factory. The primary
function here is to load (unload) parts into (from) various material processors and automated
storage machines. Associated with each piece of material handling equipment is a set of
addressible locations called the reachability set. This set defines the work volume of the device.
If an addressible location belonging to another peice of equipment is in the reachability set of a
material handling device, then the material handling device can load and unload parts on that
device.
The class of material transport machines (MT) is made up of AGV's, conveyors, fork trucks,
and other manual or automated transport machines. The primary function of these machines is to
533580448
March 8, 2016
-9-
transport parts to various locations throughout the factory. The distinction between material
handling machines and material transport machines is that material handling machines can load
and unload other equipment, and material transport machines can not. Typically, material
handling machines perform intra-workstation part movement functions and material transport
machines perform inter-workstation part movement. A specific type of material movement
machine (e.g. a conveyor or a robot) could belong to either class, but within a particular system,
each specific device (e.g. conveyor #8 or the Puma robot) will be considered either a material
handler or a material transporter, but not both. Associated with each material transport device, is
set of ports. A port is a location at which the individual transport device may stop to be
loaded/unloaded. An example of a port is an AGV station where individual AGVs stop to be
loaded and unloaded at a workstation. Each port may contain one or more addressible locations
to account for the case where pallets are delivered by the transport device. An individual port
may be shared by several material transport devices.
To process a part, the equipment follows an equipment level process plan. Each node in the
process plan graph (as shown in Figure 2) represents an operation performed by a specific
equipment level device and contains the information required by the machine to process the part.
In the case of an NC machine tool, this includes the machining parameters such as speeds, feeds,
tool selections, tool paths, and so on. In some cases, an additional decomposition might be
required within the equipment controller to convert the processing instruction data into a form
directly usable by the specific machine controller. For example, if a machine tool controller
requires instructions as CLDATA and the processing instructions data are stored in the form of a
CAD file, a CAD-to-CLDATA conversion would be required. These conversions are performed
by an external function (illustrated as the Convert block in Figure 3) called by the equipment
controller.
3.3. Workstation Level
A workstation is made up of one or more pieces of equipment under the control of a
workstation level controller. Workstations are defined using the physical layout of the
equipment and are generally configured so that multiple MP devices can share the services of
one or more MH devices and/or ports.
533580448
March 8, 2016
-10-
The workstation controller carries out commands received from the shop controller and is
responsible for moving parts between the various pieces of equipment in the workstation and for
specifying part processing performed at this equipment. To this end, it will synchronize the
actions required for coordinating the transfer of parts between processing equipment and material
handling equipment. Since the individual equipment controllers are responsible for sequencing
their tasks once the tasks have been assigned by the workstation controller, the workstation is not
responsible for loading, starting, and monitoring the operation of the machine directly. Instead,
parts are “assigned” to the equipment controller which specifies an addressible location for the
parts. Once the parts have been delivered to the addressible location, they are out of the direct
control of the workstation. At some later time, the equipment controller informs the workstation
controller that the processing of the parts has been completed and provides an addressible
location from which to pickup the parts.
A synchronization may also be required between the material handling equipment and a
material transport device present at a port to deliver or remove parts. This would occur when
parts are transported on fixtured pallets, for example. In this case, the communication required
for the synchronization will be with the shop controller rather than with the material transport
device directly. The shop controller will, in turn, communicate with the transport workstation
through the Resource Manager to facilitate the synchronization.
When a part enters a processing workstation, it follows a workstation level process plan.
This lists the various pieces of equipment in the workstation that the part must be sequenced
across and the order that operations must occur. In the general case, a workstation level process
plan may include alternative routings for a part. Each of these alternate routings can be viewed
as a path through the workstation process plan graph. A workstation level process plan is a
particular view of the equipment process plan which includes only the equipment within the
specific workstation (as shown in Figure 2).
4. CONTROLLER CLASS HIERARCHY
As described by Joshi et al. (1989) and Jones and Saleh (1990), shop floor controllers at all
levels in the hierarchy perform the three functions: planning; scheduling; and execution.
Planning determines what tasks the controllers are going to perform, scheduling determines the
start/finish times for each task, and execution performs the scheduled task. Smith et al. (1992)
533580448
March 8, 2016
-11-
have highlighted the need for explicitly separating these functions within each controller. This
separation allows different planning/scheduling modules to be “plugged into” the execution
module for a particular hardware configuration in response to changes in the production
requirements. In order to perform these functions, controllers must also perform various support
functions such as communications and database functions. These support functions are generic
across all control levels. Similarly, the controllers' user interface is generic in behavior, but
unique in implementation. This characteristic makes it an ideal application for object oriented
techniques. A shop floor controller class hierarchy has been developed to exploit the
similarities in controller operations.
Within a hierarchical control system, individual controllers are essentially “black boxes”
which respond to requests from the upper level controller by partitioning a problem into
independent sub problems and requesting that their subordinates solve the individual sub
problems. In the object oriented paradigm, these black boxes are called objects. In keeping with
the requirements of Naylor and Volz (1986), these objects have well-defined public interfaces
and internals completely hidden from the external world. A class hierarchy can be developed by
successively specializing a base class. Within the hierarchy, a class inherits all of the
functionality of its parent class and adds additional functionality based on the underlying
system's desired behavior.
A block diagram of the shop floor controller class hierarchy is shown in Figure 4. The base
class for the shop floor controller class hierarchy is the storage class, which provides database
functions for accessing and maintaining part information. The controller class extends the
storage class by adding functions that are generic across all controllers. These functions include
the planning, scheduling, and execution functions, as well as the support functions described in
the control architecture. The communications class (which is an embedded class within the
controller class), provides a generic, hardware-independent interface to a set of message passing
functions. The equipment, workstation, and shop classes further specialize the controller class
based on the respective requirements of the equipment, workstation, and shop control levels
within the control architecture. These individual classes will be described in the following
sections.
533580448
March 8, 2016
-12-
4.1. Storage Class
Shop floor controllers control the manipulation of parts, tools, fixtures, etc., within the
manufacturing system. Currently we are concentrating on the part manipulation, but this can
easily be extended to include other items of interest. This manipulation might include transport,
storage, and/or processing, depending on the type of the specific controller. Regardless of the
specific tasks, controllers require database-type functions to keep track of the parts assigned to
the controller. The storage class implements these database functions. The storage class
structure is shown in Figure 5. The storage class includes two related databases: a part database
(Parts) and a slot database (Slots). These databases are related by the part number field (Part)
and the slot number field (Slot). This relationship enforces the requirement that parts assigned to
the controller must be assigned to a slot known to the controller. The interpretation of a slot
depends on the type of the specific controller. For an equipment level controller, a slot
represents a physical location such as a chuck, fixture, or vise at which the part can be located.
For a workstation controller, a slot represents a subordinate entity (e.g. an equipment controller)
to which a part can be assigned. Similarly, for a shop controller, a slot represents a workstation
to which a part can be assigned.
The PART record structure includes fields for the part number (PNum), the part state (State),
the slot to which the part is assigned (Slot), a process plan file name (NCFile), and a parameter
array (Parameter).1 The parameter array is used to store various information, the meaning of
which depends on the level of the controller and the state of the part. For example, while
transferring a part between two pieces of equipment, the part is known to three equipment level
entities: the source entity; the material handling entity performing the transfer; and the
destination entity. At the workstation level, the entity numbers corresponding to these three
entities are stored in the parameter array.
The SLOT record structure includes fields for the index of the part assigned to the slot
(Part), the workstation location for the slot (WkstnLoc), and boolean variables specifying
whether or not the slot is blocked (Blocked), is a processing slot (Processing), and whether or not
the slot requires a synchronization during loading/unloading (Synch). These boolean variables
are used primarily for equipment level controllers. A synchronization is required when the slot
1Additional fields may be necessary for the scheduler. If new fields are added, methods to access these
fields must be provided in the storage class definition.
533580448
March 8, 2016
-13-
has a work-holding mechanism (e.g. a chuck, fixture, or vise) which must be activated when a
part is loaded or unloaded. A slot which is blocked can not be addressed (for loading or
unloading) while the device is running. A slot is a processing slot if parts can be processed while
occupying the slot.
The storage class includes the part and slot databases along with fields for the capacity of the
object (Capacity) and the number of parts currently assigned to the object (NumParts). The
methods for the storage class provide access to the database information. For example, the
getPartState() method returns the current state of the specified part. Similarly, the getSynch()
method returns the boolean variable specifying whether the specified part requires a
synchronization to be loaded or unloaded (based on the slot to which the part is assigned). The
class methods hide the details of the data structure implementation. For example, by accessing
the part state using the setPartState() and getPartState() methods, the calling programs will be
unaffected by changes to the internal part database structure.
4.2. Communications Class
In a distributed environment, control is exercised by passing messages between controllers.
In a non-homogeneous environment (in terms of computer hardware and software), developing
transparent message passing is a non-trivial task. Within a controller the Communications
Module performs these functions. The Communications Module is an object instantiated from
the communications class. The communications class provides data structures and methods
which implement a generic, hardware-independent interface to a set of message passing
functions. The communications class description is shown in Figure 6. The MESSAGE
structure includes fields for the text message (Message), message source (Source), and message
length (Length). This structure is used to store incoming messages for use by other modules of
the controller. The communications class includes an array of messages (In), a port number field
(Port), an in-message counter field (NumIn), and a port-initialized flag (PortInitialized). The
class includes methods to initialize the port, close the port, send and receive messages, check for
messages, and wait for messages.
In order to create a communications object for a specific hardware configuration (e.g., serial
point-to-point or network communications), the checkMessages(), portInit(), sendMessage(), and
portClose() methods must be modified to accommodate the specific hardware. For example, the
533580448
March 8, 2016
-14-
checkMessages() method checks the port and, if messages have arrived, reads the messages into
the message queue. The implementation of this method requires a device-specific function to
check the port and return any characters that have been read. The generic portion of the method
will then convert the string of characters into individual messages and insert these messages into
the message queue. The remaining methods (getMessage(), waitForMessage(), and
forcedInMessage()) are generic. These methods require modification only when the message
data structure is modified. The device-specific class methods have been implemented using
asynchronous serial communications for DOS and OS/2, TCP/IP over an ethernet network for
DOS, OS/2, ULTRIX, an dAIX, and through interprocess communication on OS/2. Through the
use of this class, the controller is completely unaware of the physical connection to the rest of the
shop, and it can be easily moved between computers and operating systems if necessary.
4.3. Controller Class
The controller class inherits the database structures and methods from the storage class and
adds data structures and methods necessary for implementing generic shop floor controllers. The
controller class definition is shown in Figure 7. A controller is essentially a storage system
which exhibits a specific behavior. Parts are stored within the domain of the controller while
processing is performed. At the equipment level, the domain is the physical device itself. At the
workstation level, the domain includes the set of equipment comprising the workstation. At the
shop level, the domain includes the entire shop. Therefore, every part will simultaneously exist
within three domains: the shop, a workstation within the shop, and a particular piece of
equipment within that workstation.
The behavior of the controller is implemented by sending and receiving messages and
interacting directly with shop floor equipment. The features added to the storage class include a
communications object (Comm) for communicating with the supervisory controller, a command
object (Input) for processing input messages, and a message-based part state graph object
(MPSG) for implementing the MPSG which defines the controller behavior (described below).
Note that the class definition does not include communications objects for the subordinate
systems. Instead these objects are included in the derived classes for equipment, workstations,
and shops, since each has different requirements for communicating with subordinates.
533580448
March 8, 2016
-15-
An MPSG describes the behavior of a controller in terms of the messages that it accepts, the
messages that it sends and the physical actions that it performs (Smith, 1992). The MPSG model
provides a formal, implementation-independent model for describing system behavior in terms of
messages and actions. These messages and actions are termed the processing protocol for the
controller. An MPSG models the processing protocol as a finite state machine in which the state
represents the processing state of the part and the transitions are caused by receiving or sending
messages or performing controller actions. MPSGs for generic MP, AS, MH, and MT
equipment have been developed as part of the controller class hierarchy. The a complete
description of the MPSG model is provided by Smith (1992). Our interest here is in a higher
level description of the behavior or a controller. One particular view of an MPSG, the physical
model, provides this description.
A single physical model task represents a defined sequence of messages and actions required
to perform the task. For example, consider the physical models for the four equipment classes
described in Secition 3.2 (as shown in Figure 8). In the MP case, mp_put is a physical model
task representing loading a part on a machine tool with a robot. Within the MPSG, the mp_load
task is expanded into the specific sequence of messages passed between the robot, machine tool,
and workstation controller to synchronize the task. The physical models for the individual
equipment and workstation classes are provided in the following sections. Given any piece of
shop floor equipment and the MPSG describing it's behavior, the C++ source code for the
execution portion of the corresponding controller can be automatically generated. This source
code represents a series of methods within the controller class. A complete description of the
MPSG model and the associated physical models can be found in (Smith, 1992).
The command object (Input) separates a message (or any line of text) into its individual
components. This class provides methods to separate a string into individual tokens, count the
number of tokens, and return requested tokens. The commandParser() method accepts incoming
messages from the communication object, sends the messages to the command object for parsing,
and determines the correct action to perform. The methods addTask() and removeTask() add and
remove controller tasks from the task list. readCommand() scans the console and the supervisors
communication object (Comm) for incoming commands. The doTasks() and doInMessages()
methods are used by the MPSG driver. The virtual methods planner(), scheduler(), and
executor() implement the planning, scheduling, and execution functions, respectively, for each
533580448
March 8, 2016
-16-
controller. These methods are dynamically bound to the object at link time for maximum
flexibility.
There are no “controller objects” within the control system. Instead, the controller class
serves only as a base class and must be further extended using the attributes of the system to
create usable components. The controller class simply serves as a starting point for the
equipment, workstation, and shop classes. These classes are described in the following sections.
4.4. Equipment Class
The equipment class adds equipment level-specific data structures and methods to the
controller class. The equipment class is shown in Figure 9. The class includes data structures
for the equipment name (Name), number (Number), and state (State), along with the methods for
accessing the stored data. The equipment class also includes a communications object (Device)
for communicating with the machine under the control of the equipment controller. This
communications object provides the link between the shop floor equipment and the control
system. The readDescr() method reads the description of the specific piece of equipment (the
description is stored in a text file).
As with the base controller class, there are no actual “equipment objects” within the control
system. Instead, the equipment functionality is inherited to a set of more specific equipment
controllers. Currently four equipment sub-classes have been developed: material processors
(MP), material handlers (MH), material transporters (MT), and automated storage devices (AS).
Each of these classes of equipment has a distinct behavior described by its physical model. The
physical models for these equipment classes are shown in Figure 8. Physical models are finite
state machines in which the states completely define at any point the tasks which have been
performed and the tasks which are allowable at that point. State transitions represent physical
model tasks which are specified by the scheduler and performed by the execution module.
MP class equipment includes NC machine tools, coordinate measuring machines, robotic
welders, and other equipment which processes parts according to a set of instructions. The
physical model specifies that parts are loaded on the equipment (put) , processed (process) , and
unloaded (pick). After loading the part, the processing instructions (e.g., an NC file) can
optionally be downloaded (download) to the physical device prior to processing. AS equipment
consists of automated storage and retrieval systems where parts are placed and stored for
533580448
March 8, 2016
-17-
unspecified lengths of time. The physical model shows that parts are first loaded on the
equipment (load), then are optionally stored (store). If the parts have been stored, they must be
retrieved (retrieve) prior to being unloaded (unload).
MH class equipment includes industrial robots and other pick and place devices which pick
up parts from one location and put them down in another in a defined orientation. MT class
equipment includes automated guided vehicles (AGVs), conveyors, and other equipment which
transports parts between locations. The distinction between MH and MT equipment is that MH
equipment picks up, moves, and places parts, while MT equipment simply moves parts which
have been placed on the equipment by some other device. For example, moving a part from one
processing machine to another typically involves picking the part from the source machine using
an MH device, placing the part on an MT device for transport, picking the part off the MT
device using another MH device, and loading the part on the destination processing machine.
4.5. Workstation Class
The workstation class adds workstation level-specific data structures and methods to the
controller class. A workstation is made up of one or more equipment level systems, each of
which has its own equipment level controller. The task of the workstation controller is to
facilitate the transfer of parts between these individual equipment level systems which perform
the processing/transport/storage functions. In order to perform this task the workstation needs
access to various data associated with each subordinate. This data is stored in an ENTITY
object. The ENTITY class definition is shown in Figure 10. An ENTITY includes data
structures for the entity type (Type), name (Name), part capacity (Capacity), and the number of
parts currently assigned to the entity (NumAssigned). It also includes an array containing the
workstation slots which are assigned to the specific entity (SlotNums). The class definition also
includes the methods to access these data structures. Since entities model equipment level
devices, each entity will also require a communications channel with the associated equipment
controller. The IOChannel (a communications object) provides this communications channel.
The workstation class (shown in Figure 10) includes a data structure for the name of the
workstation (Name) and an array of ENTITY objects (Ents). The integer NumEntities identifies
the number of entities in the array. Each ENTITY object in this array represents one of the
subordinate equipment level systems. The workstation class also includes the methods for
533580448
March 8, 2016
-18-
accessing the data structures. The class also includes the commandParser(), genInputComand(),
processForcedMessage(), processForcedSch(), readDescr(), and tSch() methods described
above.
An example workstation and the associated physical model is shown in Figure 11. This
workstation includes two NC machine tools, a part storage buffer, a conveyor stop, and an
industrial robot for moving parts between the individual pieces of equipment. The physical
model specifies that parts arrive at the workstation via the conveyor (arrive). From the conveyor
port, parts can either be picked up by the robot (port_pick), or depart from the workstation on the
conveyor (depart). Once a part has been picked up by the robot, it can be loaded on either of the
NC machines, the buffer, or back on the conveyor (port_, mp_, or bp_put). Similarly, once the
part has been loaded on one of the equipment level devices, it can be picked back up (mp_, bs_,
or port_pick). This workstation physical model is used to generate the sytem graph, which is a
part contact state graph that includes the probper preconditions for performing system tasks
(Mettala, 1989).
5. IMPLEMENTATION EXPERIENCE
Figure 12 illustrates the development methodology for shop floor controllers. The controller
class provides the basic data structures and interface components described int the previous
sections. The specific class (MP, MH, MT, AS, Workstation, or Shop) depends on the controller
that is being created. The MPSG.M file is the textual representation of the controller’s MPSG.
This file is the primary input to the MPSG Builder which generates the C++ code for recognizing
the processing protocol described by the MPSG. The Task builder is used to interactively create
the task action functions for the controller. The Task Action functions are the low-level,
implementation-specific code required for each piece of equipment. This code can often be
acquired from the equipment vendor. The Scheduler Builder is used to create the scheduler for
the controller. As shown in the diagram, the production requirements are one of the inputs
required to construct at scheduler. The resulting C++ code is compiled and linked with the
MPSG library to create an operational controller. Currently, the Controller Class and the MPSG
Builder have been implemented and are being used, while the Task Actions and the schedulers
are being written by hand.
533580448
March 8, 2016
-19-
Controllers based on this class hierarchy have been developed for use in two separate
laboratories with different equipment configurations: one at the Penn State CIM lab, and the
other at the Texas A&M Computer Aided Manufacturing lab (see Table 1 for a list of the
specific equipment in these labs). For the Penn State lab, this represents the fourth generation of
control software which has been developed in-house. The first two generations were developed
completely by hand coding. The third generation was the first attempt at using automatic code
generation tools (Mettala, 1989). The current implementation combines the automatic gode
generation tools with the shop floor controller class described in this papper. Significant coding
time saving have been achieved over previous generations (Smith 1992).
This represents the first generation of control software for the Texas A&M lab (TAMCAM).
This lab is illustrated in Figure 13. In this lab, the Shuttleworth controller runs on an OS/2-based
personal computer and the remaining equipment level controllers run on DOS-based personal
computers. The workstation and shop controllers run on an IBM RS/6000 workstation. Each
equipment controller includes a direct connection to the corresponding machine controller
through a serial port or a digital I/O board. The equipment, workstation, and shop controllers are
connected using TCP/IP through an ethernet network. A more detailed description of this lab,
the parts produced in the lab, and the control software which runs the lab is provided on the
TAMCAM World Wide Web (WWW) home page at the URI
http://tamcam.tamu.edu/tamcam.html.
Regardless of the fact that very little identical equipment was used between the two labs, the
shop floor controller class has provided a significant opportunity for reusing existing control
software with minimal recoding required. By using the classes as a foundation for controller
development, the user is freed from the tedious tasks associated with integration and enabling
distributed communication between processes. Instead, he/she is free to concentrate on the
operational aspects of the system and the decision-making functions associated with part and
operation sequencing. Furthermore, when the control system requires modification or is ported
to a new operating system, there is a well defined methodology for making the software changes.
6. CONCLUSIONS
A shop floor controller class hierarchy has been presented. The classes within this hierarchy
have been designed to exploit the similarities of the control requirements across and within
533580448
March 8, 2016
-20-
multiple levels in the control architecture. The primary purpose of this class hierarchy is to
simplify the software development for shop floor control systems for automated flexible
manufacturing systems. The software has been successfully implemented within two separate
laboratories, and has achieved tremendous savings in software development time. Work is
continuing at expanding the class to include more complex multi-purpose equipment types and
hybrid control architectures.
The next logical step in this work is to turn our attention to the planning/scheduling problems
associated with automated manufacturing systems. While these problems have been the subject
of much research recently, there is very little implementation experience reported. Instead, most
results are acquired through simulation and other approximation techniques. By using the
controller class to instantiate operational controllers, different planning and scheduling
techniques can be tested using the actual execution code or a high fidelity simulation.
ACKNOWLEDGEMENTS
This work was partially supported through National Science Foundation (NSF) awards
DDM-9009270 and DDM-9158042, both awarded to Dr. Sanjay Joshi and by DARPA grant
ARPA #8881 awarded to Dr. Richard Wysk, Dr. Sanjay Joshi, and Dr. Dennis Pegden.
REFERENCES
Adiga, S. and Gadre, M., Object-Oriented Software modeling of a Flexible Manufacturing
System, Journal of Intelligent and Robotic Systems, Vol 3, 1990, pp. 147-165.
Basnet, C. B., Farrington P. A., Pratt, D. B., Kamath M., Karacal, S. C. and Beaumariage, T. G.,
Experiences in Developing an Object-Oriented Modeling Environment for Manufacturing
Systems, Proceedings of the 1990 Winter Simulation Confrence, 1990, pp. 477-481.
Booch, G., Object-Oriented Design with Applications, Benjamin/Cummings Publishing, 1991.
Booch, G., Object-Oriented Development, IEEE Transactions on Software Engineering, Vol. SE12, No. 2, February 1986, pp. 211-221.
Catron, B.A., and Ray, S.R., "ALPS: A Language for Process Specification," International
Journal of Computer Integrated Manufacturing, Vol. 4, No. 2, pp. 105-113, 1991.
Chaar, J. K., A Methodology for Developing Real-Time Control Software for Efficient and
Dependable Manufacturing Systems, Ph.D. Thesis, University of Michigan, 1990.
Coad, P. and Yourdon, E., Object-Oriented Analysis, Prentice Hall, Englewood Cliffs, NJ, 1991.
533580448
March 8, 2016
-21-
Glassey, C. R. and Adiga, S., Berkeley Library of Objects for Control and Simulation of
Manufacturing (BLOCS/M), Applications of Object-Oriented Programming, Pinson, L. J. and
Wiener, R. S. (eds.), Addison-Wesley, Reading MA., 1990.
Guo, D., Norrie, D. H., and Fauvel, O. R., Object-Oriented Flexible Manufacturing System
Simulation, The Proceedings of the 1990 Summer Computer Simulation Confrence, Calgary,
Alberta, Canada, July 1990, pp. 225-230.
Hadj-Alouane, N. B., Chaar, J. K., and Naylor, A. W., The Design and Implementation of the
Control Software of the Prismatic Machining Cell, Center for Research on Integrated
Manufacturing, The University of Michigan, Ann Arbor, MI. 1990.
Jones, A. T. and McLean, C. R., A Proposed Hierarchical Control Architecture for Automated
Manufacturing Systems, Journal of Manufacturing Systems, Vol. 5, No. 1, 1986, pp. 15-25.
Jones, A. and Saleh, A., A Decentralized Control Architecture for Computer Integrated
Manufacturing Systems, IEEE Symposium on Intelligent Control, 1989, pp. 44-49.
Joshi, S. B., Wysk, R. A., and Jones, A., A Scaleable Architecture for CIM Shop Floor Control,
Proceedings of CIMCON '90, A. Jones Ed., National Institute of Standards and Technology, May
1990, pp. 21-33.
Kerpelman, D. T., Object-Oriented Model-Based Reasoning for Diagnosing Automated
Manufacturing Systems, IEEE Symposium on Intelligent Control, 1989, pp. 703-708.
Maimon, O. Z. and Fisher, E. L., An Object-Based Representation Method for a Manufacturing
Cell Controller, Artificial Intelligence in Engineering, Vol. 3, No. 1, 1988, pp. 2-11.
Mettala, E. G., Automatic Generation of Control Software in Computer Integrated
Manufacturing, Ph.D. Thesis, The Pennsylvania State University, 1989.
Mize, J. H., Bhuskute, H. C., Pratt, D. B., and Kamath, M., Modeling of Integrated
Manufacturing Systems Using an Object-Oriented Approach. IIE Transactions, Vol. 24, No. 3,
1992, pp. 14-26.
Narayanan, S., Bodner, D. A., Mitchell, C. M., McGinnis, L. F., Govindaraj, T., and Platzman, L.
L., Proceedings of the 1992 Western Multiconference , Society of Computer Simulation,
Newport Beach, CA, January 1992, pp. 59-63.
Naylor, A. W. and Maletz, The Manufacturing Game: A Formal Approach to Manufacturing
Software, IEEE Transactions on Systems, Man and Cybernetics, Vol. SMC-16, pp. 321-224,
May/June 1986.
Naylor, A. W. and Volz, R. A., Design of Integrated Manufacturing Control Software, IEEE
Transactions on Systems, Man, and Cybernetics, Vol. SMC-17, No. 6, November/December
1987, pp. 881-897.
O'Grady, P. and Seshadri, R., X-Cell - Intelligent Cell Control Using Object-Oriented
Programming (Part I), Computer Integrated Manufacturing Systems, Vol. 3, No. 4, August 1991,
pp. 157-163.
533580448
March 8, 2016
-22-
Pimentel, J. R., Communication Networks for Manufacturing, Prentice-Hall, Englewood Cliffs,
NJ, 1990.
Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F., and Lorensen, W., Object-Oriented
Modeling and Design, Prentice Hall, Englewood Cliffs, NJ, 1991.
Shaw, M. J., Solberg, J. J., and Woo, T. C., System Integration in Intelligent Manufacturing: An
Introduction. IIE Transactions, Vol. 24, No. 3, July 1992, pp. 2-6.
Simpson, J. A., Hocken, R. J., and Albus, J. S., The Automated Manufacturing Research Facility
of the National Bureau of Standards, Journal of Manufacturing Systems, Vol. 1, No. 1, 1982, pp.
17-31.
Smith, J. S., A Formal Design and Development Methodology for Shop Floor Control in
Computer Integrated Manufacturing, Ph.D. Dissertation, The Pennsylvania State University,
University Park, PA 16802, 1992.
Smith, J. S. and Joshi, S. B., Reusable Software Concepts Applied to the Development of FMS
Control Software. International Journal of Computer Integrated Manufacturing, Vol. 5, No. 3,
1992, pp. 182-196.
Smith, J. S., and Joshi, S. B., Message-based Part State Graphs (MPSG): A Formal Model for
Shop Floor Control, Penn State University Working Paper Series, University Park, PA, 1993.
533580448
March 8, 2016
Table 1. Equipment list for the Penn State and Texas A&M CIM laboratories.
Equipment
Class
Description
MP
CNC turning center, FANUC
Name
Penn State
Lab
Fanuc Puma 6
controller
Pratt &
MP
Whitney Horizon V
3 Axis horizontal machining
center
Bridgeport
MP
3 Axis vertical milling machine
Kardex
AS
Vertical warehouse
GMF-M1L
MH
Cylindrical robot
IBM 7545
MP
SCARA robot (assembly
Industriever
operations)
IBM 7535
MH
SCARA robot
Fanuc A0
MH
Articulated robot
SI Mini Cartrac
MT
Cart-based conveyor system
MP
3 axis vertical machining center
MP
4 axis vertical machining center
Leadwell XT
MP
Turning center
Kardex
AS
Vertical warehouse
MH
SCARA robot
Texas A&M
Lab
Pratt &
Whitney Drill-omatic
Cincinnati
Milacron Sabre 500
11
Industriever
Adept One
-23-
533580448
March 8, 2016
Puma 760
MH
Articulated robot
G.E. A4
MH
SCARA robot
Shuttleworth
MT
Smart conveyor
-24-
Shop
Wkstn
Equip
Wkstn
Wkstn
Equip
Equip
Equip
Equip
Equip
Figure 1. Three-level hierarchical control architecture.
Equipment level process plan graph
E7
E2
E5
E1
E8
E3
E4
E10
E6
E9
Workstation Configurations:
W1: E1
W2: E3 + E4
W3: E2 + E5
W4: E6 + E9
W5: E7 + E8 + E10
Workstation level process plan graph
W3
W1
W5
W2
W4
Figure 2. Process plan representation.
533580448
March 8, 2016
-25-
Workstation
Controller
Equipment process
plan (e.g. CAD file).
Equipment
Controller
Convert
Device specific data
(e.g. NC file, CLDATA, etc)
Device
Controller
Individual spindle/joint
activation sequences
Physical
Device
Figure 3. Equipment level controller.
Storage
Controller
Workstation
Processing
Transport
Shop
Storage
Equipment
MP
AS
Figure 4. Shop floor controller class.
MH
MT
533580448
March 8, 2016
// storage.h - ASRS Class definitions
// Part reference definition.
typedef struct {
char PNum[PartNumLength+1];
// Part number
int State;
// MPSG state
int Slot;
// Slot index
int Parameter[3];
// In-message parameter array
int DueDate;
// Part due date
int *NCFile;
// process plan file
} PART;
// Storage slot definition.
typedef struct {
int Part;
// Part Number
int WkstnLoc;
// Workstation location index for the part
char Synch;
// Is a synch required ?
char Blocked;
// Can the slot be accessed while the m/c is running
char Processing;
// Is this a processing location ?
} SLOT; // Storage slot
// STORAGE class
class STORAGE {
protected :
int
Capacity;
// capacity of the STORAGE device
SLOT *Slots;
// Slot array
PART *Parts;
// Parts array
int
NumParts;
// number of parts currently assigned.
public :
STORAGE()
{ Capacity = 0; NumParts = 0; }
~STORAGE();
int getCapacity()
{ return(Capacity); }
int getNumParts()
{ return(NumParts); }
int getPartLocation(int PartIndex);
int getPartState(int Index);
int setPartState(int Index, int PartState);
int getPartParam(char *PartNum, int ParamNum);
void setPartParam(char *PartNum, int ParamNum, int Param);
int getDueDate(char *PartNum);
int setDueDate(char *PartNum, int DDate);
int getSynch(int PartIndex);
int getBlocked(int PartIndex);
int getProcessing(int PartIndex);
virtual void setCapacity(int Cap);
};
Figure 5. Storage class definition
// comm.h - Communications module definitions
// Internal Message Structure
typedef struct MESSAGE {
int Source;
int Length;
char *Message;
} MESSAGE ;
// Communications Class
class CommClass {
int NumIn;
int Port;
MESSAGE In[MAX_IN_MESSAGES];
int PortInitialized;
public :
CommClass(void);
void portInit(int PortNum);
void portClose();
int inCount() { return(NumIn); }
int getMessage(char *Mess, int MaxLen);
int checkMessages();
void sendMessage(char *Mess);
int waitForMessage();
void forcedInMessage(char *Mess);
};
Figure 6. Communications class.
-26-
533580448
March 8, 2016
-27-
// Controller class definition
class CONTROLLER : public STORAGE {
protected:
int Type;
// Shop, Workstation, Equipment
int ControllerPort;
TASK_ITEM *Tasks;
public:
CONTROLLER() { Type = 0; };
CONTROLLER(int ContType) { Type = ContType; };
CommClass
Comm;
COMMAND
Input;
MPSG_DEF
MPSG;
int
readCommand();
void
removeTask(int TaskNum);
void
showTasks();
void
setCapacity(int Cap);
void doTasks();
virtual void doInMessages(int MessageNumber);
virtual int removePart(int PIndex);
virtual void planner();
virtual void scheduler();
virtual void executor();
} ;
Figure 7. Controller class.
download
download
mp_put
process
mp_pick
MP:
pick
put
MH:
store
AS:
MT:
retrieve
as_put
as_pick
port_put
move
port_pick
Figure 8. Equipment level physical models.
533580448
March 8, 2016
// Equipment Class definitions
class EQUIPMENT : public CONTROLLER {
char *Name;
int Status;
int State;
int Number;
public :
EQUIPMENT(int T, char *N, int Num);
EQUIPMENT()
{Name = NULL;}
CommClass Device;
void setType(int T)
{Type = T;}
int getType()
{return(Type);}
void setName(char *N)
{Name = strdup(N);}
char *getName()
{return(Name);}
void setStatus(int S)
{Status = S;}
int getStatus()
{return(Status);}
void setState(int S)
{State = S;}
int getState()
{return(State);}
void setNumber(int N)
{Number = N; }
int getNumber()
{return(Number);}
int commandParser();
void readDescr(char *FName);
void processForcedSch();
};
Figure 9. Equipment class
// wkstn.h - workstation class definition file
class ENTITY {
protected :
int Type;
char *Name;
int Capacity;
int *SlotNums;
int NumAssigned;
public :
ENTITIES();
CommClass *IOChannel;
void setName(char *EName)
{Name = strdup(EName);}
char *getName()
{return(Name);}
void setType(int EType)
{Type = EType;}
int getType()
{return(Type);}
void setCapacity(int Cap);
int getCapacity()
{return(Capacity);}
} ;
class WORKSTATION : public CONTROLLER {
protected :
char *Name;
int Num;
int MHEntity;
public :
ENTITY *Ents;
int NumEntities;
void setName(char *N);
char *getName()
{return(Name);}
void readDescr(char *Fname);
void setNumEntities(int Num);
int getNumEntities() {return(NumEntities);}
int getInputCommand();
void partArrive(int MessageNumber);
int assignPartToEntity(int PIndex, int ENum);
void processForcedMessage();
void processForcedSch();
void doInMessages(int MessageNumber);
void whichEntity(int PartIndex);
};
Figure 10. Workstation class.
-28-
533580448
March 8, 2016
-29-
MP
E
Horizon V
Vertical Mill
mp_put
mp_pick
port_depart
Material
Transport
Cart
mp_pick
port_pick
Daewoo
Puma
Turning
Center
Fanuc M1-L
Buffer
Port
MH
MP
port_put
mp_put
port_arrive
bs_pick
bs_put
S
BS
Figure 11. Workstation configuration and associated physical model.
Figure 12. Controller generation methodology.
533580448
March 8, 2016
-30-
Pratt & Whitney
(MP1)
DOS PC
Adept
(MH1)
Port
(P1)
DOS PC
DOS PC
Leadwell
(MP2)
Manual Wkstn 1
(OP1)
Sabre 500
(MP3)
GE-A4 (MH3)
DOS PC
DOS PC
DOS PC
Manual Wkstn 2
(OP2)
Port
(P3)
Puma 760 (MH2)
Port
(P2)
DOS PC
Kardex
(AS1)
Shuttleworth
(MT1)
OS/2 PC
TAMU Ethernet
Backbone
IBM RS/6000
Shop Controller
IBM RS/6000
Design Workstation
Figure 13. Texas A&M Computer Aided Manufacturing lab.
Download