Timer mit Zähler realisieren...?

mhc2004

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe ein OP7 und eine S7.Auf dem OP werden Daten angezeigt die in der SPS ausgewertet werden.Gehört alles zu einer Maschine.
Folgendes habe ich vor.
Ich möchte auf dem OP anzeigen lassen beispielsweise wie lange noch ein gewisser Arbeitsabschnitt dauert.

Als Eingang habe ich ein Nocken Schaltwerk welches mir bei jeder 360 Grad Umrundung ein Signal gibt.Mal angenommen das ab einem bestimmten Zeitpunkt X dieses Signal abgegriffen werden soll.Aus den daraus entstehenden Impulsen(vom Nocken Schaltwerk - ein Zähler zählt die Impulse) soll eine Zeit gebildet werden.(angezeigt als z.B.:"noch ca. 10:00 min.")Denn sollte die Maschine aus irgendeinem Grund langsamer laufen, was einstellbar ist,würde sich ja demnach auch die Zeit verlängern.
Wenn man die Maschine anhält sollte natürlich auch die Zeit die abläuft stoppen denn nur wenn die Maschine läuft sollte die Zeit runter zählen.
Ist es möglich mit einem Zähler einen Timer zu realisieren den ich dann als sozusagen Counter auf dem OP7 anzeigen lassen kann.

Ich wäre für jede Hilfe und für jeden Tipp sehr dankbar.



Grüße
Maik
 
Timer/Counter

Hi,
ich glaube, du hast eine Gleichung mit zwei unbekannten..
Na ja, wenn du Impulse zählst(Nocken), und die Geschwindigkeit
frei einstellbar ist(weisst du in der SPS wieviel?), dann musst du
die Frequenz bestimmen, um immer auf eine Zeit zu kommen.

Wenn die Geschw. in der SPS bekannt ist, dann könnte man die
Impulse mal Speedfaktor umrechnen, sodass es immer passt.

Gruss: Vladi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier mal ein Beispiel für ein Zähl-DBW (temp_Var), welches mit einem Taktimpuls hochgezählt wird:

Code:
//??Zeitimpuls
      ON    #ZEIT_IMPULS_100ms        //Taktimpuls
      ON    #LAUFZEIT_EIN                 //Boolean, bei true ist die Zählung frei
      SPB   ENDE

      L     #AKKU_LAUFZEIT
      L     1
      +I    
      T     #AKKU_LAUFZEIT
      SPA   ENDE
    
ENDE: NOP 0
Wie vladi schon schrieb, brauchst du noch die Information, wieviele Umdrehungen insgesamt erfolgen müssen. Dann kannst du je Umdrehung die Zeit (Anzahl der Zeitimpulse) messen und das dann auf die noch zu erwartende Laufzeit umrechnen.
 
Hallo,

wieviel Umdrehungen es sind müsste ich noch rausfinden.
Mal das Beispiel an der Maschine.

Es ist eine Verpackungsmaschine S7, OP7.
Nach einer Zeit X wird die Folie ja immer weniger und irgendwann wird dadurch ein Hebel so bewegt, aufgrund der abnehmenden Folie, das ein Indikator ein Signal in die SPS gibt und eine Lampe anfängt zu blinken.Vom Zeitpunkt des blinkens an bis dahin das die Maschine anhält weil die Folie ganz zu Ende ist,
möchte ich diese Zeitanzeige einbauen.Denn nur eine Zeit die man angezeigt bekommt,als Uhrzeit oder Counter -eben eine Zahl, verteht man doch einzuschätzen.
Es passiert immer das die Maschine dann ein paar min. steht.So kann man sehen und sagen "Aha die Lampe blinkt,schaut ins Display,oh noch 12.min"!
So lässt sich besser einschätzen wie lange die Masch. in etwa läuft.

Anfangen zu zählen muß es demnach wenn der Indikator das Signal gibt für die blinkende Lampe.Dieser Zeitpunkt ist für die Masch. ja immer der gleiche da die Folie immer an der gleichen Stelle einen Gewissen Durchmesser hat.
Die Zeit ab diesem Zeitpunkt blinken,anfangen mit Zählen bis zum Stopp der Maschine muß ich das erste mal messen, stimmt.

Wie muß dann das ganze in einem Netzwerk aussehen, wenn ich diese Vorgaben habe.
Zeit vom anfangen der blinkenden Lampe bis zum Folienende: 13min
Umdrehungen = 12000 <---demnach 12000 Impulse am Zählglied


Gruß
Maik
 
Hallo,
ich würde das Ganze nach dem Prinzip eines Fortschrittsbalkens realisieren.
Du weißt, wie viele Impulse insgesamt benötigt werden. Du misst die Zeit vom Start an und rechnest entsprechend der vergangenen Zeit und der geleisteten Impulse hoch.
Beispiel :
2 Minuten vergangen - 1000 Impulse gezählt
es werden 12000 Impulse benötigt - also dauert er aktuell noch 22 Minuten :=
(12000 Impulse Gesamt - 1000 Impulse aktuell) / 1000 Impulse aktuell * vergangener Zeit ...:D
Wie wäre das ?
 
Na da hast mich jetzt aber erwischt ...

Ich würde folgendes machen :
- Zunächst mit dem SFC 1 das Datum und die Uhrzeit aus der CPU holen. (Machweise wird in der Step7-Hilfe erklärt)
- die so gefundene Variable vom Typ Date_Time mittels System-FC3 (?) in ein DWord vom Typ TOD umwandeln / herausfiltern. Jetzt hast du die aktuelle Uhrzeit in Millisekunden. Eventuell teilst du das durch 1000 um auf Sekunden zu kommen.
- diesen Hilfswert merkst du dir beim Start deines Vorgangs.
- um jetzt die vergangene Zeit zu erhalten ziehst du von dem immer wieder aktualisierten Hilfswert den gemerkten Wert ab.

Der Rest läuft genau nach der Formel wie schon beschrieben.

L dint_akt_Uhrzeit
L dint_gemerkte_Uhrzeit
-D
T dint_vergangene_Zeit

L dint_Impulse_Gesamt
L dint_Impulse_aktuell
-D
L dint_Impulse_aktuell
/D
L dint_vergangene_Zeit
*D
T dint_benötigte_Zeit

oder so - vielleicht spielst du damit mal herum
Gruß
Ralf
 
Zurück
Oben