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

Ergebnis 1 bis 10 von 10

Thema: Quellcode für Stromstoßschalter gesucht

  1. #1
    Registriert seit
    10.02.2016
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo
    Ich arbeite mich gerade in Codesys ein und hab auch schon verschiedenes mit einem Wago Starterkit zum laufen gebracht. Ziel ist eine Haussteuerung.
    Die Wago Gebäude lib habe ich auch gefunden. In meinem Projekt wird es einige Stromstoßschalter geben, das ist die Hauptanwendung der Steuerung.
    Daher wäre es schön wenn ich nicht für alle einzeln einen Zweig mit jeweils einem einzelnen Stromstoßschalter Baustein anlegen müsste. Meine Idee ist, ich schreibe mir Code der in einer Schleife alle Stromstoßfunktionen durchläuft. Ist ja immer das selbe, nur mit anderen Eingängen und Ausgängen und ein paar Merkern. Was man sich merken muss kann in ein Array, also aktueller Status, Zeit für Entprellen usw. Dann hätte ich das alles schön kompakt.
    (könnte natürlich auch viele fertige Bausteine in einer Schleife nutzen aber das gefällt mir nicht so gut)

    Dazu suche ich Quellcode für einen möglichst durchdachten und robusten Stromstoßschalter Baustein, den ich in meine Idee einarbeiten kann. Wo suche ich da am besten? Eigentlich ists ja nichts was man sich nicht auch selber herleiten könnte aber man denkt ja doch nicht an alles.

    Oder hat jemand eine ganz andere Idee für mein Vorhaben?


    Noch etwas, ist es empfehlenswert und gängige Praxis sich die Ein/Ausgänge in der Konfiguration nach der Position in der Karte zu benennen (IN_1_4) und dann die Werte in globale Variablen mit der Funktion umzuschreiben (Wohnzimmer_Schalter1) oder nennt man das lieber gleich in der Konfiguration so?
    Letzteres wäre einfacher zu ändern, da man sich einige Klickerei spart.
    Zitieren Zitieren Quellcode für Stromstoßschalter gesucht  

  2. #2
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Den Stromstoßschalter kann man sich einfach selbst erstellen.
    Eine schöne Anleitung für die Sprachen FUP, KOP und AWL findest Du in der FAQ.

    Das Grundprinzip lässt sich auch einfach auf andere Sprachen wie z.B. ST übertragen.


    PS: Was der FAQ fehlt, sind noch Zentraleingänge.
    Für's zentrale EIN einfach noch ein ODER dem XOR und für's zentrale AUS ein UND folgen lassen. Je nachdem, welches von beiden später eingefügt ist, hat dieses Vorrang.
    Geändert von hucki (28.03.2016 um 11:08 Uhr)

  3. #3
    spshugo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.02.2016
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok das war simpel
    Jetzt such ich noch eine Einschaltverzögerung um die da rein zu bauen. Seltsam dass man wirklich kein einziges Beispiel findet das sowas zeigt, alle verweisen immer nur auf die fertigen Blöcke. Die kann ich aber nicht nutzen weil ich ja die internen Merker selber verwalten will.
    Wo krieg ich denn ein brauchbares Beispiel her das ähnlich TON aufgebaut ist?

  4. #4
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.509
    Danke
    267
    Erhielt 250 Danke für 226 Beiträge

    Standard

    Also wenn Du das Fahrrad neu erfinden möchtest: Du merkst Dir die Systemzeit, zu der die auslösende Flanke kam in Deinem selbst verwalteten Merker. Dann wartest Du auf Systime+ Verzögerung und setzt den selbst verwalteten Merker für abgelaufene Zeit.

    Ich würde allerdings TON sooft instanzieren, wie ich es brauche. Ich bin aber auch überaus bequem

  5. Folgender Benutzer sagt Danke zu weißnix_ für den nützlichen Beitrag:

    Knaller (28.03.2016)

  6. #5
    spshugo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.02.2016
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja oft instantieren würde eigentlich auch in einem Array gehen. Mach ich vielleicht wirklich. Wahrscheinlich wäre es auch kein Schaden 80 mal einen fertigen Stromstoßschalter Baustein reinzupacken. Aber man will ja auch was lernen.
    Ich hab hier was gecodet, wer mag kann es sich ansehen und mir Tips geben wie mans nicht macht und wie stattdessen

    Leider stoß ich grad auf den Umstand dass in der Simulation die Systemzeit nicht gesetzt ist. Und TIME() hat einen Überlauf was auch wieder einiges an Aufwand erfordert. Aber für den Anfang egal.

    Code:
    FUNCTION_BLOCK StromstossTest
    VAR_INPUT
        toggle: BOOL;
        on: BOOL;
        off: BOOL;
    END_VAR
    VAR_OUTPUT
    END_VAR
    VAR
        togglemerker: BOOL := FALSE;
        done: BOOL := FALSE;
        outsoll: BOOL := FALSE;
        outmerker: BOOL := FALSE;
        startzeit: TIME;
        jetzt: TIME;
    END_VAR
    
    jetzt := TIME(); (*SysRtcGetTime(TRUE);*)
    
    (* nichts verändert, nichts gedrückt => nichts zu tun *)
    IF (NOT ((togglemerker <> toggle) OR toggle OR on OR off)) THEN
      RETURN;
    END_IF
    
    (* Positive Flanke bei toggle startet die Zeit, erst wenn die vergangen ist passiert die Umschaltung. *)
    IF toggle THEN
      IF NOT togglemerker THEN
        done := FALSE;
        startzeit := jetzt;
      END_IF;
    END_IF;
    
    togglemerker := toggle;
    
    (* toggle lange genug gedrückt? Dann umschalten. *)
    IF toggle AND (NOT done) AND (jetzt - startzeit >= T#30ms) THEN
      outsoll := NOT outmerker;
      done := TRUE;
    END_IF;
    
    (* Vorgaben für ein/aus berücksichtigen. *)
    outsoll := (outsoll OR on) AND (NOT off);
    
    IF outsoll <> outmerker THEN
      outmerker := outsoll;
    END_IF
    Die Merkervariablen stelle ich mir später in einem Array vor, so dass eine Schleife alles auf einmal abarbeiten kann.

  7. #6
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Schon irgendwie krass, was man aus einer Flanke und einen XOR für einen Aufwand machen kann ...
    Was soll der Timer eigentlich für einen (tieferen) Sinn haben?
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  8. #7
    Registriert seit
    16.11.2007
    Beiträge
    747
    Danke
    32
    Erhielt 146 Danke für 114 Beiträge

    Standard

    So Zeug ist in der Oscat.lib auch als Quelltext zu haben, mal so am Rande erwähnt.

  9. #8
    spshugo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.02.2016
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Der Timer soll entprellen.
    Heute ist Feiertag, ich hab Zeit, Bausteine aneinander hängen kann ich inzwischen... da ist eben Zeit für neues

  10. #9
    Registriert seit
    13.01.2013
    Beiträge
    627
    Danke
    26
    Erhielt 64 Danke für 59 Beiträge

    Standard

    Macht es nicht mehr Sinn einen Baustein zu erstellen (wenn du schon so einen Aufwand betreiben möchtest) diesen dann für jeden Eingang als Entprellung auf rufen ?
    So hältst du dir deinen SSL etwas sauberer und hast deinen eigenen Entpreller auch gleich für andere Anwendungen.

  11. #10
    spshugo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.02.2016
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In meinen Versuchen mit nur einem Eingang hab ich den TON als Entpreller verwendet und an den Stromstoßschalter Baustein gepackt. Einen eigenen Entpreller hatte ich nicht geplant. Was ich da gebastelt habe soll das gleiche tun wie TON. Nur eben in Kombination mit der Relaisfunktion in einem.

    Ich werde 80 oder auch 90 Eingänge haben die ich entprellen sollte, die meisten davon haben die Funktion eines Stromstoßschalters. Deswegen die Idee das alles in einen Codeblock mit Schleife zu packen statt 90 x TON und 90 x Stromstoßschalter Bausteine einzusetzen. Ist vielleicht weniger Aufwand wenn das zig mal pro Sekunde durchgerattert wird, dachte ich.

    Erfahrung hab ich halt überhaupt keine. Wenn ihr mir sagt das ist Blödsinn, 200 Bausteinchen haben oder nicht wär überhaupt nicht schlimm... dann mach ich das so. Ich muss nicht unbedingt was eigenes haben nur damits sonst keiner versteht...

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 23.10.2012, 09:11
  2. Suche Quellcode für Sinamic FB 283
    Von Waldi1954 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 27.09.2010, 11:11
  3. Demo Quellcode für SAPI-S7
    Von Gerdnewsps im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 02.06.2005, 15:48

Lesezeichen

Berechtigungen

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