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

Ergebnis 1 bis 7 von 7

Thema: Logik Problem

  1. #1
    Registriert seit
    18.05.2011
    Beiträge
    66
    Danke
    12
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Es geht hier weniger um ein SPS Problem, aber es geht um ein logikproblem, und wenn einer logisch denken kann seid ihr das
    Gegenwärtiges System:
    Ich habe wasserkreislauf mit einem sehr grossem Becken dessen Niveau überwacht und über ein selbständiges System bei Notwendigkeit mit frischwasser aufgefüllt wird.

    Anforderung des Kunden:
    1. Aus de System sollen in regelmässigen zeitabständen, eine vorwählbarere Wassermenge abgelassen werden, um das Systemwasser frisch zu halten, die "Niveauregelung" füllt das verlorene Wasser wieder auf.
    2. Die Zuführung soll überwacht werden, und in einem Graph aufgezeichnet werden und bei Überschreitung einer Toleranz auf Alarm gehen.

    Hardware:
    S7 312c und microinovation touchpanel
    2 wasserzähler mit im impulsausgang (0,25L pro Impuls)
    1 Ventil

    Aufbau:
    Am einlauf der "Niveauregelung" wird ein Zähler angebracht.
    Das ventil und ein ZÄhler am Auslauf.
    Die Zähler werden an die schnellzähler Eingänge angeschlossen und das Ventil an einem DA.
    Den Graph übernimmt das TP

    Problem:
    Wie bekomme ich mit den Zählern einen guten durchsatz errechnet ich dachte so an qm pro Stunde

    Bitte helft mir mein Kopf raucht schon!
    Zitieren Zitieren Logik Problem  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Da gibt es zwei Wege:
    1) In einem festen Zeitraum die Impulse zählen
    2) Die Zeit zwischen zwei Impulsen erfassen

    siehe auch http://de.wikipedia.org/wiki/Frequenzz%C3%A4hler

  3. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    litlegerman (09.06.2012)

  4. #3
    Registriert seit
    18.05.2011
    Beiträge
    66
    Danke
    12
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ich hatte Option 1 bevorzugt, denn ich erwarte mehrere Impulse pro Sekunde, aber mein Problem Isle das ich dein Wert hochrechnen müsste was die Sache wieder sehr ungenau machen würde.

  5. #4
    Registriert seit
    28.08.2007
    Beiträge
    140
    Danke
    17
    Erhielt 13 Danke für 11 Beiträge

    Standard

    Solange du den Durchsatz nicht regeln musst, ist das doch imo genau genug. Eigentlich ist dir doch die Menge wichtig oder? Und die mit Impulsen zu erfassen ist mehr als sinnvoll.
    Wenn du den Durchsatz möglichst genau haben willst, solltest du die erfassungszeit möglichst gering halten. Also Auswertung des Zählers im weckalarm. Ich weiß leider grad nicht was genau du da bei deiner CPU für Möglichkeiten hast.

    Gesendet von meinem GT-I9100 mit Tapatalk 2

  6. #5
    Registriert seit
    30.07.2011
    Ort
    Uithuizen,Niederlande
    Beiträge
    45
    Danke
    7
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Ich benutze in mein Hausamautomation für Sonne, Import,Gas Energie eine modifizierte Oscat FLOW_METER
    Ich habe es erweitert mit " Timeout" und Mittelwert
    Code:
    FUNCTION_BLOCK FLOW_CALC
    TITLE = 'FLOW_CALC'
    // reworked OSCAT FLOW_METER Function block
    // USES Reworked FB64 (STIME)  DB64 (IDB_STIME)
    VERSION : '1.0'
    AUTHOR  : Peter
    NAME    : FlowCalc
    FAMILY  : Calc
    VAR_INPUT
      VX        : REAL;      //flow per unit / hr       
      TTX       : DWORD;     //PLC msec time
      Input     : BOOL;      //Input flag from flowcounter
      AVG       : BOOL;      //Use averaging
      TIMEOUT   : TIME := T#180S;     //After this time the flowoutput is set to 0.0
      AVGFACt   : TIME := T#1S;         // time averaging value
    END_VAR
    VAR_IN_OUT  
       F : REAL;   //flow output
    END_VAR
    //internal used vars
    VAR
      lastTX    : DWORD;  // Previous TTX value
      AvgLastTX : DWORD;
      LastF     : REAL;   // Previous Flow value
      LastY     : REAL;
      e_last    : BOOL;   //FLANK DETECTION
      Hold      : BOOL;
     
    END_VAR
     
    BEGIN
    // set / preset /reset some values at PLC startup
    IF m40.0 THEN    // M40.0 is 1 cycle active at PLC startup
       lasty :=0.0;
       f := 0.0;
       AvgLastTX :=ttx;
    END_IF;
    //caculate flow per hour
    IF Input AND  NOT e_last THEN  
       IF NOT HOLD  then  
           lastF := (VX *  3.600000e+006 )/ DINT_TO_REAL(DWORD_TO_DINT(ttx) - DWORD_TO_DINT(lastTX));  
       END_IF;    
       Lasttx := ttx;  // store last ttx for next puls
       HOLD := false;
    END_IF;
     e_last := Input;
     
    //average function
    IF AVG THEN 
        F := F+ (lastF-lastY) * DINT_TO_REAL(DWORD_TO_DINT(ttx) - DWORD_TO_DINT(AvgLastTX)) / DINT_TO_REAL(TIME_TO_DINT(AVGFACt));
        LastY:=F;
        AvgLastTX :=ttx;
    ELSE
        F:= LastF;
        lasty := 0.0;
    END_IF;
     
     //time out if long time (TIMEOUT) no puls from input received
     IF DINT_TO_TIME(DWORD_TO_DINT(ttx) - DWORD_TO_DINT(lastTX)) > timeout AND NOT INPUT THEN
        LastF:= 0.0;
        Lasty := 0.0;
        lastTX := TTX;   
        HOLD := true;
     END_IF;  
    END_FUNCTION_BLOCK

  7. #6
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard

    Zitat Zitat von PeterHollanda Beitrag anzeigen
    Ich benutze ... eine modifizierte Oscat FLOW_METER...
    Code:
    ...
    IF m40.0 THEN    // M40.0 is 1 cycle active at PLC startup
    ...
    Das ist sicher nicht aus der Oscat, oder?
    Ich würde für den M40.0 eine Eingangsvariable, z.B. EZ (Erster Zyklus) oder RESET erstellen, die im Baustein verwendet wird und den M40.0 nur außen an den Baustein anlegen. Damit kann man den Baustein wieder universell auch in anderen Programmen verwenden, ohne daß dann vielleicht untergeht, daß ein Merker für den ersten Zyklus innerhalb des Bausteins benötigt wird.

  8. #7
    Registriert seit
    30.07.2011
    Ort
    Uithuizen,Niederlande
    Beiträge
    45
    Danke
    7
    Erhielt 5 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Die Baustein ist noch in bearbeitung in der folgende version vielleicht nichtmehr.

    Übrigens verwende ich immer eine standard FC mit start, zeit, und impuls Funktionen.
    Das Orignal ist Oscat. In Oscat wird für jede aufruf STIME neu aufgerufen das habe ich geandert nur einmal gleich start OB1 > Aufruf Standard FC mit Call STIME. Ich find es nicht notwendig 20 x call FLOW_CALC auch 20 x call STIME
    .
    Entschuldigung für Sprache fehler/ Egnischer Wörter

Ähnliche Themen

  1. Mini-FU mit ein bisschen Logik gesucht
    Von Ludewig im Forum Antriebstechnik
    Antworten: 10
    Letzter Beitrag: 09.06.2012, 23:35
  2. Logik für Kompressorverbund
    Von hank12 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 22.05.2010, 19:38
  3. Logik-Problem - Wer kann helfen?
    Von Beren im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 21.11.2008, 11:41
  4. SPS Programmierbare logik
    Von laghouch im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 15.04.2008, 08:18
  5. Stückzähler 7-Segment mit Logik
    Von mr.peterbuilt im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 14.11.2003, 13:52

Lesezeichen

Berechtigungen

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