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

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

Thema: Zähler generieren

  1. #11
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    oder direkt mit der systemzeit arbeiten.
    temp-vars im ob1 bzw scf1
    weiterhin fc6 und fc8 aus den iec.

    eine subtraktion aus date liefert die differenz in tagen zurück
    eine subtraktion von time_of_day liefert die differenz in milisekunden zurück

    guckst du bild
    Angehängte Grafiken Angehängte Grafiken
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  2. #12
    amateur ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.10.2007
    Beiträge
    26
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo!
    Hab doch noch ein kleines Problem. Zunächst mal habe ich ET als DINT deklarieren müssen, da ich sonst die Fehlermeldung "Unzulässige Operandentypen" bekommen habe. Jedenfalls bleibt ET bei mir 0 und ändert sich nicht. Vielleicht gibt es da noch was zu "OB1_prev_cycle", was ich wissen sollte. Ist das eine Systemvariable, die ich nicht weiter zu initialisieren brauche? Laut Beschreibung sollte ich das Ding ja nur einmal mit INT deklarieren. Weiß jetzt halt nicht, woher diese Variable ihre Werte bekommt...

  3. #13
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    OB1 in FUP Programmiert hier als AWL Quelle
    Code:
    ORGANIZATION_BLOCK OB 1
    TITLE = "Main Program Sweep (Cycle)"
    VERSION : 0.1
    
    
    VAR_TEMP
      OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
      OB1_SCAN_1 : BYTE ;   //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
      OB1_PRIORITY : BYTE ; //Priority of OB Execution
      OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
      OB1_RESERVED_1 : BYTE ;   //Reserved for system
      OB1_RESERVED_2 : BYTE ;   //Reserved for system
      OB1_PREV_CYCLE : INT ;    //Cycle time of previous OB1 scan (milliseconds)
      OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
      OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
      OB1_DATE_TIME : DATE_AND_TIME ;   //Date and time OB1 started
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          U     E      0.0; 
          =     L     20.0; 
          BLD   103; 
          U     E      0.1; 
          =     L     20.1; 
          BLD   103; 
          CALL FC   123 (
               Run                      := L     20.0,
               OB1Cycle                 := #OB1_PREV_CYCLE,
               Reset                    := L     20.1,
               ET                       := MD    30);
          NOP   0; 
    END_ORGANIZATION_BLOCK
    SCL Code:
    Code:
    FUNCTION FC123 : VOID
    
    VAR_INPUT
      Run       :BOOL;  (* Signal Run = True solange der Motor Läuft *)
      OB1Cycle  :INT;   (* Variable OB1_prev_cycle aus dem OB1 *)
      Reset     :BOOL;  (* True Setzt die Gemessene Zeit zurück *)
    END_VAR
    
    VAR_IN_OUT          (* Bei einem FC VAR_IN_OUT und in einem FB einfach nur VAR *)
      ET        :TIME;  (* Verstrichene Zeit *)
    END_VAR
    
    
    IF RUN THEN
      ET := ET + DINT_TO_TIME(OB1Cycle);
    END_IF;
    
    IF Reset THEN
      ET := t#0s;
    END_IF;
    
    END_FUNCTION
    Das läuft bei mir.
    If you open your Mind too much, your Brain will fall out.

  4. #14
    amateur ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.10.2007
    Beiträge
    26
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo!
    Erst mal vielen Dank für die Antwort! Das klappt aber immer noch nicht. Hab jetzt wie beschrieben alle Befehle in einen FC ausgelagert. Wenn ich diese Funktion aufrufe, muss ich OB1Cycle ja auch irgendeinen Wert zuweisen. Wenn ich das nicht tue, bekomme ich eine Fehlermeldung.
    Ich hab aber auch noch keine zusätzlichen Informationen bekommen, woher OB1_prev_cycle nun seine Werte bekommt. Vielleicht kann mir da ja mal jemand auf die Sprünge helfen. Ich komm so einfach nicht weiter...

  5. #15
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Die Variable wird vom System Beschrieben und ist ja im OB1 Automatisch deklariert.

    Teste mal das Projekt im Anhang ;o(
    Angehängte Dateien Angehängte Dateien
    If you open your Mind too much, your Brain will fall out.

Ähnliche Themen

  1. Abfüllvorgang: FC generieren???
    Von Bamby im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 24.10.2011, 11:52
  2. Betriebsstunden Zähler / max. Zähler Anzahl.
    Von superkato im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 03.12.2010, 16:38
  3. Zufallszahlen in S7 generieren
    Von Black Scorpion im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 13.03.2009, 07:56
  4. Maximalzählwert Zähler S7-300 + maximale Zähler CPU
    Von DennisBerger im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 02.07.2007, 10:54
  5. Zufallszahl generieren
    Von jamalau im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 02.05.2007, 10:33

Lesezeichen

Berechtigungen

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