Mem Zone

Die Realisierung eines Speicherelements, das sich setzen und rücksetzen lässt, erfolgt durch die automatische Einfügung von zwei Zonen. Das Setzen und Rücksetzen erfolgt jeweils mit den Operanden „S”, während die Abfrage des Speichers mit den Operanden „I” möglich ist. Dies ist sowohl bei der normalen Zone (Abfrage auf logisch 1) als auch bei der invertierten Zone (Abfrage auf logisch 0) durchführbar.

Copy

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

      // Zone Condition Assigns
      aCondZone10[0] := TRUE;

      fbZone10.P_iIndexOfLamp := 29;
      fbZone10.P_iIndexOfPaircheckLamp := 30;
      fbZone10.P_xInputPolarity := eInputPolarity.Active_High;
      fbZone10.P_xOutputOpposite := FALSE;
      fbZone10.P_xManualRelease := GVL_Sequence1.stSeqIf.xSeqManualReleased;
      fbZone10.P_xFeedbackInput := GVL_Sequence1_IOs.o_xZoneMem10;
      fbZone10.P_xManualPB := FALSE;
      fbZone10.P_timFeedbackInput := T#0MS;
      fbZone10.P_xNoPBPressed := GVL_Sequence1.stSeqIf.xSeqNoPBpressed;
      fbZone10.P_xAutomaticRelease := GVL_Sequence1.stSeqIf.xSeqAutomaticReleased;
      fbZone10.P_iActualStepCounter := GVL_Sequence1.iStepCounter;
      
      fbZone10( // Zone Mem 10
         aZone := aZ10,
         aLampMatrix := aMatrix,
         aTempMatrix := aTemp,
         aMonMatrix := GVL_Sequence1_HMI.aHmiMon,
         aMonBuffer := GVL_Sequence1_HMI.aHmiMonBuffer,
         aStepMatrix := aStep);
      
      xOutputTempZ10 := fbZone10.M_InOutput(
         aCross := aCrossZone10,
         aCond := aCondZone10,
         aFeedbackPairCheckInput := aPaircheckZone10);

      GVL_Sequence1_IOs.o_xZoneMem10 S= xOutputTempZ10;

      // Feedback state
      xFeedbackStateZone10 := fbZone10.P_xFeedbackState;

   // --------------------------- ZONE 11 | Zone Mem 10 ---------------------------

      // Zone Condition Assigns
      aCondZone11[0] := TRUE;

      fbZone11.P_iIndexOfLamp := 31;
      fbZone11.P_iIndexOfPaircheckLamp := 32;
      fbZone11.P_xInputPolarity := eInputPolarity.Active_Low;
      fbZone11.P_xOutputOpposite := FALSE;
      fbZone11.P_xManualRelease := GVL_Sequence1.stSeqIf.xSeqManualReleased;
      fbZone11.P_xFeedbackInput := GVL_Sequence1_IOs.o_xZoneMem10;
      fbZone11.P_xManualPB := FALSE;
      fbZone11.P_timFeedbackInput := T#0MS;
      fbZone11.P_xNoPBPressed := GVL_Sequence1.stSeqIf.xSeqNoPBpressed;
      fbZone11.P_xAutomaticRelease := GVL_Sequence1.stSeqIf.xSeqAutomaticReleased;
      fbZone11.P_iActualStepCounter := GVL_Sequence1.iStepCounter;
      
      fbZone11( // Zone Mem 10
         aZone := aZ11,
         aLampMatrix := aMatrix,
         aTempMatrix := aTemp,
         aMonMatrix := GVL_Sequence1_HMI.aHmiMon,
         aMonBuffer := GVL_Sequence1_HMI.aHmiMonBuffer,
         aStepMatrix := aStep);

      xOutputTempZ11 := fbZone11.M_InOutput(
         aCross := aCrossZone11,
         aCond := aCondZone11,
         aFeedbackPairCheckInput := aPaircheckZone11);

      GVL_Sequence1_IOs.o_xZoneMem10 R= xOutputTempZ11 OR (GVL_Sequence1_HMI.stHmiIf.xHmiPbReset AND NOT GVL_Sequence1.stSeqIf.xSeqAutomaticReleased);

      // Feedback state
      xFeedbackStateZone11 := fbZone11.P_xFeedbackState;

Zuletzt aktualisiert

War das hilfreich?