Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: Betriebsstunden Umschaltung zweier Pumpen

  1. #1
    Registriert seit
    28.06.2007
    Beiträge
    66
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo zusammen, ich habe eine Steuerung mit 2 Pumpen, nach jeweils einer gewissen zeit sollen die Pumpen sich abwechseln,
    weiß jemand wie ich so etwas realisieren kann?
    Zitieren Zitieren Betriebsstunden Umschaltung zweier Pumpen  

  2. #2
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Also die Aufgabe ist ja nicht soooo... schwer. Bitte sag das, dass eine Hausaufgabe ist.

    Hast Du schon einen Ansatz?
    If you open your Mind too much, your Brain will fall out.

  3. #3
    Registriert seit
    20.10.2004
    Beiträge
    650
    Danke
    5
    Erhielt 26 Danke für 26 Beiträge

    Standard

    Hallöchen

    sind wir wieder beim Pumpen Thema ich liebe es

    also wieder von vorne

    welchen sinn hat es das 2 pumpen die selbe Laufzeit haben.
    Wenn es die gleichen sind werden sie auch zur gleichen zeit ausfallen

    zum lösungsansatz

    pumpe 1 starten
    zeit messen pumpe 1
    wenn die zeit abgelaufen ist pumpe 1 aus
    pumpe 2 starten
    zeit messen pumpe 2
    wenn die abgelaufen ist pumpe 2 aus
    ....

    tja was ist wenn eine pumpe ausfällt dann die andere starten
    und wenn eine gewechselt wird und die zeit ist abgelaufen dann am besten auf die ausgebaute pumpe umschalten soll helfen


    und das ich mal wieder einen anderen spruch loswerde wie wäre es mit der suche im forum

    übrigens zotos : hi

  4. #4
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Ich habe vor länger Zeit mal was in CoDeSys geschrieben das sich um bis zu 10 Pumpen Kümmert. Das ist her aber absolut Oversized.

    Also als Schnittstelle:
    Eingang Anzahl benötigter Pumpen, Pumpe 1..10 Betriebsbereit, Zykluszeit (wann gewechselt werden soll), und Überlappungszeit. Ausgang Pumpe 1..10 an.

    Code:
    FUNCTION_BLOCK zKaskade
    
    VAR_INPUT
      Required : INT;
      Ready_01,    Ready_02, Ready_03, Ready_04, Ready_05, Ready_06, Ready_07, Ready_08, Ready_09, Ready_10 : BOOL;
        CycleTime: UINT;
        OverlapTime: UINT;        (*Überlappungszeit*)
    END_VAR
    
    VAR_OUTPUT
        Out_01, Out_02, Out_03, Out_04, Out_05, Out_06, Out_07, Out_08, Out_09, Out_10 : BOOL;
    END_VAR
    
    VAR
        Oscillator :TON;
        CycleTimeCount: UINT;
        OverlapTimeCount: UINT;        (*Überlappungszeit Zähler*)
    
        Ready : ARRAY [1..10] OF BOOL := FALSE;
        Out : ARRAY [1..10] OF BOOL := FALSE;
    
        ReadyCount : INT;
        OutCount : INT;
    
        RequiredExt : INT;
    
        OutOnTime : ARRAY [1..10] OF UINT;
        OutOffTime : ARRAY [1..10] OF UINT;
    
    
        ForCount : INT;
        OverlapFlag: BOOL;
        OldValueTime: UINT;
        SearchRes: INT;
    END_VAR
    
    (*Beginn: Pumpenabschalten wenn nicht bereit-----------------------------*)
    FOR ForCount:=1 TO 10 BY 1 DO
        IF (Ready[ForCount] = FALSE) THEN
            Out[ForCount] := FALSE;
        END_IF
    END_FOR;
    (*Ende: Pumpenabschalten wenn nicht bereit-------------------------------*)
    
    Oscillator(IN := NOT Oscillator.Q, PT:= T#1s);
    
    IF Oscillator.Q = TRUE THEN
    (*Beginn: Bestandsaufnahme----------------------------------------------------*)
        Ready[1]  := Ready_01;
        Ready[2]  := Ready_02;
        Ready[3]  := Ready_03;
        Ready[4]  := Ready_04;
        Ready[5]  := Ready_05;
        Ready[6]  := Ready_06;
        Ready[7]  := Ready_07;
        Ready[8]  := Ready_08;
        Ready[9]  := Ready_09;
        Ready[10] := Ready_10;
    
        Out[1]  := Out_01;
        Out[2]  := Out_02;
        Out[3]  := Out_03;
        Out[4]  := Out_04;
        Out[5]  := Out_05;
        Out[6]  := Out_06;
        Out[7]  := Out_07;
        Out[8]  := Out_08;
        Out[9]  := Out_09;
        Out[10] := Out_10;
    
        OutCount := 0;
        ReadyCount := 0;
        FOR ForCount:=1 TO 10 BY 1 DO
            IF (Out[ForCount] = TRUE) THEN
                OutCount := OutCount + 1;
                OutOnTime[ForCount] := OutOnTime[ForCount] + 1;
                OutOffTime[ForCount] := 0;
            ELSIF (Ready[ForCount] = TRUE) THEN
                    OutOffTime[ForCount] := OutOffTime[ForCount] + 1;
                    OutOnTime[ForCount] := 0;
            ELSIF (Ready[ForCount] = FALSE) THEN
                OutOnTime[ForCount] := 0;
                OutOffTime[ForCount] := 0;
            END_IF
    
            IF (Ready[ForCount] = TRUE) THEN
                ReadyCount := ReadyCount + 1;
            END_IF
        END_FOR;
    (*Ende: Bestandsaufnahme------------------------------------------------------*)
    
        CycleTimeCount := CycleTimeCount + 1;
    
        IF CycleTimeCount >= CycleTime THEN
            CycleTimeCount := 0;
            OverlapFlag := TRUE;
        END_IF
    
        IF (OverlapFlag = TRUE) THEN
            OverlapTimeCount := OverlapTimeCount + 1;
            RequiredExt := Required + 1;
        ELSE
            RequiredExt := Required;
        END_IF
    
    
        IF OverlapTimeCount >= OverlapTime THEN
            OverlapTimeCount := 0;
            OverlapFlag := FALSE;
        END_IF
    
        IF (ReadyCount > RequiredExt) THEN
            WHILE (OutCount < RequiredExt) DO
                OldValueTime := 0;
                SearchRes := 1;
                FOR ForCount:=1 TO 10 BY 1 DO
                    IF ((OutOffTime[ForCount] > OldValueTime)
                     AND (Ready[ForCount] = TRUE) AND (Out[ForCount] = FALSE)) THEN
                        OldValueTime := OutOffTime[ForCount];
                        SearchRes := ForCount;
                    END_IF
                END_FOR;
                IF (Ready[SearchRes] = TRUE) THEN
                    Out[SearchRes] := TRUE;
                    OutCount := OutCount + 1;
                END_IF
            END_WHILE
        ELSE
            FOR ForCount:=1 TO 10 BY 1 DO
                IF (Ready[ForCount] = TRUE) THEN
                    Out[ForCount] := TRUE;
                END_IF
            END_FOR;
        END_IF
    
    
        WHILE (OutCount > RequiredExt) DO
            OldValueTime := 0;
            SearchRes := 1;
            FOR ForCount:=1 TO 10 BY 1 DO
                IF ((OutOnTime[ForCount] > OldValueTime)
                 AND (Ready[ForCount] = TRUE) AND (Out[ForCount] = TRUE)) THEN
                    OldValueTime := OutOnTime[ForCount];
                    SearchRes := ForCount;
                END_IF
            END_FOR;
            Out[SearchRes] := FALSE;
            OutCount := OutCount - 1;
        END_WHILE
    
    
    END_IF
    
    Out_01 := Out[1];
    Out_02 := Out[2];
    Out_03 := Out[3];
    Out_04 := Out[4];
    Out_05 := Out[5];
    Out_06 := Out[6];
    Out_07 := Out[7];
    Out_08 := Out[8];
    Out_09 := Out[9];
    Out_10 := Out[10];
    Ich weis das es hier um Simatic geht ;o) Aber der ST Code soll ja nur ein "kleine" Hilfestellung sein.

    Übrigens: Hallo kpeter! Schön von Dir zu lesen.
    If you open your Mind too much, your Brain will fall out.

  5. #5
    rene ist offline Benutzer
    Themenstarter
    Registriert seit
    28.06.2007
    Beiträge
    66
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    danke euch beiden, hab einen weg gefunden

Ähnliche Themen

  1. Pumpen Umschaltung
    Von Poldi007 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 27.05.2011, 23:40
  2. Display für S7-300 (Betriebsstunden etc.)
    Von superkato im Forum HMI
    Antworten: 8
    Letzter Beitrag: 25.11.2010, 17:18
  3. betriebsstunden speichern
    Von Merlin115 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 18.11.2006, 10:42
  4. Maschienenstart nach Betriebsstunden
    Von mst im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 07.11.2005, 20:37
  5. Auswahlkriterium Betriebsstunden
    Von rs-plc-aa im Forum Simatic
    Antworten: 76
    Letzter Beitrag: 14.02.2005, 11:54

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •