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

Ergebnis 1 bis 8 von 8

Thema: Einfachen Tast-Dimmer programmieren

  1. #1
    Registriert seit
    13.06.2013
    Beiträge
    12
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    habe einen bestimmten "Dimmwert":UINT und möchte diesen bei gedrücktem Taster hochzählen.
    Wenn der Maximalwert (32767) erreicht ist, soll wieder runter gezählt werden, wie wird sowas programmiert?
    Zitieren Zitieren Einfachen Tast-Dimmer programmieren  

  2. #2
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.367
    Danke
    457
    Erhielt 696 Danke für 521 Beiträge

    Standard

    Naja, so auf die schnelle würd ich mal sagen du setzt dir beim Erreichen des End-Werts ein Flag dsetzt das die Zählrichtung umkehrt.

    via Mobile
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  3. #3
    calimer0 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.06.2013
    Beiträge
    12
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo RONIN, hast Du auch eine Lösung um erstmal zu dem Maximalwert zu kommen?

  4. #4
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.367
    Danke
    457
    Erhielt 696 Danke für 521 Beiträge

    Standard

    Funktionierenden Code kann ich dir leider nicht anbieten da ich nicht auf CodeSys unterwegs bin.

    Rein gedanklich müsste es ungefähr so aussehen:
    Code:
    If Taster = TRUE Then
    IF (Flag_ZDir = FALSE) And (Zählwert < 32768 ) Then
    Zählwert = Zählwert +1
    End If IF (Flag_ZDir = TRUE) And (Zählwert > 0 ) Then
    Zählwert = Zählwert - 1
    End If If Zählwert >= 32768 Then Flag_ZDir = TRUE End If If Zählwert <= 0 Then Flag_ZDir = FALSE End If
    End If
    So um den Dreh. Du brauchst auch noch eine Möglichkeit die Geschw. mit der der Zähler zählt zu beeinflussen. Vielleicht sogar logarithmisch.
    Dann solltest du dass noch in eine Art wiederverwendbare Funktion packen.
    Wenn du auch Probleme mit der Syntax hast (das oben ist sicher keine gültige CodySys-Syntax) dann musst du wohl warten bis sich der erste Kollege meldet
    der weiß wovon er spricht.
    Geändert von RONIN (23.02.2014 um 14:00 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.314
    Danke
    932
    Erhielt 3.329 Danke für 2.688 Beiträge

    Standard

    Code:
    IF uiCounter >= 32767 (* OR ... *) THEN
      xFlag_ZDir := TRUE ;    //umschalten zu Rückwärtszählen
    ELSIF uiCounter <= 0 (* OR ... *) THEN
      xFlag_ZDir := FALSE ;   //umschalten zu Vorwärtszählen
    END_IF ;
    
    IF xTaster THEN
      IF xFlag_ZDir THEN
        iIncVal := -1 ; //Rückwärtszählen
      ELSE
        iIncVal := +1 ;  //Vorwärtszählen
      END_IF ;
    
      uiCounter := uiCounter + iIncVal ;
    END_IF ;
    Das als erster Test-Einstieg - die Aufgabe wird bestimmt noch komplizierter, wenn nicht immer nur zwischen den Maxima hin-und-her-gezählt werden soll und vielleicht auch größere Inkremente als 1 ins Spiel kommen.
    Am besten zunächst die komplette Aufgabenstellung formulieren und dann erst programmieren.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #6
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Und dann ist auch noch die Frage, wie schnell gedimmt werden soll:
    Bei den beiden Vorschlägen wird das von der Zykluszeit der SPS bestimmt. PN/DP hat schon größere Inkremente ins Spiel gebracht, was die Sache beschleunigen würde. Zum Verlangsamen steht dann vermutlich ein Timer zur Debatte.

  7. #7
    Registriert seit
    27.11.2009
    Ort
    BW - Ecke Ulm
    Beiträge
    440
    Danke
    141
    Erhielt 36 Danke für 33 Beiträge

    Standard

    Moin,

    Evtl. ne blöde Idee. In der Oscat-Lib gibts nen fertigen Dimmer mit Tasterinterface für Doppelklick etc.
    Und wenn man den nur als Vorlage zur Vereinfachung her nimmt.
    --
    ohm200x

  8. #8
    Registriert seit
    25.02.2010
    Beiträge
    638
    Danke
    36
    Erhielt 126 Danke für 115 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich würde auch nicht bis 0 Zählen sondern bei einem Wert von ca. 5% auf 0 springen. Sonst hast du den Effeckt, dass die Lampen aus sind aber noch bestromt werden. Eventuell auch noch eine Zeit des "betätigen" von ca. 2 Sekunden um auf "Aus" oder "volle Beleuchtung" zu schalten.
    Grüsse Holger

Ähnliche Themen

  1. Einfachen Text in Webvisu einfügen
    Von Lebenslang im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 18.10.2013, 01:20
  2. Antworten: 6
    Letzter Beitrag: 15.02.2013, 20:40
  3. Antworten: 2
    Letzter Beitrag: 03.11.2008, 16:51
  4. Eilt, suche einfachen Rampen BS
    Von dinner4one im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 22.08.2008, 20:19
  5. PID Regler und Dimmer Programmieren
    Von Andy258 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 01.02.2008, 13:54

Lesezeichen

Berechtigungen

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