InOut Zone

Die Zone-InOut vereint eine Input- und Output-Zone. Um den Ausgang anzusteuern, ist es notwendig, den Operanden „S” einzutragen. Dadurch wird der Output der Zone so lange angesteuert, bis der Input der Zone den logischen Wert 1 meldet. Damit ist die Bedingung erfüllt und es kann in den nächsten Schritt weitergeschaltet werden. Soll der Input der Zone überwacht werden, ist dies durch Eintragen des Operanden „I” möglich. Ein Beispiel für die Anwendung der Zone-InOut ist die Steuerung eines Ventils eines Pneumatikzylinders durch den Output der Zone und die Überwachung der Endlage des Zylinders durch den dazugehörigen Input der Zone.

Copy

   // --------------------------- ZONE 9 | Zone 9 ---------------------------

      // Zone Condition Assigns
      aCondZone9[0] := NOT GVL_<Sequence_name>_IOs.i_xZone7;
      aPaircheckZone9[0] := GVL_<Sequence_name>_IOs.i_xZone10;

      fbZone9.P_iIndexOfLamp := 27;
      fbZone9.P_iIndexOfPaircheckLamp := 28;
      fbZone9.P_xInputPolarity := eInputPolarity.Active_High;
      fbZone9.P_xOutputOpposite := GVL_<Sequence_name>_IOs.o_xZone10;
      
      fbZone9( // Zone 9
         xNoPBPressed := GVL_<Sequence_name>.stSeqIf.xSeqNoPBpressed, 
         xAutomaticRelease := GVL_<Sequence_name>.stSeqIf.xSeqAutomaticReleased, 
         iActualStepCounter := GVL_<Sequence_name>.iStepCounter, 
         aZone := aZ9, 
         aLampMatrix := aMatrix, 
         aTempMatrix := aTemp,
         aMonMatrix := GVL_<Sequence_name>_HMI.aHmiMon,
         aMonBuffer := GVL_<Sequence_name>_HMI.aHmiMonBuffer,  
         aStepMatrix := aStep);
      
      GVL_<Sequence_name>_IOs.o_xZone9 := fbZone9.M_InOutput(
         xManualRelease := GVL_<Sequence_name>.stSeqIf.xSeqManualReleased, 
         xFeedbackInput := GVL_<Sequence_name>_IOs.i_xZone9, 
         xManualPB := GVL_<Sequence_name>_HMI.xManBtn_Zone_9, 
         timFeedbackInput := T#0MS, 
         aCross := aCrossZone9, 
         aCond := aCondZone9, 
         aFeedbackPairCheckInput := aPaircheckZone9);

   // --------------------------- ZONE 10 | Zone 10 ---------------------------

      // Zone Condition Assigns
      aCondZone10[0] := NOT GVL_<Sequence_name>_IOs.i_xZone7;
      aPaircheckZone10[0] := GVL_<Sequence_name>_IOs.i_xZone9;

      fbZone10.P_iIndexOfLamp := 29;
      fbZone10.P_iIndexOfPaircheckLamp := 30;
      fbZone10.P_xInputPolarity := eInputPolarity.Active_High;
      fbZone10.P_xOutputOpposite := GVL_<Sequence_name>_IOs.o_xZone9;
      
      fbZone10( // Zone 10
         xNoPBPressed := GVL_<Sequence_name>.stSeqIf.xSeqNoPBpressed, 
         xAutomaticRelease := GVL_<Sequence_name>.stSeqIf.xSeqAutomaticReleased, 
         iActualStepCounter := GVL_<Sequence_name>.iStepCounter, 
         aZone := aZ10, 
         aLampMatrix := aMatrix, 
         aTempMatrix := aTemp,
         aMonMatrix := GVL_<Sequence_name>_HMI.aHmiMon,
         aMonBuffer := GVL_<Sequence_name>_HMI.aHmiMonBuffer,  
         aStepMatrix := aStep);
      
      GVL_<Sequence_name>_IOs.o_xZone10 := fbZone10.M_InOutput(
         xManualRelease := GVL_<Sequence_name>.stSeqIf.xSeqManualReleased, 
         xFeedbackInput := GVL_<Sequence_name>_IOs.i_xZone10, 
         xManualPB := GVL_<Sequence_name>_HMI.xManBtn_Zone_10, 
         timFeedbackInput := T#0MS, 
         aCross := aCrossZone10, 
         aCond := aCondZone10, 
         aFeedbackPairCheckInput := aPaircheckZone10);

Zuletzt aktualisiert

War das hilfreich?