7. PROBLEMS IN FEATURE BASED TECHNIQUES
1.1 A.2 Graphic User Interface
7.7.7 Process Plan Optimisation
7.7.7.2 Component level plan optimisation
The feature level process plans are set-up (machining datum) dependent. The optimisation strategy at component level could be focused on minimising the number of cutting tools and therefore, reducing the tool changing time and tool inventory cost. For a given machining operation, the tool for operation attribute in the CAPP system generates the following tool parameters:
toolForOpr := (tool type, minToolDia, toolDia, maxToolDia, minCutHgt). where, toolDia is the optimum recommended tool diameter at feature level
planning.
minToolDia & maxToolDia arc the minimum and maximum allowable tool diameters respectively.
minCutHgt is the minimum cutting height.
Therefore, a suitable method can be developed at component level to reduce the number of cutting tools by parsing the minimum and maximum tool diameters, and minimum cutting height attributes for similar tool ypes. For optimum machining cost, the component batch quantity and available tool inventory should be considered. The component class definition should be modified to assign the batch quantity attribute. The minimum cost justification approach should provide further refinement o f cutting tools by proposing special purpose multiple operation tools. This is where the author believes that the design for manufacturing approach should be beneficial, because process optimisation will need both process planning and process design capability. Therefore, the manual process assignment interface has been developed to assign special processes.
The other issue at component level plan optimisation deals with sequencing feature machining operations to minimise tool changing and tool approach times. In optimising process sequence, factors such as roughing and finishing operations, operation precedence in feature machining and explicit tolerances between features and therefore finish machining operation precedence, are considered to be important. The method, ‘show machining process’, generates the process sequence for a given set-up at feature machining level. The method is illustrated below:
class Component m ethod printAuto Process
"prints an auto process of a Component instance"
|setUpNums addFtrs procSctUp subChildren aUSubChildren nextSubChildren workMaillnst) setUpNums : - # ( l 2 3 4 5 6).
nextSubChildren :■ OrderedCoUection new. "1. Get all the additive features of a component" addFtrs :■ self showAllAddFeatures. addFtrs is Empty
if! rue:[ Test answer: self name, 'No additive features in the monel!') ifFalse:[Test answer: 'Automated Process Plan';
answer. 'Component Name: '.self name.
(w orkM alllnst:- Material getMatllnst: (self showCompondotlnst) material) isNil ifFalse:[Test answer: ‘Component Material: '.workMatllnst name;
answer: 'Matl Description: '.workMalllnst description,' ','Matl Condition: '.wortMatllnst conditionDescr,
answer: 'Material Specifications: '.workMatllnst spec,' '.'Material Hardness: '.workMatllnst hardness printString].
T est answer:
setUpNums do:[setUpNnmber]
ad d F trs d o :(:a d d F tr |
(addFtr match SetUpsetUpNumber)isNil
ifFalse:[Test answ er *SetUp N o:', setUpNumber pnntString;
answer: Tixture For SetU p:', (self getFixture: setUpNumber); answ er:''.
addFtr printFtProcess: setUpNumber.
subChildren := addFtr getSubChildrenSameDatum: (self getDatum: setUpNumber). allSubChildren := addFtr getAllSubChildrenSameDatum: (self getDatam: setUpNumber). [allSubChildren isEmpty]
whileFalse: [subChildren do:[:aFeature | printFtProcess: setUpNum "Prints the feature process/es in a setUpNo"
[option | option :* 1. (self process isEmpty)
ifTrue:[*nil]
ifFalse:[((self process at:l) setUpNo = setUpNum) ifFalse:[*nil]].
(self process) size > 1
ifTrue:[Test answer(self process) size printString,' '.'Options Exist to machine ’.self name, self process do:[:each|
Test answer'Option no: '.option printString. each printProcess: self,
option :» option + 1]]
ifFalse:[Test answer: 'Machining Process for ’.self name. (self process aril) printProcess: self]
class FlProcess
method printProcess: «Feature
"prints the process attributes on the text pane."
ii
self getProcSeq do: [:each | Test answer: ’ ’.
Test answer: 'Opr No: '.each ftOprNo printString,'; Opr Name: '.(each oprType),' '.(each oprName) printString.
(each precedsOpr) is Nil
ifFalse:[each precedsOpr * 'Parent Finish'
ifTrue:[Test answ er (each oprType),' '.(each oprName) printString,' ’, 'MUST P R EC ED E', (aFeature childOO nam e,' Finishing],
each precedsOpr =Tarent Operation'
ifTrue:[Test answ er (each oprType),’ '.(each oprName) printString,'', 'MUST PRECEDE ’, (aFeature childOO name, ’ Operation'].
i-
(each toolForOpr) isNil
ifFalse:[Test answer: Tool For Opr: '.(each toolFotOpr) printString]. (each speed) isNil
ifFadse:[Test answer: 'Recommended Cutting Speed: '.(each speed) printString,' ','Feed: '.(each feed) printString].
(each mcForOpr) isNil
ifFalse:[Test answer: 'Machine For Opr: '.(each mcFoiOpr) printString]. (each isKindOf: Hole Making Process)
iiTrue:[Tesl answer: (each oprType),' '.(each oprName) printString,' Cycle Locations...'; answer'PoaitionPt: '.(each positionPt) printString;
answer'ApproachPt: '.(each approachPt) printSlring; answer'PlungePt : '.(each plungePt) pnntString; answ er'R etractPt: '.(each return Pt) prirtString; answer:'Dwell(Sec): '.(each dwellTime) pnntStnng; answer:"].
((aFeature isKindOf: Pocket) and:[(each isKindOf: End Mi I ling)])
i(Tnie:[Test answer: (each oprType),’ '.(each o-xName) printString.' Cycle Locations...'; aaswer'PositioaPt : '.(each positionPt) printString;
answer'Approach Plane: '.(each approach Plane) printString; answer:'ZWorkPlane : '.(each zWorkP ane) printString; answer'RetractPlane : '.(each retractPlane) printString;
a n s w e r 'C le a r P la n e : ',(each d e a r P la n e ) p rin tS trin g ; a n s w e r" ]] .
T est a n s w e r
The above method prints the feature machining operations for the additive feature and its subtractive children. On a simitar approach, component optimum process sequence generation methods can be developed. The following guidelines should be followed:
1. For a given set-up all roughing operations should precede the finishing operations, based on opration type attribute.
2. The machining sequence should follow from shallow to deep feature machining. In addition, proximity feature machining operations should be checked to avoid thin wall machining constraint.
3. The machine tool and fixture constraints should be checked to decide the degrees of freedom for feature approach. This would enable to minimising of the number of set-ups.
4. For each cutting tool parameter, the number of machinable features should be listed and the optimised path of tool approach should be determined to minimise non cutting time of a tool.
5. Sometimes the finishing operation sequence depends upon explicit tolerances between features which may be machined in the same or different set-ups. The explicit tolerances between different features cannot be assigned within the CAPP system. The roughing and finishing plan generation capability has been demonstrated on the basis of feature size tolerance attributes. Heuristic rules could be developed to assign the precedence to the finishing operations such as, facing and profile finishing first, followed by hole finishing. Also, the features with closed tolerance should be machined last.
These are some of the component level pioccss plan optimisation issues that should considered to implement them in the CAPP system.