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

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

Thema: Zähler für Dumi

  1. #11
    Genius2222 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.01.2016
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Genau das war es, jetzt geht es.
    Vielen Dank an alle die mir geholfen haben.

    Gesendet von meinem C6603 mit Tapatalk

  2. #12
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.313
    Danke
    932
    Erhielt 3.323 Danke für 2.685 Beiträge

    Standard

    Zitat Zitat von Morymmus Beitrag anzeigen
    Ich denke die "sauberste" Lösung wäre, CV global zu machen und damit den aktuellen Wert über den Spannungsausfall zu retten - gleichzeitig im Zähler eine Out-Variable zu haben, die den Wert von CV abbildet. Damit kannst Du außerhalb des Zählers mit Deiner Variable ZÄHLWERT weiterarbeiten.
    ABER: Wenn Du das Programm kopierst, weil Du einen zweiten, unabhängigen Zähler brauchst musst Du zwingend CV umbenennen - sonst greifen alle Deine Zähler auf die selbe globale Variable zu...
    Also dieses Kuddelmuddel mit globalen Variablen in Instanzen würde mir überhaupt nicht gefallen. Da kann man dann ja gar nicht mehr mehrere unabhängige Instanzen deklarieren.

    Kann man denn nicht einfach die ganze Zähler-Instanz als RETAIN+PERSISTENT deklarieren?
    Oder CV und M als VAR_IN_OUT deklarieren und mit RETAIN+PERSISTENT-Variablen beschalten?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #13
    Registriert seit
    26.11.2012
    Ort
    Gummersbach
    Beiträge
    504
    Danke
    18
    Erhielt 72 Danke für 70 Beiträge

    Standard

    Hallo Harald,

    ich gebe Dir recht, daher hatte ich das "sauber" in Anführungszeichen gesetzt. Schön ist das so nicht.
    Den Weg, die gewünschten Variablen als Var_out zu beschalten hatte ich ja oben schon beschrieben.
    Würde man stattdessen Var_In_Out wählen, so muss in dem Code zunächst die bestehende Variable eingelesen werden - diese sollte ja eigentlich den selben Wert haben wie die interne - dann wird inkrementiert und dann die Variable wieder geschrieben.
    Von der Logik her sollte das gehen - müsste ich mal ausprobieren, ob das wirklich sauber läuft.

    Kann man denn nicht einfach die ganze Zähler-Instanz als RETAIN+PERSISTENT deklarieren?
    Die Antwort, ob der Code beim TE in einer Funktion, Funktionsblock oder einem Programm läuft ist er uns leider noch schuldig geblieben.
    Ich war einfach mal von einem Programm ausgegangen.

    Ich bin mir nicht sicher, ob das so geht - zumindest bleibt die Problematik, das die Variablen nicht außerhalb der jeweiligen POU bekannt sind.
    Ganz kurz ganz hell
    ganz lange ganz dunkel....

  4. #14
    Genius2222 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.01.2016
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Stimmt bin sie aber nicht mit Absicht schuldig geblieben.

    Es läuft im Als Funktionsblock.

    Gesendet von meinem C6603 mit Tapatalk

  5. #15
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.647
    Danke
    788
    Erhielt 654 Danke für 497 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Genius2222 Beitrag anzeigen
    Es läuft im Als Funktionsblock.
    Wie schon erwähnt ist es für einen einfachen Zähler eigentlich übertrieben den als FB zu deklarieren.
    Ich mach die immer so.

    Code:
    FUNCTION "Betriebsstunden" : VOID
    TITLE =
    VERSION : 0.1
    
    
    
    
    VAR_INPUT
      Obj : BOOL ;    //Objekt dessen Betriebsstunden zu zählen sind
      Sekundentakt : BOOL ;    //Sekundentakt (achtung darf nur ein Zyklus je Sekunde anstehen)
    END_VAR
    VAR_IN_OUT
      Save : DINT ;    //Betriebsstundenzähler inhalt in Sekunden
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
    
          U     #Obj; 
          U     #Sekundentakt; 
          SPBN  Upcn; 
          L     #Save; 
          L     1; 
          +D    ; 
          T     #Save; 
    Upcn: NOP   0; 
    
    
    END_FUNCTION
    An IN_OUT hängt man dann einfach eine Remanente Variable, ob das nun ein Merker oder DB ist, ist irrelevant. Ich bevorzuge Merker und Mappe diese um wenn ich sie auf nem DB brauche, da es ja immerwieder mal passieren kann (vor allem in TIA) das ein DB geladen und reinitialisiert wird und die Werte wieder die Startwerte annehmen.

    mfG René

Ähnliche Themen

  1. Step 7 Zähler für Freigaben über Nockenschalter
    Von DelphiFG im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 19.02.2014, 09:36
  2. remanenter Zähler in Mitsubishi FX3U für Betriebsstundenzähler
    Von solo_nico im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 24.10.2012, 17:36
  3. Step 7 Zeit für Zähler verwenden
    Von slot23 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 17.04.2012, 21:07
  4. Startbefehl für Zähler
    Von breno im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 27.04.2009, 23:10
  5. Anschluß für schnelle Zähler
    Von agoschina im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 18.04.2006, 21:10

Lesezeichen

Berechtigungen

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