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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: Jalousiesteuerung mit SCL - Rundungsproblem

  1. #11
    sensei99 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.08.2007
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Habe mich mal von eueren Anregungen inspirieren lassen
    Der (letzte Teil) des Codes sieht nun folgendermaßen aus:

    Code:
    // ****************************************************************************
    // Bei Automatikbetrieb gewünschte Stellung anfahren
    // ****************************************************************************
    IF Auto=true THEN
      // Ausgang auf gewünschten Sollwert fahren
     
      // Sollstellung erreicht
      IF IstSt=SollSt THEN
        AusgangAuf:=false;  
        AusgangAb:=false;
        IstZtAuf:=0.0;
        IstZtAb:=0.0;
      END_IF;
     
      // Auffahren
      IF SollSt<IstSt AND AusgangAb=false THEN
      // Laufzeit für Auf festlegen
        SollZt:=LZAuf/100*(IstSt-SollSt);  
      // Wieviel % entspricht 0.5 Sekunden?
        ProzAuf:=50/LZAuf;
        AusgangAuf:=true;
        IF Takt=true THEN
          IstZtAuf:=IstZtAuf+0.5;
          IstSt:=IstSt-ProzAuf;
          IF IstSt<=SollSt THEN
            IstSt:=SollSt;
          END_IF;
        END_IF; 
      END_IF;
      // Abfahren
      IF SollSt>IstSt  AND AusgangAuf=false THEN
      // Laufzeit für Ab festlegen
        SollZt:=LZAb/100*(SollSt-IstSt);  
      // Wieviel % entspricht 0.5 Sekunden?
        ProzAb:=50/LZAb;
        AusgangAb:=true;
        IF Takt=true THEN
          IstZtAb:=IstZtAb+0.5;
          IstSt:=IstSt+ProzAb;
          IF IstSt>=SollSt THEN
            IstSt:=SollSt;
          END_IF;
        END_IF; 
      END_IF; 
    END_IF;
    Im Grunde habe ich nur die Sollpos.=Istpos. - Erkennung etwas umgebaut. Das Ganze scheint nun zu funzen.
    FB wollte ich nicht nehmen, da ich den Aufruf 16x machen muss und die Variablen einfacher editiert werden können auf diese Weise. Wenn möglich, vermeide ich immer FBs, weil ich dann nicht im Instanz-DB rumschreiben und -lesen muss. Lieber baue ich mir meinen DB so wie ich ihn brauche.

    Also, nochmals danke für euere Hilfe (hoffentlich tuts das Teil nun wirklich...)

  2. #12
    Registriert seit
    25.07.2007
    Beiträge
    79
    Danke
    2
    Erhielt 12 Danke für 12 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von sensei99 Beitrag anzeigen
    Im Grunde habe ich nur die Sollpos.=Istpos. - Erkennung etwas umgebaut.
    Wie gesagt, meiner Meinung liegt der Fehler im ELSE-Zweig des Handbetreibs. Die Stopp-Auswertung fand ich vorher besser, aber diese wurde vorher nicht durchlaufen. Nun gut, jetzt wird's zumindest ausgeführt. Ob sich diese Zeitzuweisungen auswirken habe ich mir nicht angesehen.

    Ich hätte im vorigen Code mindestens folgendes geändert:

    Code:
    // ************************************************** **************************
    // TASTBETRIEB
    // ************************************************** **************************
    IF Auto=false THEN
      // *** Aufwaerts ********************
      IF TastAuf=true THEN
        HandAuf:=true;
        ProzAuf:=50/LZAuf;
        AusgangAuf:=true;
        IF Takt=true THEN
          IstSt:=ROUND(IstSt-ProzAuf);
          IF IstSt<=0 THEN
            IstSt:=0;
          END_IF; 
        END_IF; 
      ELSE
        AusgangAuf:=false;
        HandAuf:=false;
      END_IF,
      // *** Abwaerts *********************
      IF TastAb=true THEN
        HandAb:=true;
        ProzAuf:=50/LZAb;
        AusgangAb:=true;
        IF Takt=true THEN
          IstSt:=ROUND(IstSt+ProzAuf);
          IF IstSt>=100 THEN
            IstSt:=100;
          END_IF; 
        END_IF; 
      ELSE
        AusgangAb:=false;
        HandAb:=false;
      END_IF;
    ELSE
      // *** Rückmeldungen in Auto löschen *
      HandAuf:=false;
      HandAb:=false;
    END_IF; // Auto=false
    
    // *** Sollstellung erreicht **********
    IF AusgangAuf=true AND IstSt<=SollSt OR
       AusgangAb=true  AND IstSt>=SollSt 
    THEN
      AusgangAuf:=false; 
      AusgangAb:=false;
      IstZtAuf:=0.0;
      IstZtAb:=0.0;
      IstSt:=SollSt; // Statt der Zuweisung würde ich in
                     // INPOS-Fenster um SollSt legen
    END_IF;
    

Ähnliche Themen

  1. Rolladen-/ Jalousiesteuerung mit S5 115U
    Von Joe99 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 14.01.2007, 19:40

Lesezeichen

Berechtigungen

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