Title: Comet, a Case Study
1Comet, a Case Study
- Distributed Factory Automation System
Software Engineering 2000-2001 Petta Davide
2Summary
- Problem description
- Requirements modeling
- Use case model
- Analysis modeling
- Conceptual static model
- Object structuring
- Finite state machine modeling
- Dynamic model
- Design modeling
- Subsystem structuring
- Distributed software architecture
- System configuration
3Problem Description
- Workstations on an assembly line
- Programmable WSs different parts can be
processed - Part moving on a conveyor belt ? Processed in
sequence - Two kinds of workstations
- Receiving (the first one), shipping (the last
one) - Pick place robot
- Assembly
- Pick place robot, assembly robot
- One operation per workstation
- Factory operators, one per workstation
- Views workstation status and alarms
- Process engineer
- Creates process plan to define mfg
(manufacturing) steps for a part - Production manager
- Creates work orders to process new parts (work
order of parts of a type) - Robots have sensors and actuators
4Problem Description
- Workstations on an assembly line
- Programmable WSs different parts can be
processed - Part moving on a conveyor belt ? Processed in
sequence - Two kinds of workstations
- Receiving (the first one), shipping (the last
one) - Pick place robot
- Assembly
- Pick place robot, assembly robot
- One operation per workstation
- Factory operators, one per workstation
- Views workstation status and alarms
- Process engineer
- Creates process plan to define mfg
(manufacturing) steps for a part - Production manager
- Creates work orders to process new parts (work
order of parts of a type) - Robots have sensors and actuators
Noun Identification Technique
5Use Case Model
- Grouped by actors
- Factory operator
- View alarms
- View workstation status
- Generate workstation status and notify (with
factory robot) - Generate alarm and notify (with factory robot)
- Process engineer
- Create/update process plan
- Create/update operation
- Production mgr
- Create/modify work order
- Manufacture part (with pickplace, assembly
robot) - Receive part
- Process part at workstation
- Ship part
- Use just-in-time algorithm ws receive part
only when ready to process
6Use Case Model
ltltuse case packagegtgt FactoryOperatorUseCasePackage
ltltuse case packagegtgt ProcessEngineerUseCasePackage
View alarms
Create/Update Operation
View ws status
Process Engineer
Generate ws Status And Notify
ltltextendgtgt
Factory Operator
Create/Update Process Plan
Generate Alarm And Notify
FactoryRobot
7Use Case Model
ltltuse case packagegtgt ProductionManagerUseCasePacka
ge
Ship Part
Process Part At Workstation
Receive Part
ltltincludegtgt
ltltincludegtgt
ltltincludegtgt
Pick Place Robot
Manufacture Part
Production Manager
Assembly Robot
Create/Modify Work Order
8Conceptual Static Model
- Is very important for this case its an
information-intensive application - Factory consists of WSs
- Aggregate Factory class, composed of WS classes
- Three types of WSs Receiving, Line, Shipping
- Generalization/specialization hierarchy
- Line WSs have PickPlace and Assembly robots
- Receiving, shipping have only PickPlace robots
- WS generates one Status and multiple Alarms
- Both viewed from Factory Operator
- Process plan defines with operations all parts of
a given type - Operation defines a single step carried out at a
WS - Work order number of parts to be manufactured of
a given type
9ConceptualStaticModel
ltltusergtgt Process Engineer
1
ltltaggregategtgt Factory
1
Creates
Creates
ltltentitygtgt Process Plan
1
Contains
1
Defines
1..
1..
1
Processes
ltltcompositegtgt Factory Workstation
ltltentitygtgt Operation
1..
1
Generates
Generates
1
1
ltltentitygtgt Part
1..
ltltentitygtgt Workstation Status
ltltentitygtgt Alarm
1..
Defines of
1
ltltentitygtgt Work Order
Views
Views
1
0..1
ltltexternal systemgtgt Assembly Robot
ltltexternal systemgtgt PickPlace Robot
ltltusergtgt Factory Operator
ltltcompositegtgt Shipping Workstation
ltltcompositegtgt Line Workstation
ltltcompositegtgt Receiving Workstation
Creates
1
ltltusergtgt Production Manager
Composite classes
10Classes and Their Attributes
ltltusergtgt ProductionManager
ltltusergtgt ProcessEngineer
ltltentitygtgt ProcessPlan
ltltusergtgt FactoryOperator
partType String rawMaterialTypeString numberOfS
teps Integer
userID String password String shift
Integer factoryArea String
userID String password String engineerPrivileg
esString
userID String password String shift Integer
ltltentitygtgt Alarm
ltltentitygtgt Part
ltltentitygtgt WorkOrder
ltltentitygtgt Operation
workOrderID String customerName
String partType String quantity
Integer priority Integer startDate
Date shipmentDate Date status WoStatusType
partType String partID String status
PartStatusType location String priority
Integer nextOperationInteger startDate
Date finishDate Date
alarmNumber Integer alarmType
String alarmMessage String
operation Integer operationName
String workstationTypeWsType programName
String cycleTime Integer
ltltentitygtgt WorkstationStatus
ltltexternal systemgtgt PickPlaceRobot
ltltexternal systemgtgt AssemblyRobot
workstationID String factoryArea
String location String state WorkstationState
robotID Integer state RobotState maxWeight
Integer
robotID Integer state RobotState
11System Context Model
One external class per actor
ltltexternal usergtgt ProcessEngineer
ltltexternal usergtgt FactoryOperator
1..
1..
Interacts with
Interacts with
1
1
ltltsystemgtgt Factory Automation System
1
1
Interacts with
Interfaces to
1
1..
Interfaces to
ltltexternal usergtgt Production Manager
1
ltltexternal systemgtgt PickPlaceRobot
1..
ltltexternal systemgtgt AssemblyRobot
12Object Structuring
- Idea we determine the objects that participate
in each use case dividing the system into
objects - Entity objects for data storing objects
- Process Plan, Operation, Work Order, Part,
Workstation Status, Alarm - They are all server ? corresponding server
objects on collaboration diagrams - For each Human actor user interface object
- Factory Operator Interface, Production Manager
Interface, Process Engineer Interface - Adding controllers objects
- Receiving/Line/Shipping Workstation controller
- to control manufacturing workstation
- Each robot has a controller and its mfg
operations are downloaded from the Factory
Automation System
13Finite State Machine Modeling
- There is a state-dependent object the WS
controller - More in detail, each Workstation
- Requests a part only if ready
- Completes a part
- Waits for message from successor workstation
- When received, says pickplace robot to place
part on the conveyor belt - Send part coming message to successor
- Send part request message to predecessor
- Receiving ws controller counts remaining number
of parts - Shipping ws controller
- Removes part from conveyor belt
- Send part complete message to production manager
interface - For this state-dependent object statecharts
14Line W.S. Controller Statechart
Line Workstation Controller Superstate
Part Processing
Part Processing Superstate
B1 Workstation Startup
Part Requesting
Part Requesting Superstate
B1 Workstation Startup
Part Processing Superstate
Part not Requested
B15 Part Coming
C2 Part Request
Part has been Requested
15Line W.S. Controller Statechart
B3Part Coming/ B4 Next Operation Request
B10Part Ready/ B11 Start Assembly
B1WS startup / B2 Part Request
B8Part Arrived/ B9 Robot Pick
Assembling Part
Robot Picking
Part Arriving
Awaiting Part From Predecessor WS
B12 Operation End Part Has Been Requested
/ B13 Robot Place
B14Part Placed/ B15 Part Coming B15a Part
Request
B12 Operation End Part Not Requested
C2 Part Request / B13 Robot Place
Awaiting Part Request from Successor WS
Robot Placing
Part Processing Superstate
16Dynamic Model
- Idea we refine use cases using collaboration
diagrams - Factory operator has client/server use cases
- Client OperatorInterface
- Server AlarmHandlingServer, WSStatusServer
- Process Engineer has client/server use cases
- Client ProcessEngineerInterface
- Server ProcessPlanServer, OperationServer
- Production Manager has
- client/server use case Create/Modify Work Order
- Client ProductionManagerInterface
- Server ProcessPlanServer, WorkOrderServer
- distributed control use case Manufacture Part
17Collab. Diagrams View Alarms, View WS Status
S1 Operator Request
ltltactorgtgt
ltltuser interfacegtgt OperatorInterface
S1.3 Display Info
FactoryOperator
S1.1 Alarm Request
S1.2 Alarm Data
ltltentitygtgt AlarmHandlingServer
V1 Operator Request
ltltactorgtgt
ltltuser interfacegtgt OperatorInterface
V1.3 Display Info
FactoryOperator
V1.2 Workstation Data
V1.1 WS Status Request
ltltentitygtgt WorkstationStatusServer
Use Cases
18Collab. Diagrams Generate Alarm and Notify
ltltexternal systemgtgt Robot
M1 Workstation Input
ltltstate dependent controlgtgt WorkstationControlle
r
M2 Alarm
ltltentitygtgt AlarmHandlingServer
M3 Alarm Multicast
M4 Display Info
ltltactorgtgt
ltltuser interfacegtgt OperatorInterface
Use Cases
FactoryOperator
19Collab. Diagrams Generate WS Status and Notify
ltltexternal systemgtgt Robot
N1 Workstation Input
ltltstate dependent controlgtgt WorkstationControlle
r
N2 Workstation Data
ltltentitygtgt WorkstationStatusServer
N3 Workstation Status Multicast
N4 Display Info
ltltactorgtgt
ltltuser interfacegtgt OperatorInterface
Use Cases
FactoryOperator
20Collab. Diagrams Create/Update Operation,
Create/Update Process Plan
O1 Operation Input, P2 Process Plan Input
ltltactorgtgt
ltltuser interfacegtgt ProcessEngineerInterface
O1.3 Operation Info, P2.5 Process Plan Info
ProcessEngineer
O1.2 Operation Info
P2.4 Process Plan Info
P2.1 Create Process Plan
O1.1 Create Operation
P2.2 Operation Request
ltltentitygtgt ProcessPlanServer
ltltentitygtgt OperationServer
P2.3 Operation Info
Use Cases
21Collab. Diagrams Create/Modify Work Order
ltltactorgtgt
R1, R2 Production Input
ltltuser interfacegtgt ProcessEngineerInterface
ProductionManager
R1.3, R2.5 Production Info
R2.4 Work Order Info
R1.2 Process Plan Info
R1.1 Process Plan Request
R2.1 Create
ltltentitygtgt ProcessPlanServer
ltltentitygtgt WorkOrderServer
R2.3 Part Info
R2.2 Create
ltltentitygtgt PartServer
Use Cases
22Collaboration Diagrms Receive Part
A1 Production Input
ltltactorgtgt
ltltuser interfacegtgt ProductionManager Interface
Note it isnt an UML notation
ProductionManager
A2 Start Part
A5 B3 Part Coming
ltltstate dependent ctrlgtgt firstLineWS Controller
ltltstate dependent ctrlgtgt ReceivingWS Controller
B2 Part Request
A3 Pick Place Robot Command
A4 Pick Place Robot Status
ltltexternal systemgtgt PickPlaceRobot
Use Cases
23Collaboration Diagrams Process Part at WS
C2, C15a Part Request
B2, B15a Part Request
ltltstate dependent ctrlgtgt successorLine WorkStation
Controller
ltltstate dependent ctrlgtgt aLineWorkStation Controll
er
ltltstate dependent ctrlgtgt predecessorLine WorkStati
onController
A15B3 Part Coming
B15C3 Part Coming
B4 Next Operation Request
B7 Operation Info
B8 Part Arrived, B10 Part Ready, B14 Part
Placed
ltltentitygtgt ProcessPlanServer
B11 Start Assembly
B12 Operation End
B9 Robot Pick, B13 Robot Place
B5 Operation Request
B6 Operation Info
ltltexternal systemgtgt PickPlaceRobot
ltltexternal systemgtgt AssemblyRobot
ltltentitygtgt OperationServer
24Collaboration Diagrams Ship Part
C2 Part Request
C7 Part Complete
ltltuser interfacegtgt ProductionManager Interface
ltltstate dependent ctrlgtgt ShippingWorkStation Con
troller
ltltstate dependent ctrlgtgt lastLineWorkStation Contr
oller
B15C3 Part Coming
C4 Part Arrived
C8 Production Info
C5 Pick Place Robot Command
C6 Pick Place Robot Status
ltltactorgtgt
ltltexternal systemgtgt PickPlaceRobot
ProductionManager
Use Cases
25Subsystem Structuring
- Idea we structure the system in subsystems and
then develop the subsystem collaboration diagrams - Two things to considerate
- Geographical distribution (e.g. client/server)
- Use-case-based collaboration diagrams
- From View alarms alarm handler server, operator
interface - From View ws status ws status server
- From Create/update operation/process plan
process engineer interface, operation server and
process plan server - Two servers used together ? process planning
server - Process planning server process engineer
interface ? process planning subsystem - From Create/modify work order production manager
interface, part server, work order server - Two servers ? production management server
- From Manufacture part Receiving/Line/Shipping
Workstation controller, ws status server - All in a part processing subsystem
26Factory Automation System
ltltsystemgtgt FactoryAutomationSystem
ltltactorgtgt
Process Plan Input
ltltaggregate subsystemgtgt ProcessPlanning
ltltserver subsystemgtgt AlarmHandling Server
Process Engineer
Process Plan Info
Process Plan Info
Alarm Data
Operation Info
Alarm Request
Process Plan Request
Next Operation Request
Alarm
Operator Request
Production Input
WS Request
ltltactorgtgt
ltltactorgtgt
Start Part
ltltuser interfacegtgt Operator Interface
ltltaggregate subsystemgtgt Production Management
ltltaggregate subsystemgtgt PartProcessing
WS Data
Operator
Production Info
Display Info
Part Complete
Production Manager
Assembly Robot Command
Pick Place Robot Status
Assembly Robot Status
Pick Place Robot Command
ltltexternal systemgtgt PickPlaceRobot
ltltexternal systemgtgt AssemblyRobot
Tasks
27Process Planning Subsystem
ltltaggregate subsystemgtgt ProcessPlanning
ltltactorgtgt
Process Plan Input
ltltuser interfacegtgt ProcessEngineer Interface
Process Engineer
Process Plan Info
Create Process Plan
Create Operation
Operation Info
Process Plan Info
ltltserver subsystemgtgt ProcessPlanningServer
Operation Request
ltltentitygtgt Operation Server
ltltentitygtgt ProcessPlan Server
Operation Info
Operation Info
Process Plan Request
Process Plan Info
Next Operation Request
ltltaggregate subsystemgtgt Production Management
ltltaggregate subsystemgtgt PartProcessing
Tasks
28Production Management Subsystem
ltltaggregate subsystemgtgt ProductionManagement
Production Input
ltltactorgtgt
Start Part
ltltuser interfacegtgt Production Manager Interface
ltltaggregate subsystemgtgt PartProcessing
Part Complete
Production Info
Production Manager
Work Order Info
Create
Process Plan Request
ltltserver subsystemgtgt ProductionManagementServer
Process Plan Info
ltltentitygtgt WorkOrder Server
ltltserver subsystemgtgt ProcessPlanning Server
Part Info
Create
ltltentitygtgt PartServer
Tasks
29Part Processing Subsystem
ltltserver subsystemgtgt AlarmHandling Server
ltltaggregate subsystemgtgt Process Planning
Alarm
Alarm
Next Operation Request
Operation Info
Alarm
Tasks
ltltaggregate subsystemgtgt PartProcessing
Part Complete
Part Coming
Part Coming
Start Part
ltltaggregate subsystemgtgt Production Management
ltltctrl subsystemgtgt Receiving Workstation Control
ler
ltltctrl subsystemgtgt Shipping Workstation Controll
er
ltltctrl subsystemgtgt Line Workstation Controller
Part Request
Part Request
WS Status
Pick Place Robot Command
ltltserver subsystemgtgt Workstation StatusServer
Pick Place Robot Status
Pick Place Robot Command
Assembly Robot Command
WS Data
Pick Place Robot Command
Pick Place Robot Status
WS Request
Assembly Robot Status
Pick Place Robot Status
ltltuser interfacegtgt Operator Interface
ltltexternal systemgtgt Assembly Robot
ltltexternal systemgtgt PickPlace Robot
ltltexternal systemgtgt PickPlace Robot
ltltexternal systemgtgt PickPlace Robot
30Static Model of Composite Classes
1
Is Client of
ltltserver subsystemgtgt Process Planning Server
ltltuser interfacegtgt Process Engineer Interface
1..
1
1
Is Client of
Is Client of
Sends Part to
1
1..
1
1
1
ltltcontrol subsystemgtgt Receiving WS Controller
ltltuser interfacegtgt Production Manager Interface
ltltcontrol subsystemgtgt Line WS Controller
ltltcontrol subsystemgtgt Shipping WS Controller
1
Starts Part at
Sends Part to
Sends Part to
1
1
1
1
1
1
1
1
1
1
Sends WS status to
1
ltltserver subsystemgtgt Workstation Status Server
Is Client of
Sends Message to
1..
Is Client of
1
1
ltltuser interfacegtgt Operator Interface
ltltserver subsystemgtgt Production Management Server
Sends Alarm to
1..
Is Client of
1
1
ltltserver subsystemgtgt AlarmHandling Server
1
Sends Alarm to
1
Conceptual model
Sends Alarm to
31Distributed Software Architecture
- Idea each component of a distributed
architecture executes on its own physical node
and communicates with other components with
messages. Steps - 1. Splitting system in separate nodes can
operate separately - Each ws controller each one can operate if
others are unavailable (?sensors and actuators
associated to them) - Process planning server, production management
s., alarm handling s. if separated can respond
quickly to requests - Ws status server two possibilities
- One server for the whole system
- One per ws
- The second one is better for two reasons
- High message traffic between this server and
corresponding line ws controller - Each ws node can supply both controller and
server - Interfaces subsystems production manager (1),
process engineer (1 each), operator(1 each)
32Distributed Software Architecture
- 2. Design precise message communication
- Synchronous msg for client/server communication
- Loosely coupled msg for alarms,
- For greatest flexibility, loosely coupled msg for
communication between various ws controller
components, production manager interface, robots
and alarm handling server - 3. Multiple-client/multiple-server communication
- Operator interface ws status server
- Status displayed not only when requested, but on
change - Can receive data from differents workstations
concurrently
33Factory Automation System Subsystem Interfaces
ltltsystemgtgt FactoryAutomationSystem
ltltactorgtgt
Process Plan Input
ltltaggregate subsystemgtgt ProcessPlanning
ltltserver subsystemgtgt AlarmHandling Server
Process Engineer
Process Plan Info
next Operation Request (in request,
out operation Info)
alarm Request (in request, out alarmData)
processPlan Request (in request, out
processPlan Info)
alarmNotification (alarmData)
alarm (alarmData)
WS_Request (in request, out wsData)
Operator Request
Production Input
ltltactorgtgt
ltltactorgtgt
startPart (partInfo)
ltltuser interfacegtgt Operator Interface
ltltaggregate subsystemgtgt Production Management
ltltaggregate subsystemgtgt PartProcessing
part Complete (partInfo)
WS Notification (wsData)
Operator
Production Info
Display Info
Production Manager
assembly RobotCommand
pickplace Robot Status
assembly RobotStatus
pickplace Robot Command
ltltexternal systemgtgt PickPlaceRobot
ltltexternal systemgtgt AssemblyRobot
Back
34Process Planning Subsystem Subs. Interfaces
ltltaggregate subsystemgtgt ProcessPlanning
Process Plan Input
ltltactorgtgt
ltltuser interfacegtgt ProcessEngineer Interface
Process Engineer
Process Plan Info
createProcess PlanRequest (in request,
out processPlanInfo)
createOperation Request (in request, out
operationInfo)
ltltserver subsystemgtgt ProcessPlanningServer
operationRequest (in request, out operationInfo)
ltltentitygtgt Operation Server
ltltentitygtgt ProcessPlan Server
processPlanRequest (in request, out
processPlanInfo)
nextOperation Request (in request, out
operationInfo)
ltltaggregate subsystemgtgt Production Management
ltltaggregate subsystemgtgt PartProcessing
Back
35Production Management Subsystem S. Interfaces
ltltaggregate subsystemgtgt ProductionManagement
Production Input
ltltactorgtgt
startPart (partInfo)
ltltuser interfacegtgt Production Manager Interface
ltltaggregate subsystemgtgt PartProcessing
partComplete (partInfo)
Production Info
Production Manager
workOrderRequest (in request, out workOrderInfo)
processPlanRequest (in request,
out processPlanInfo)
ltltserver subsystemgtgt ProductionManagementServer
ltltentitygtgt WorkOrder Server
ltltserver subsystemgtgt ProcessPlanning Server
partInfoRequest (in request, out partInfo)
ltltentitygtgt PartServer
Back
36Part Processing SubsystemSubsystem Interfaces
ltltserver subsystemgtgt AlarmHandling Server
ltltaggregate subsystemgtgt Process Planning
alarm (alarmData)
alarm (alarmData)
nextOperation Request (in request, out
operationInfo)
alarm (alarmData)
Back
ltltaggregate subsystemgtgt PartProcessing
part Coming (partInfo)
part Coming (partInfo)
part Complete (partInfo)
startPart (partInfo)
ltltaggregate subsystemgtgt Production Management
ltltctrl subsystemgtgt Receiving Workstation Control
ler
ltltctrl subsystemgtgt Shipping Workstation Controll
er
ltltctrl subsystemgtgt Line Workstation Controller
part Request (partInfo)
part Request (partInfo)
ws Status (status)
pickPlace Robot Command
ltltserver subsystemgtgt Workstation StatusServer
pickPlace RobotStatus
pickPlace Robot Command
ws Notification (wsData)
pickPlace Robot Command
assembly Robot Status
wsRequest (in request, out wsData)
pickPlace Robot Status
assembly Robot Command
pickPlace RobotStatus
ltltuser interfacegtgt Operator Interface
ltltexternal systemgtgt Assembly Robot
ltltexternal systemgtgt PickPlace Robot
ltltexternal systemgtgt PickPlace Robot
ltltexternal systemgtgt PickPlace Robot
37System Configuration
- To configure individual target systems we may
- Define different workastations
- Define parameters such as wsID, alarm name, for
parameterized components - Connect component instance and allocate them to
phisical nodes - There are different target configurations
- Highly distributed see next slide
- Localized autonomy
- Adequate performance
- Failure of a node not impacting on another
immediately - Grouping process planning server, production
management s., alarm handling server - As above Process engineer interface
production manager interface in a single node - Multiuser interactive node
38System Configuration
ProcessEngineer Interface 1 per Engineer
Prodution ManagerInterface 1 node
ltltInternetgtgt
ProcessPlanning Server 1 node
ProductionMa- nagementServer 1 node
AlarmHandling Server 1 node
Operator Interface 1 per operator
ltltfactory LANgtgt
Receiving WS Controller 1 node
Line WS Node 1 node
Shipping WS Controller 1 node