IEC Timer TON im Simatic S7

spovi1

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Habe in meinem S7 Projekt IEC Timer TON eingebaut.
Diese werden außerhalb eines Zustandautomatens aufgerufen. Im Automatik Modus funktioniert dieser.
Wechsel ich in den Stop Modus, möchte ich, dass die Zeitfunktion "eingefriert" wird (kein Weiterzählen).
Hierfür setze ich den EN-Eingang des TON (programmier in FUP) auf FALSE. Sobald ein Wechsel in den Automatik Modus erfolgt wird der EN-Eingang wieder auf TRUE gesetzt. Die Zeit läuft jedoch trotzdem weiter, obwohl das EN auf FALSE ist/war.
Hat jmd schonmal ein ähnliches Problem gehabt?

Habe das Programm auch beobachtet, wo man sehen kann, dass EN auf FALSE wechselt.

Danke
 
Der Timer läuft weiter, weil er vermutlich intern auf die Systemuhr zugreift. Nur der Ausgang wird erst bei erneutem aktivieren gesetzt.

IEC- und S5-Timer lassen sich nicht anhalten, benötigst Du eine solche Funktion, dann würde ich empfehlen einen eigenen Timer zu bauen auf Basis eines Zählers (vorzugsweise im DINT) und diesen von außen mit einem Zähltakt (z. B. Taktmerkerbyte) zu belegen! Da ein IEC-Timer mit dem TIME-Format arbeitet kannst Du den Wert einfach in einen DINT-Wert kopieren. Der Wert ist dann in ms dargestellt.
 
Beim wegnehmen des EN-Eingangs bleibt ja die vergangene Zeit (TON) bzw. die noch verbleibene Zeit an den Ausgängen stehen.
Wenn du den EN-Eingang von dem TON wegnimmst, dann hast du die abgelaufene Zeit an dem Ausgang ET stehen.

Beim erneuten Starten müsstest du dann die Zeit von der vorher angegebenen Zeit abziehen und den Timer damit neu starten.
Ist sehr umständlich, aber müsste prinzipiell gehen.

Wobei mir die Lösung von Sprungmarke besser gefallen würde.

Gruß wolder
 
Man müsste die Instanz-Daten des TON-Bausteins mit der entsprechenden Systemzeit nachführen, dann könnte man den Timer anhalten und mit der Zeit weiterlaufen lassen.

In den statischen Variablen stehen ja die Variablen:
STIME: Startzeitpunkt des Timers (TIME_TCK)
ATIME: Laufende Systemzeit (TIME_TCK)
STATE: Timerstatus: 0=aus, 1=läuft, 2=abgelaufen

Code:
      U     "TON_EN"                    // false = Timer anhalten
      SPB   ten
//-------------
// Zeit soll angehalten werden, interne TON-Daten nachführen.
// TON auf dieser Instanz darf dann nicht ausgeführt werden!
      CALL  "TIME_TCK"
       RET_VAL:="DI_TON".ATIME

      L     "DI_TON".ATIME              // Aktuelle Zeit
      L     "DI_TON".ET                 // Bisher abgelaufene Zeit
      -D    
      T     "DI_TON".STIME              // Startzeit des Timers 

      SPA   tdis                        // TON-Aufruf überspringen
//-------------
ten:  CALL  "TON" , "DI_TON"
       IN:="DI_TON".IN
       PT:="DI_TON".PT
       Q :="DI_TON".Q
       ET:="DI_TON".ET
//-------------
tdis: NOP   0

Es fehlt noch die Abfrage wenn der Wert von TIME_TCK übergelaufen sein sollte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Setze doch den Move Baustein

Hallo,
Habe in meinem S7 Projekt IEC Timer TON eingebaut.
Diese werden außerhalb eines Zustandautomatens aufgerufen. Im Automatik Modus funktioniert dieser.
Wechsel ich in den Stop Modus, möchte ich, dass die Zeitfunktion "eingefriert" wird (kein Weiterzählen).
Hierfür setze ich den EN-Eingang des TON (programmier in FUP) auf FALSE. Sobald ein Wechsel in den Automatik Modus erfolgt wird der EN-Eingang wieder auf TRUE gesetzt. Die Zeit läuft jedoch trotzdem weiter, obwohl das EN auf FALSE ist/war.
Hat jmd schonmal ein ähnliches Problem gehabt?

Habe das Programm auch beobachtet, wo man sehen kann, dass EN auf FALSE wechselt.

Danke


Hallo!

Du möchtest die Zeiteinfrieren um bestimmt mit der Zeit weiter arbeiten zu können, stimmts?

Dann ist es besser wenn du den Movebefehl verwendest!
 
Zurück
Oben