Decision zone

The decision step is used to decide the further course. The selection of the path to be used is made based on the fulfillment of certain criteria. There are always two paths available.

Copy

   // --------------------------- ZONE 2 | Decision 1 Path 1 ---------------------------

      // Zone Condition Assigns
      aCondZone2[0] := TRUE;
      aPaircheckZone2[0] := FALSE;

      fbZone2.P_iIndexOfLamp := 13;
      fbZone2.P_iIndexOfPaircheckLamp := 14;
      fbZone2.P_xInputPolarity := eInputPolarity.Active_High;
      fbZone2.P_xFeedbackInput := GVL_Sequence1_IOs.i_xDecision_1_Path1;
      fbZone2.P_timFeedbackInput := T#0MS;
      fbZone2.P_xManualRelease := GVL_Sequence1.stSeqIf.xSeqManualReleased;
      fbZone2.P_xNoPBPressed := GVL_Sequence1.stSeqIf.xSeqNoPBpressed;
      fbZone2.P_xAutomaticRelease := GVL_Sequence1.stSeqIf.xSeqAutomaticReleased;
      fbZone2.P_iActualStepCounter := GVL_Sequence1.iStepCounter;
      fbZone2.P_xGhostModeEnable := FALSE;
      fbZone2.P_timGhostMode := T#0MS;
      fbZone2.P_xGhostModeReleased := GVL_Sequence1_HMI.stHmiIf.xHmiPbGhostModeRelease;
      fbZone2.P_xIsSystemZone := TRUE;

      fbZone2( // Decision 1 Path 1
         aZone := aZ2,
         aLampMatrix := aMatrix,
         aTempMatrix := aTemp,
         aMonMatrix := GVL_Sequence1_HMI.aHmiMon,
         aMonBuffer := GVL_Sequence1_HMI.aHmiMonBuffer,
         aStepMatrix := aStep);
      
      fbZone2.M_Input(
         aCross := aCrossZone2,
         aFeedbackPairCheckInput := aPaircheckZone2);

      // Feedback state
      xFeedbackStateZone2 := fbZone2.P_xFeedbackState;

   // --------------------------- ZONE 3 | Decision 1 Path 1 Inv ---------------------------

      // Zone Condition Assigns
      aCondZone3[0] := TRUE;
      aPaircheckZone3[0] := FALSE;

      fbZone3.P_iIndexOfLamp := 15;
      fbZone3.P_iIndexOfPaircheckLamp := 16;
      fbZone3.P_xInputPolarity := eInputPolarity.Active_Low;
      fbZone3.P_xFeedbackInput := GVL_Sequence1_IOs.i_xDecision_1_Path1;
      fbZone3.P_timFeedbackInput := T#0MS;
      fbZone3.P_xManualRelease := GVL_Sequence1.stSeqIf.xSeqManualReleased;
      fbZone3.P_xNoPBPressed := GVL_Sequence1.stSeqIf.xSeqNoPBpressed;
      fbZone3.P_xAutomaticRelease := GVL_Sequence1.stSeqIf.xSeqAutomaticReleased;
      fbZone3.P_iActualStepCounter := GVL_Sequence1.iStepCounter;
      fbZone3.P_xGhostModeEnable := FALSE;
      fbZone3.P_timGhostMode := T#0MS;
      fbZone3.P_xGhostModeReleased := GVL_Sequence1_HMI.stHmiIf.xHmiPbGhostModeRelease;
      fbZone3.P_xIsSystemZone := TRUE;

      fbZone3( // Decision 1 Path 1 Inv
         aZone := aZ3,
         aLampMatrix := aMatrix,
         aTempMatrix := aTemp,
         aMonMatrix := GVL_Sequence1_HMI.aHmiMon,
         aMonBuffer := GVL_Sequence1_HMI.aHmiMonBuffer,
         aStepMatrix := aStep);
      
      fbZone3.M_Input(
         aCross := aCrossZone3,
         aFeedbackPairCheckInput := aPaircheckZone3);

      // Feedback state
      xFeedbackStateZone3 := fbZone3.P_xFeedbackState;

   // --------------------------- ZONE 4 | Decision 1 Path 2 ---------------------------

      // Zone Condition Assigns
      aCondZone4[0] := TRUE;
      aPaircheckZone4[0] := FALSE;

      fbZone4.P_iIndexOfLamp := 17;
      fbZone4.P_iIndexOfPaircheckLamp := 18;
      fbZone4.P_xInputPolarity := eInputPolarity.Active_High;
      fbZone4.P_xFeedbackInput := GVL_Sequence1_IOs.i_xDecision_1_Path2;
      fbZone4.P_timFeedbackInput := T#0MS;
      fbZone4.P_xManualRelease := GVL_Sequence1.stSeqIf.xSeqManualReleased;
      fbZone4.P_xNoPBPressed := GVL_Sequence1.stSeqIf.xSeqNoPBpressed;
      fbZone4.P_xAutomaticRelease := GVL_Sequence1.stSeqIf.xSeqAutomaticReleased;
      fbZone4.P_iActualStepCounter := GVL_Sequence1.iStepCounter;
      fbZone4.P_xGhostModeEnable := FALSE;
      fbZone4.P_timGhostMode := T#0MS;
      fbZone4.P_xGhostModeReleased := GVL_Sequence1_HMI.stHmiIf.xHmiPbGhostModeRelease;
      fbZone4.P_xIsSystemZone := TRUE;

      fbZone4( // Decision 1 Path 2
         aZone := aZ4,
         aLampMatrix := aMatrix,
         aTempMatrix := aTemp,
         aMonMatrix := GVL_Sequence1_HMI.aHmiMon,
         aMonBuffer := GVL_Sequence1_HMI.aHmiMonBuffer,
         aStepMatrix := aStep);
      
      fbZone4.M_Input(
         aCross := aCrossZone4,
         aFeedbackPairCheckInput := aPaircheckZone4);

      // Feedback state
      xFeedbackStateZone4 := fbZone4.P_xFeedbackState;

   // --------------------------- ZONE 5 | Decision 1 Path 2 Inv ---------------------------

      // Zone Condition Assigns
      aCondZone5[0] := TRUE;
      aPaircheckZone5[0] := FALSE;

      fbZone5.P_iIndexOfLamp := 19;
      fbZone5.P_iIndexOfPaircheckLamp := 20;
      fbZone5.P_xInputPolarity := eInputPolarity.Active_Low;
      fbZone5.P_xFeedbackInput := GVL_Sequence1_IOs.i_xDecision_1_Path2;
      fbZone5.P_timFeedbackInput := T#0MS;
      fbZone5.P_xManualRelease := GVL_Sequence1.stSeqIf.xSeqManualReleased;
      fbZone5.P_xNoPBPressed := GVL_Sequence1.stSeqIf.xSeqNoPBpressed;
      fbZone5.P_xAutomaticRelease := GVL_Sequence1.stSeqIf.xSeqAutomaticReleased;
      fbZone5.P_iActualStepCounter := GVL_Sequence1.iStepCounter;
      fbZone5.P_xGhostModeEnable := FALSE;
      fbZone5.P_timGhostMode := T#0MS;
      fbZone5.P_xGhostModeReleased := GVL_Sequence1_HMI.stHmiIf.xHmiPbGhostModeRelease;
      fbZone5.P_xIsSystemZone := TRUE;

      fbZone5( // Decision 1 Path 2 Inv
         aZone := aZ5,
         aLampMatrix := aMatrix,
         aTempMatrix := aTemp,
         aMonMatrix := GVL_Sequence1_HMI.aHmiMon,
         aMonBuffer := GVL_Sequence1_HMI.aHmiMonBuffer,
         aStepMatrix := aStep);
      
      fbZone5.M_Input(
         aCross := aCrossZone5,
         aFeedbackPairCheckInput := aPaircheckZone5);

      // Feedback state
      xFeedbackStateZone5 := fbZone5.P_xFeedbackState;

   // --------------------------- ZONE 6 | Decision 1 XOR ---------------------------

      // Zone Condition Assigns
      aCondZone6[0] := TRUE;
      aPaircheckZone6[0] := FALSE;

      fbZone6.P_iIndexOfLamp := 21;
      fbZone6.P_iIndexOfPaircheckLamp := 22;
      fbZone6.P_xInputPolarity := eInputPolarity.Active_High;
      fbZone6.P_xIsSystemZone := TRUE;
      fbZone6.P_xFeedbackInput := GVL_Sequence1_IOs.i_xDecision_1_Path1 XOR GVL_Sequence1_IOs.i_xDecision_1_Path2;
      fbZone6.P_timFeedbackInput := T#0MS;
      fbZone6.P_xManualRelease := GVL_Sequence1.stSeqIf.xSeqManualReleased;
      fbZone6.P_xNoPBPressed := GVL_Sequence1.stSeqIf.xSeqNoPBpressed;
      fbZone6.P_xAutomaticRelease := GVL_Sequence1.stSeqIf.xSeqAutomaticReleased;
      fbZone6.P_iActualStepCounter := GVL_Sequence1.iStepCounter;

      fbZone6( // Decision 1 XOR
         aZone := aZ6,
         aLampMatrix := aMatrix,
         aTempMatrix := aTemp,
         aMonMatrix := GVL_Sequence1_HMI.aHmiMon,
         aMonBuffer := GVL_Sequence1_HMI.aHmiMonBuffer,
         aStepMatrix := aStep);
      
      fbZone6.M_Input(
         aCross := aCrossZone6,
         aFeedbackPairCheckInput := aPaircheckZone6);

      // Feedback state
      xFeedbackStateZone6 := fbZone6.P_xFeedbackState;

Last updated

Was this helpful?