WinCC flex Zeit in DB

torstenh

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

heute muss ich euch mal um eine Antwort bitten!
Ich hoffe ihr könnt mir weiterhelfen.
Ich habe ein Problem mit WinCC und dem speichern des Zeitwertes in einem DB.
Zum Problem, habe in WinCC zwei Eingabefelder erstellt. Diese sind mit einem DB verbunden so das der Wert des Eingabefeldes(999) in den DB geschrieben wird. Dieser soll dann als Vorgabe für einen Zeitwert fungieren. Ein Zeitfeld soll in Minunten ausgegeben werden und das andere in Sekunden.
Leider bekomme ich das nicht gebacken und weiß auch nicht warum das nicht funktioniert.
Ich hatte die Zeitbasis mit OW W#16#2000 gesetzt aber es funktioniert einfach nicht das ich den Wert einmal in Minuten und einmal in Sekunden rausbekomme.
Ich habe den DB geladen, dann mit ITB in BCD und dann wieder in den gleichen Bereich geschrieben.

L DB21.DBW114 //in diesem DB schreib WINCC
ITB
T DB21.DBW114
OW W#16#2000
L DB21.DBW114
SA T1

u T1
S A25.1
.
.
.


Mit L DB21.DBW114 wollte ich dann den Zeitwert auslesen und einem Timer zuweisen. Aber ich weiß das das so nicht geht und weiß auch nicht wie ich das hinbekommen kann.
Für einen Tip wäre ich sehr dankbar.

Gruß
Torsten
 
Zuletzt bearbeitet:
Timer

Hallo,
zuerst möchte ich sagen: Standard Library, IEC Funktion Blocks, dort gibt es die FC40 "TIM_S5TI"; wandelt TIME Format auf S5Time.
TIME Format ist einfach ein Doppelwort mit Millisekunden drin. Damit kann man umrechnen...
999 Minuten macht S5Timer sowieso nicht.

Gruss: V.

P.S.: Überleg mal, wenn dies in jedem Zyklus berechnet wird, was passiert.. :
L DB21.DBW114 //in diesem DB schreib WINCC
ITB
T DB21.DBW114
 
Zuletzt bearbeitet:
Danke für deine Hilfe!
Habe noch nicht so viel Erfahrung mit WINCC und Datenzuweisung :confused:
Aber man wächst eben an seine Aufgaben.

L DB21.DBW114 //in diesem DB schreib WINCC
ITB
OW W#16#2000
SA T1

u T1
S A25.1
Hier wird der Wert in sek ausgegeben, könntest du mir ein Beispiel für die Minutenausgaben nennen? oder muss man da "rechnen"? (Sek in Minunten)
Mit der FC40 "TIM_S5TI" habe ich noch nicht gearbeitet. Weiß also hier auch nicht wie ich diese anwenden kann.
Aber ich werde mal sehen wie ich das hinbekomme. Danke nochmals!

Gruß
Torsten
 
Zuletzt bearbeitet:
U M 0.0
L "Timespeicher".DW_Timewert
L "Timespeicher".Muliplikator
*I
ITB
OW W#16#3000
SE T 1

U T 1
= M 1.0

....das sollte es sein für min!
 
:confused: irgendwie gefällt mir das alles nicht ...

Was hast du nun ?
Ein DW, in dem der Eingabewert in Minuten steht und eines mit den zugehörigenm Sekunden ? Demnach hättest du dann die Eingaben 3 und 45 für 3 Min. 45 Sek. - oder habe ich das jetzt komplett falsch verstanden ?

Zum Erstellen der zeitbasis rechnest du jetzt alles in Sekunden um - also :
Code:
L #Eingabe_Minuten
L 60
*I
L #Eingabe_Sekunden
+I
ITB
L w#16#2000
OW
T #Zeitbasis
 
U #Startbit
L #Zeitbasis
SE T 123
 
U T 123
= #Zeit_abgelaufen
Das sollte es dann sein. Beachte aber bitte, dass bei dieser Eingabe bei 999 Sekunden Schluß ist. Das wäre dann 16 Min. und 39 Sekunden. Danach produziert diese Umwandlung Quatsch.
Nun könntest du dann noch deine errechnete Verzögerung durch 10 teilen und den Multiplikator auf 3 statt 2 setzen (w#16#3000). Dann kämst du bis 999 * 10Sek. - also 166 Minuten und 30 Sekunden.

Vielleicht hilft dir das weiter ...
Gruß
LL
 
@vladi

...ja ich weiß, der Merker ist mir so dazwischengerutscht. Lade- und Transferoperationen werden immer ausgeführt.
danke nochmal!

@Larry Laffer

ich habe zwei Eingabefelder für eine Schmierung(WIN CC). Hier soll eine kurze Zeit (sek) für den Schmierimpuls eingegeben werden. In das zweite Eingabefeld soll die Wartezeit bis zum nächsten Schmierimpuls (min) eingegeben werden (Automatik: es soll immer wenn die Maschine läuft geschmiert werden).
Diese zwei Werte kommen von einem OP und werden jeweils in ein Datenword eines DB`s geschrieben(Wert für Stopzeit DB1.DBW0 und Schmiermittelimpulszeit DB1.DBW2).
Ich möchte diese Werte nehmen und jeweils zwei Timern zuweisen. Sek funktioniert und mit den Min habe ich des Beispiel oben getestet (PLCSIM).
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Mal 'ne blöde Frage...

Wenn Du die Minuten und die Sekunden, Also Wartungsintervall und Schmierdauer, schon hübsch in DWs liegen hast, warum zählst Du die DWs nicht einfach herunter?

Bei "0" übrigen Minuten Intervall = Schmierung
Bei "0" übrigen Sekunden Schmierung -> Reload interval
 
....es gibt keine blöden Fragen, nur....


ja, vielleicht auch eine Variante aber es funzt so wie ich das getan habe und ich bin ein wenig klüger geworden.
Habe nun mal vor die Taktmerker zu nutzen und mit einem Zähler die Munuten Werte zu generieren. Wenn ich eine Lösung habe stelle ich sie mal hier rein. Aber vielleicht ist es genau das was du meinst?

(Taktmerker zählt z.B. Sekunden zurück und wenn ein bestimmter Zählwert erreicht ist dann soll etwas passieren)

mal sehen wie ich das mache.
Danke nochmals an alle ihr habt mir sehr geholfen!
 
Zurück
Oben