Variable für Zeitbaustein

Jupp06

Level-1
Beiträge
107
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Leute!

Ich hab zwei Fragen:

1. Kann man einen Zeitbaustein auch als temporäre Variable in einem FC programmieren?
Ich habe einen FC geschrieben, den ich in verschiedenen Programmen einsetzten will. Alles läuft mit Variablen. Bloß die Zeitbausteine bekomm ich nicht als Variable hin. Das wäre aber sehr praktisch, weil ich ja sonst immer darauf achten müsste, ob die entsprechenden Zeitbausteine schon benutzt sind.

2. Wie kann ich z.B. ein Eingangswort dauerhaft speichern? ich habs mit dem DB versucht, aber sobald die Eingänge nicht mehr "EIN" sind, wird auch der Wert im DB zurückgesetzt. Das Einganswort soll mit einem bestimmten Takt immer wieder eingelesen werden, und so lange, das Taktsignal nicht kommt, im DB gespeichert bleiben. Ist das möglich?

Vielen dank schonmal im Vorraus für eure Antworten!!!

Gruß
Johannes :)
 
hallo jupp06

zu zweitens fällt mir da nur folgendes ein

Code:
      U     E      1.0              # dein eingang den du speichern willst
      U     M      1.1             #hier musst du deinen taktmerker eingeben
      S     DB100.DBX    1.1   #hier setzt du das bit in den DB
      UN    E      1.0           
      U     M      1.1
      R     DB100.DBX    1.1   #hier wird es zurück gesetzt wenn der eingang beim takt nicht da ist
aber wozu das ganze in ein DB schreiben

Code:
      U     E      1.0              
      U     M      1.1             
      S     M      2.0   
      UN    E      1.0           
      U     M      1.1
      R     M      2.0

so setzt du das bit in einen merker und musst nicht über den DB gehen

hoffe dir dabei etwas geholfen zu haben

gruß benny
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jupp,

schau dir mal die TON/TOFF Bausteine an. Die kannst du in einem FB als stat-Variable deklarieren und sie exakt wie einen SE/SA Timer verwenden. Bei jedem FB Aufruf hast Du dann einen anderen Instanz-DB und somit auch neue Timer die garantiert noch nicht im Programm verwendet hast.

Zu 2. würde ich ähnlich wie Garog lösen:
U M2.0 //Freigabe
SPBN dont //wenn Freigabe vorhanden Code ausführen
L #IN_Wert //Eingangsvariable
T #STAT_Wert //statische Variable (Instanz-DB)
dont: NOP 0


MfG SPS_Fuzzy
 
Zuviel Werbung?
-> Hier kostenlos registrieren
HTML:
 zu Punkt 1:

Ich benutze in fast allen Fällen folgenden FC:

FC2
Schnittstelle:
IN:      Takt          BOOL     Zeittakt als Zyklusflanke
          Verz_Zeit      INT      Verzögerungsfaktor

IN/OUT:  Hilfs_Zelle   INT      Hilfszelle 

Netzwerk 1:

L 0                    // Verzögerungszeit event. Rücksetzen
SPBN RV                // VKE enthält zu verzögernden Eingang

UN #Takt                // Zeitverzögert auswerten
SPB Max1
L #Hilfs_Zelle          // akt. Zeitwert laden
L 1                     // Verzögerungszeit summieren
+I 
SPO Max1                // Auf Maximalwert begrenzen
RV: T #Hilfs_Zelle

Max1: L #Hilfs_Zelle   // akt. Zeitwert laden
L #Verz_Zeit           // Grenzwert zur Auswertung laden 
>=I 
SAVE                   // Ergebnis über BIE weitergeben


Der Aufruf im Programm sieht dann folgendermaßen aus:

UN E 132.4             (VKE=1 -> FC2 aktiv)
CALL FC 2
Takt :=M1.5            (z.B. Sekundentakt)
Verz_Zeit :=5          (Einheit siehe Takt)
Hilfs_Zelle:=#verz_MAX  (oder DB?DBW irgenwas)
= M 10.0               Status 1 wenn Verz_Zeit >= Hilfs_Zelle

Funzt eigenlich super wenn man viele Zeitvariabelen z.B.
in WinCC oder ProTool zu verarbeiten hat.

Gruß aus dem Sauerland
Markus
 
Zurück
Oben