Timer Zone

Das Timer-Element ermöglicht die Modellierung von zeitabhängigen Schritten. Ein Timer-Schritt kann erst in den folgenden Schritt wechseln, wenn eine bestimmte Zeit abgelaufen ist. Diese Zeit wird durch einen Timer-Parameter festgelegt. Ein Beispiel hierfür wäre ein zeitgesteuerter Rührvorgang in einem Tank, bei dem der Schritt erst dann zum nächsten Schritt übergeht, wenn die vordefinierte Rührzeit abgelaufen ist. In diesem Codeabschnitt wird der Funktionsbaustein fbTon2 für den Timer Step aufgerufen und die dafür konfigurierte Zeit übergeben.

Copy

// --------------------------- TIMER CALLS ---------------------------
      fbTon2(IN:= GVL_Sequence1.iStepCounter = 2 AND GVL_Sequence1.stSeqIf.xSeqAutomaticReleased, PT:= T#5000MS);

   // --------------------------- ZONE 1 | Step 2 Timer ---------------------------

      // Zone Condition Assigns
      aCondZone1[0] := TRUE;
      aPaircheckZone1[0] := FALSE;

      fbZone1.P_iIndexOfLamp := 11;
      fbZone1.P_xInputPolarity := eInputPolarity.Active_High;
      fbZone1.P_xManualRelease := GVL_Sequence1.stSeqIf.xSeqManualReleased;
      fbZone1.P_xFeedbackInput := fbTon2.Q;
      fbZone1.P_xManualPB := FALSE;
      fbZone1.P_timFeedbackInput := T#0MS;
      fbZone1.P_xNoPBPressed := GVL_Sequence1.stSeqIf.xSeqNoPBpressed;
      fbZone1.P_xAutomaticRelease := GVL_Sequence1.stSeqIf.xSeqAutomaticReleased;
      fbZone1.P_iActualStepCounter := GVL_Sequence1.iStepCounter;
      fbZone1.P_xIsSystemZone := TRUE;

      fbZone1( // Step 2 Timer
         aZone := aZ1,
         aLampMatrix := aMatrix,
         aTempMatrix := aTemp,
         aMonMatrix := GVL_Sequence1_HMI.aHmiMon,
         aMonBuffer := GVL_Sequence1_HMI.aHmiMonBuffer,
         aStepMatrix := aStep);

      GVL_Sequence1_IOs.o_xZone_1 := fbZone1.M_InOutput(
         aCross := aCrossZone1,
         aCond := aCondZone1,
         aFeedbackPairCheckInput := aPaircheckZone1);

      // Feedback state
      xFeedbackStateZone1 := fbZone1.P_xFeedbackState;

Zuletzt aktualisiert

War das hilfreich?