|   IF NOT xInitGraphConveyor1 THEN 
 preCondition1(in_name:='Conveyor1WPAtRamp1',in_value:=FALSE); preCondition2(in_name:='Conveyor1SensorStart',in_value:=TRUE); preConditionArray.addObject(preCondition1); preConditionArray.addObject(preCondition2); postCondition1(in_name:='Conveyor1WPAtRamp1',in_value:=TRUE); postCondition2(in_name:='Conveyer1Pusher1MovedIn',in_value:=TRUE); postConditionArray.addObject(postCondition1); postConditionArray.addObject(postCondition2); oper(in_name:='Conveyor1TransportWPToRamp1',in_operation:='Conveyor1TransportWPToRamp1',in_preConditions:=preConditionArray,in_postConditions:=postConditionArray,in_inverseOperation:='Conveyor1TransportWPBackToStart',in_isRecoveryState:=TRUE); nextGraphElem.addObject('End'); previousGraphElem.addObject('Start'); graphElem(in_name:='Conveyor1TransportWPToRamp1',in_dataType:=tOPERATION,in_nextElements:=nextGraphElem,in_previousElements:=previousGraphElem); graphElem.operation:=oper; graphElemArray.addObject(graphElem); 
 graphConveyor1(in_allGraphElements:=graphElemArray,in_name:='Conveyor1TransportWPToRamp1'); 
 xInitGraphConveyor1 := TRUE; 
 END_IF 
 execute := tOPERATING; isStopped := FALSE; holdingTimer(IN:=FALSE,PT:=T#2S); 
 currentGraphElementArray := graphConveyor1.getCurrentNodes(); allGraphElementArray := graphConveyor1.getAllGraphElements(); graphConveyor1.updateCurrentNodes(); 
 FOR i:=1 TOcurrentGraphElementArray.numberOfObjects() BY 1 DO graphElement := currentGraphElementArray.objectAtIndex(i); operation := graphElement.operation; 
 IFoperation.getOperation() = 'Conveyor1TransportWPToRamp1' THEN operationState := THIS^.transportWPToRamp1(); END_IF 
 IFoperationState = tOPERATINGTHEN graphElement.timeUpdated := FALSE; graphElement.updateTimer(); ELSIFoperationState = tFINISHEDTHEN IF NOTgraphElement.timeUpdatedTHEN 
 timeOperation := operation.timeOperation; timeOperation.updateTime(graphElement.returnTime()); operation.timeOperation := timeOperation; graphElement.timeUpdated := TRUE; graphElement.operation := operation; graphElement.resetTimer(); allGraphElementArray.replaceObject(graphElement); graphConveyor1.setAllGraphElements(allGraphElementArray); 
 END_IF END_IF 
 currentTimeOperation := graphElement.returnTime(); timeOperation := operation.timeOperation; averageTimeOperation := timeOperation.getAverage(); 
 IFaverageTimeOperation> 1 THEN IF currentTimeOperation> (averageTimeOperation + 200) THEN errorDetected := TRUE; ELSE errorDetected := errorDetected OR FALSE; END_IF END_IF 
 graphConveyor1.updateCurrentGraphElement(graphElement); 
 END_FOR 
 
 IFerrorDetectedTHEN execute := tERROR; ELSIFgraphConveyor1.isFinished() THEN execute := tFINISHED; END_IF  |