Download presentation
Presentation is loading. Please wait.
Published byGilbert Hoover Modified over 9 years ago
1
Comet, a Case Study Distributed Factory Automation System Software Engineering 2000-2001 Petta Davide
2
Summary 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
3
Problem 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
4
Problem 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
5
Use 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 pick&place, assembly robot) Receive part Process part at workstation Ship part Use just-in-time algorithm: ws receive part only when ready to process
6
Use Case Model View alarms Generate ws Status And Notify View ws status Generate Alarm And Notify > FactoryOperatorUseCasePackage Factory Operator Factory Robot Create/Update Operation Create/Update Process Plan > ProcessEngineerUseCasePackage Process Engineer >
7
Use Case Model Manufacture Part Create/Modify Work Order > ProductionManagerUseCasePackage > Ship Part Process Part At Workstation Receive Part > Production Manager Assembly Robot Pick & Place Robot
8
Conceptual Static Model Is very important for this case: it’s 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 Pick&Place and Assembly robots Receiving, shipping have only Pick&Place 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
9
> Process Engineer > Process Plan > Operation > Part > Work Order > Production Manager > Factory > Factory Workstation > Shipping Workstation > Alarm > Factory Operator > Workstation Status > Line Workstation > Receiving Workstation <<external system>> Assembly Robot <<external system>> Pick&Place Robot 10..1 1..* Views * * * * 1 1 1 Processes Generates * 1 1..* Creates * 1 Defines # of 1..* 1 1 * Creates 1 1..* Contains Creates 1 * Defines 1 1..* Conceptual Static Model Composite classes
10
> ProductionManager > AssemblyRobot 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 nextOperation#:Integer startDate : Date finishDate : Date > ProcessEngineer Classes and Their Attributes > ProcessPlan partType : String rawMaterialType:String numberOfSteps : Integer > Alarm > FactoryOperator > Part > WorkstationStatus > WorkOrder > Operation > Pick&PlaceRobot userID : String password : String shift : Integer factoryArea : String userID : String password : String shift : Integer userID : String password : String engineerPrivileges:String alarmNumber : Integer alarmType : String alarmMessage : String workstationID : String factoryArea : String location : String state : WorkstationState robotID : Integer state : RobotState robotID : Integer state : RobotState maxWeight : Integer operation# : Integer operationName: String workstationType:WsType programName : String cycleTime : Integer
11
> Production Manager System Context Model > Factory Automation System 1..* > FactoryOperator > Pick&PlaceRobot > AssemblyRobot > ProcessEngineer 1..* 1 1 1 1 1 1 Interacts with Interacts with Interfaces to Interfaces to Interacts with One external class per actor:
12
Object 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
13
Finite 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 pick&place 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
14
Line W.S. Controller Statechart Line Workstation Controller Superstate B1: Workstation Startup Part Processing Superstate Part Requesting Superstate Part Requesting Part Processing Superstate Part not Requested Part has been Requested B1: Workstation Startup B15: Part Coming C2: Part Request
15
Line W.S. Controller Statechart Awaiting Part From Predecessor WS Robot Picking Assembling Part Awaiting Part Request from Successor WS Part Arriving Robot Placing B1:WS startup / B2: Part Request B3:Part Coming/ B4: Next Operation Request Part Processing Superstate B8:Part Arrived/ B9: Robot Pick B10:Part Ready/ B11: Start Assembly B14:Part Placed/ B15: Part Coming B15a: Part Request B12: Operation End [Part Has Been Requested] / B13: Robot Place B12: Operation End [Part Not Requested] C2: Part Request / B13: Robot Place
16
Dynamic 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
17
S1.1: Alarm Request Collab. Diagrams: View Alarms, View WS Status > : OperatorInterface > : AlarmHandlingServer > : FactoryOperator S1: Operator Request > : OperatorInterface > : WorkstationStatusServer > : FactoryOperator S1.3: Display Info S1.2: Alarm Data V1: Operator Request V1.3: Display Info V1.1: WS Status Request V1.2: Workstation Data Use Cases
18
Collab. Diagrams: Generate Alarm and Notify M1: Workstation Input > : Robot > : WorkstationController > : FactoryOperator M4: Display Info > : AlarmHandlingServer > : OperatorInterface M2: Alarm M3: Alarm Multicast Use Cases
19
Collab. Diagrams: Generate WS Status and Notify N1: Workstation Input > : Robot > : WorkstationController > : FactoryOperator N4: Display Info > : WorkstationStatusServer > : OperatorInterface N2: Workstation Data N3: Workstation Status Multicast Use Cases
20
Collab. Diagrams: Create/Update Operation, Create/Update Process Plan > : ProcessEngineerInterface > : ProcessPlanServer > : ProcessEngineer O1: Operation Input, P2: Process Plan Input > : OperationServer P2.2: Operation Request P2.3: Operation Info O1.3: Operation Info, P2.5: Process Plan Info P2.1: Create Process Plan P2.4: Process Plan Info O1.1: Create Operation O1.2: Operation Info Use Cases
21
Collab. Diagrams: Create/ Modify Work Order > : ProcessEngineerInterface > : ProcessPlanServer > : ProductionManager R1, R2: Production Input > : WorkOrderServer R2.2: Create R2.3: Part Info R1.3, R2.5: Production Info R1.1: Process Plan Request R1.2: Process Plan Info R2.1: Create R2.4: Work Order Info > : PartServer Use Cases
22
Collaboration Diagrms: Receive Part > : ProductionManager Interface > : Pick&PlaceRobot > firstLineWS Controller > : ReceivingWS Controller > : ProductionManager A1: Production Input A5 = B3: Part Coming A3: Pick & Place Robot Command A4: Pick & Place Robot Status A2: Start Part B2: Part Request Use Cases Note: it isn’t an UML notation
23
Collaboration Diagrams: Process Part at WS > : AssemblyRobot > successorLine WorkStationController > aLineWorkStation Controller C2, C15a: Part Request B11: Start Assembly B2, B15a: Part Request > : Pick&PlaceRobot > : OperationServer > predecessorLine WorkStationController > : ProcessPlanServer A15=B3: Part Coming B15=C3: Part Coming B5: Operation Request B6: Operation Info B12: Operation End B4: Next Operation Request B7: Operation Info B9: Robot Pick, B13: Robot Place B8: Part Arrived, B10: Part Ready, B14: Part Placed
24
Collaboration Diagrams: Ship Part > : ProductionManager Interface > : ShippingWorkStation Controller C2: Part Request > lastLineWorkStation Controller B15=C3: Part Coming > : Pick&PlaceRobot > : ProductionManager C7: Part Complete C5: Pick & Place Robot Command C4: Part Arrived C6: Pick & Place Robot Status C8: Production Info Use Cases
25
Subsystem 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
26
Factory Automation System > : Production Manager > : Process Engineer <<aggregate subsystem>> : ProcessPlanning > : Operator Start Part <<server subsystem>> : AlarmHandling Server <<aggregate subsystem>> : Production Management <<aggregate subsystem>> : PartProcessing > : Operator Interface <<external system>> : Pick&PlaceRobot <<external system>> : AssemblyRobot > : FactoryAutomationSystem Process Plan Input Process Plan Info Process Plan Info Process Plan Request Production Input Production Info Operation Info Display Info Alarm Request Alarm Data Part Complete WS Request WS Data Operator Request Assembly Robot Command Assembly Robot Status Pick & Place Robot Command Pick & Place Robot Status Next Operation Request Tasks
27
Process Planning Subsystem : Process Engineer Operation Request > : ProcessPlanning Process Plan Input Process Plan Info Process Plan Info Create Process Plan Operation Info <<aggregate subsystem>> : Production Management <<aggregate subsystem>> : PartProcessing Next Operation Request Operation Info Process Plan Request Process Plan Info Create Operation Info > : ProcessPlanningServer > : ProcessEngineer Interface Tasks > : ProcessPlan Server > : Operation Server
28
Production Management Subsystem > Start Part <<aggregate subsystem>> : PartProcessing Production Input Production Info Part Complete > : ProductionManagement > : Production Manager Interface > : WorkOrder Server > : PartServer <<server subsystem>> : ProcessPlanning Server Process Plan Request Process Plan Info : Production Manager Create Work Order Info Part Info > : ProductionManagementServer Tasks
29
Part Processing Subsystem <<server subsystem>> : AlarmHandling Server <<aggregate subsystem>> : Process Planning <<aggregate subsystem>> : Production Management > : Receiving Workstation Controller > : Shipping Workstation Controller > : Line Workstation Controller <<server subsystem>> : Workstation StatusServer > : Operator Interface <<external system>> : Assembly Robot <<external system>> : Pick&Place Robot <<external system>> : Pick&Place Robot <<external system>> : Pick&Place Robot Alarm WS Request WS Data Start Part Coming Part Request Part Coming Part Complete Part Request Pick & Place Robot Command Pick & Place Robot Command Pick & Place Robot Command Operation Info Next Operation Request Pick & Place Robot Status Pick & Place Robot Status Pick & Place Robot Status Assembly Robot Command Assembly Robot Status WS Status Tasks > : PartProcessing
30
Static Model of Composite Classes <<server subsystem>> AlarmHandling Server > Operator Interface <<server subsystem>> Workstation Status Server <<control subsystem>> Line WS Controller <<control subsystem>> Shipping WS Controller <<control subsystem>> Receiving WS Controller > Production Manager Interface <<server subsystem>> Process Planning Server > Process Engineer Interface <<server subsystem>> Production Management Server Is Client of 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1..* 1 1 1 1 1 1 1 1 Is Client of Starts Part at Sends Part to Sends WS status to Sends Alarm to Sends Alarm to Sends Alarm to Sends Message to Conceptual model
31
Distributed 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)
32
Distributed 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
33
alarm Request (in request, out alarmData) Factory Automation System: Subsystem Interfaces > : Production Manager > : Process Engineer <<aggregate subsystem>> : ProcessPlanning > : Operator startPart (partInfo) <<server subsystem>> : AlarmHandling Server <<aggregate subsystem>> : Production Management <<aggregate subsystem>> : PartProcessing > : Operator Interface <<external system>> : Pick&PlaceRobot <<external system>> : AssemblyRobot > : FactoryAutomationSystem Process Plan Input Process Plan Info processPlan Request (in request, out processPlan Info) Production Input Production Info Display Info alarm (alarmData) alarmNotification (alarmData) part Complete (partInfo) WS_Request (in request, out wsData) WS Notification (wsData) Operator Request assembly RobotCommand assembly RobotStatus pick&place Robot Command pick&place Robot Status next Operation Request (in request, out operation Info) Back
34
createProcess PlanRequest (in request, out processPlanInfo) Process Planning Subsystem: Subs. Interfaces : Process Engineer > : ProcessPlan Server > : Operation Server > : ProcessPlanning Process Plan Input Process Plan Info <<aggregate subsystem>> : Production Management <<aggregate subsystem>> : PartProcessing > : ProcessPlanningServer > : ProcessEngineer Interface createOperation Request (in request, out operationInfo) operationRequest (in request, out operationInfo) processPlanRequest (in request, out processPlanInfo) nextOperation Request (in request, out operationInfo) Back
35
workOrderRequest (in request, out workOrderInfo) Production Management Subsystem: S. Interfaces > startPart (partInfo) <<aggregate subsystem>> : PartProcessing Production Input Production Info partComplete (partInfo) > : ProductionManagement > : Production Manager Interface > : WorkOrder Server > : PartServer <<server subsystem>> : ProcessPlanning Server processPlanRequest (in request, out processPlanInfo) : Production Manager partInfoRequest (in request, out partInfo) > : ProductionManagementServer Back
36
ws Status (status) Part Processing Subsystem: Subsystem Interfaces <<server subsystem>> : AlarmHandling Server <<aggregate subsystem>> : Process Planning <<aggregate subsystem>> : Production Management > : Receiving Workstation Controller > : Shipping Workstation Controller > : Line Workstation Controller <<server subsystem>> : Workstation StatusServer > : Operator Interface <<external system>> : Assembly Robot <<external system>> : Pick&Place Robot <<external system>> : Pick&Place Robot <<external system>> : Pick&Place Robot alarm (alarmData) ws Notification (wsData) wsRequest (in request, out wsData) startPart (partInfo) part Coming (partInfo) part Request (partInfo) pick&Place Robot Command pick&Place Robot Command nextOperation Request (in request, out operationInfo) pick&Place Robot Status pick&Place RobotStatus assembly Robot Status alarm (alarmData) alarm (alarmData) part Coming (partInfo) part Request (partInfo) part Complete (partInfo) pick&Place Robot Command pick&Place RobotStatus assembly Robot Command Back > : PartProcessing
37
System 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
38
System Configuration : ProcessEngineer Interface {1 per Engineer} : Prodution ManagerInterface {1 node} > : Receiving WS Controller {1 node} > : AlarmHandling Server {1 node} : Operator Interface {1 per operator} : Line WS Node {1 node} : Shipping WS Controller {1 node} : ProcessPlanning Server {1 node} : ProductionMa- nagementServer {1 node}
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.