Stückzahl pro Minute?

bastler

Level-2
Beiträge
258
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ich bräuchte mal von Euch einen Denkanstoß für die Realisierung eines Stückzählers.
Folgendes ist gegeben:
Ich bekomme eine Stückzahl per Globaldatenaustausch aus einer anderen S7
per DInt in meine S7 geliefert. Diese Stückzahl läuft bis Arbeitsende hoch und wird dann per Taster zurückgesetzt. Ich soll nun die jeweils aktuelle Stückzahl pro Minute errechnen. Allerdings weiß ich nicht, wie ich das programmtechn. lösen soll. Habt Ihr dafür ein paar Ansätze?

MfG
bastler
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort. Das hab ich mir auch so ähnlich gedacht. Allerdings kann ich nicht durch die gesamte vergangene Zeit teilen, sondern nur durch die letzten 60s.
Folgendes hab ich mir bisher überlegt.
Ich habe einen Taktgeber, alle 60 s bekomme ich einen 1-Impuls. Damit speichere ich den aktuellen Stückzahlwert in eine lokale Variable. Beim 2. Impuls speicher ich diesen Stückzahlwert in eine zweite lokale Variable.
Danach Variable 2 -Variable 1 und ich hab die Stückzahl in der letzten Minute.
Aber wie kann man das programmtechn. lösen?
Ich hoffe ich liege mit meinen Gedanken richtig!

MfG
bastler
 
Code:
UN   T5
L     S5T#60s
SE   T6
U     T6
L     S5T#20ms
SA   T5
U     T5
=     M2.0

U     M2.0
L     DB1.DBD24
T     #stck1

Wie muß es denn jetzt weitergehen, damit 60s später der Wert aus DB1.DBD24
nach #stck2 geschrieben wird?

MfG
bastler
 
Code:
U     M2.0
SPBNB nix        // Sprung zu nix wenn M2.0 = FALSE
L     DB1.DBD24
T     #stck1
nix:  NOP 0

// ODER

UN    M2.0
SPB   nix        // Sprung zu nix wenn M2.0 = FALSE
L     DB1.DBD24
T     #stck1
nix:  NOP 0

Gruss Daniel
 
Code:
      UN    M      2.0
      L     S5T#1M
      SE    T      6
      U     T      6
      =     M      2.0                  //Minutenimpuls

      U     M      2.0
      SPBN  ENDE

      L     DB1.DBD   24                //Stückzahl
      L     MD    14                    //letzte gemerkte Stückzahl
      >=D   
      SPB   DIFF

      L     0                           //Wenn neue Stückzahl kleiner alte Stückzahl
      T     MD    14                    //dann alles Null setzen
      T     MD    18
      SPA   ENDE

DIFF: NOP   0
      L     DB1.DBD   24                //Stückzahl
      L     MD    14                    //letzte gemerkte Stückzahl
      -D    
      T     MD    18                    //Ausgabe Stückzahl pro Minute
      L     DB1.DBD   24                //Stückzahl
      T     MD    14                    //Stückzahl merken

ENDE: NOP   0

Statt MD14 kannst du auch ein DBD aus einem Datenbaustein oder, falls du einen FB nutzt, eine statische Variable nutzen!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ralle

Danke für deine Mühe, allerdings scheint da noch eine Fehler drin zu sein.
Wenn ich in der ersten Minute 20 Teile produziere, soll logischerweise die Stückz. 20 sein. In der zweiten Minute produziere ich 10 Teile, sind insgesamt 30 und das wir so auch gerechnet. Da ich aber Stück pro aktuelle Minute errechnen will, müßte nur 10 als Stückzahl für die zweite Minute berechnet werden. Sollte in der dritten Minute die Maschine stehen und nichts produzieren, soll 0 ausgegeben werden.

MfG
bastler
 
Zuletzt bearbeitet:
So funktioniert es:
Code:
      UN    M      2.0
      L     S5T#1M
      SE    T      6
      U     T      6
      =     M      2.0                  //Minutenimpuls

      U     M      2.0
      SPBN  ENDE

      L     DB1.DBD   24                //Stückzahl
      L     MD    14                    //letzte gemerkte Stückzahl
      >=D   
      SPB   DIFF

      L     0                           //Wenn neue Stückzahl kleiner alte Stückzahl
      T     MD    14                    //dann alles Null setzen
      T     MD    18
      SPA   ENDE

DIFF: NOP   0
      L     DB1.DBD   24                //Stückzahl
      L     MD    14                    //letzte gemerkte Stückzahl
      -D    
       
      T     MD    18                    //Ausgabe Stückzahl pro Minute
      L     DB1.DBD   24                //Stückzahl
      T     MD    14                    //Stückzahl merken

ENDE: NOP   0
Danke für die Hilfe.
MfG
bastler
 
Die Division durch 60 ist Quatsch, das kannst du rausstreichen. Da ja eh im Minutentakt die Stückzahl Differenz gebildet wird. Hab das mal im Code oben geändert.

Edit, ah, du hast es ja auch gefunden :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich würde das in etwa so machen:
(mit Initialisierung)
Code:
u INIT //STAT Initialisierung bool
un CPU_ANLAUF //Globalvariable CPU Start
spb INIT
s INIT
l akt
t alt
l 0
t Q
INIT: un minute //IN Minutenimpuls bool
beb
l alt //STAT Speicher DINT
l akt //IN Aktueller Wert DINT
t alt
tak
-d
t Q //OUT Differenz letzte Minute INT oder DINT

Micha
 
Hallo,

ich würde das in etwa so machen:
(mit Initialisierung)
Code:
u INIT //STAT Initialisierung bool
un CPU_ANLAUF //Globalvariable CPU Start
spb INIT
s INIT
l akt
t alt
l 0
t Q
INIT: un minute //IN Minutenimpuls bool
beb
l alt //STAT Speicher DINT
l akt //IN Aktueller Wert DINT
t alt
tak
-d
t Q //OUT Differenz letzte Minute INT oder DINT

Micha

Ich sag jetzt wirklich nichts dazu. :cool:
 
Zurück
Oben