Step 5 Timer per Taster erhöhen oder veringern

Beiträge
54
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.
Ich habe ein lauflicht programmiert mit einem festen Timer.
Nun möchte ich den Timer (zeit) über zwei Taster schneller oder langsamer machen und das während der Laufzeit.
Kann mir jemand sagen wie ich das realisiert bekomme anhand von einem Beispiel?
 
Ich hätte da an sowas gedacht.
T1=0,2ms
Wenn Taster1=1 //Taster Schneller
und Wenn Zähler<10
Zähler=Zähler+1 (1 entspricht 0,2 sekunden)

Wenn Taster2=1 //Taster langsamer
und Wenn Zähler>1
Zähler=Zähler-(1 entspricht 0,2 sekunden)

For i=1 to Zähler
Timer setzen
Timer ablauf
Next i

Wenn Timer abgelaufen
und wenn i=Zähler
Dann Programmablauf

SO in etwa hätte ich es in Basic gemacht.
 
Hallo,
ich würde den einfachen Weg über einen Zähler gehen.

U Taster langsamer
ZV Z1
U Taster schneller
ZR Z1

LC Z1
T MW 10
L KH 1FFF (1 Steht für 0,1s)
UW
T MW12 (variabler Zeitwert)


http://www.sps-programm.info/sps-programm-zeitglieder-simatic-s5.php

Gruß
Joe

Die Idee mit dem Zähler ist gut, aber Ich wag mal zu behaupten, dass das so nicht passt.

Code:
U Taster langsamer
ZV Z1
U Taster  schneller
ZR Z1

LC Z1
L KH 1000 (1 Steht für 0,1s)
OW
T MW12 (variabler Zeitwert)

Gruß
Dieter
 
Hallo.
Mein Programm läuft züglich im OB1 ab.
Im OB1 funktioniert UW oder OW nicht. Bitte denkt daran ich bin neuling.
Ich müsste den Code für den Timer in einem FB schreiben.
Wie kann ich es machen, das aus dem OB1 der Timer geändert wird, und wie kann ich den Timer im OB1 starten und abfragen?
Ein Beispielcode wäre hilfreich.

Danke.
 
Was hindert Dich einen FB zu programmieren, im OB1 aufzurufen, und das Ergebnis danach in Deinem OB1, oder wo auch immer weiterzuverwenden?
Grundsätzlich solltest Du Deine Programme strukturieren. Da kommst Du um PBs, FBs ohnehin nicht herum.
Ein gesamtes Programm im OB1 ist nicht üblich und aus o.a. Gründen auch nicht gut.
Mach' es von Anfang an richtig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was hindert Dich einen FB zu programmieren, im OB1 aufzurufen, und das Ergebnis danach in Deinem OB1, oder wo auch immer weiterzuverwenden?
Grundsätzlich solltest Du Deine Programme strukturieren. Da kommst Du um PBs, FBs ohnehin nicht herum.
Ein gesamtes Programm im OB1 ist nicht üblich und aus o.a. Gründen auch nicht gut.
Mach' es von Anfang an richtig.

Danke.
Ich versuche es strukturiert zu machen.
Dieser Code steht bei mir im OB1 da die Tasten permanent überwacht werden sollen.
Code:
[COLOR=#333333]U Taster langsamer[/COLOR]
[COLOR=#333333]ZV Z1[/COLOR]
[COLOR=#333333]U Taster schneller[/COLOR]
[COLOR=#333333]ZR Z1[/COLOR]

Dieser Code steht bei mir in FB004.
Code:
[COLOR=#333333]LC Z1[/COLOR]
[COLOR=#333333]T MW 10[/COLOR]
[COLOR=#333333]L KH 1FFF (1 Steht für 0,1s)[/COLOR]
[COLOR=#333333]UW[/COLOR]
[COLOR=#333333]T MW12 (variabler Zeitwert)
[/COLOR]

Wenn ich das richtig verstehe wird in diesem Code der Zeitwert gesetzt.
Demnach muss ich im OP1 nur folgenden Code benutzen um den Timer zu Starten und auszuwerten.
Code:
[COLOR=#333333]
UN T1
SI T1

U T1
S A5.0
[/COLOR]

Ist das richtig?
 

Wenn ich das richtig verstehe wird in diesem Code der Zeitwert gesetzt.
Demnach muss ich im OP1 nur folgenden Code benutzen um den Timer zu Starten und auszuwerten.
Code:
[COLOR=#333333]
UN T1
SI T1

U T1
S A5.0
[/COLOR]


Ich kenne jetzt die Zusammenhänge nicht, was Du aber brauchst ist die Angabe der Zeit:

Code:
[COLOR=#333333]
UN T1
[/COLOR][B]L MW12[/B][COLOR=#333333]
SI T1

U T1
S A5.0
[/COLOR]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde generell hier ein Funktionsbaustein nehmen der im OB aufgerufen wird. Dann ein addierer und subtrahierer baustein benutzen um damit ein integer Wert per Taster zu erhöhen bzw. veringern. Dann diesen Wert in s5time umwandeln (findest dazu bestimmt was hier im Forum). Und schon bist du fertig.
Gruß Matthias

Sony Z3 über TapaTalk
 
Kannst ein FB bzw. FC für das Hauptprogramm nutzen und die umwandlung von integer zu s5time wiederum in ein seperaten FB den du dann im Hauptprogramm verwenden kannst. Den Umwandlungsbaustein kannst du dann mehrmals verwenden (Bausteinbibliothek) und sparst Programmierarbeit bzw. Zeit. Deshalb immer strukturieren und in kleinere Teilprogramme teilen!

Sony Z3 über TapaTalk
 
Ich versuche es strukturiert zu machen.
Dieser Code steht bei mir im OB1 da die Tasten permanent überwacht werden sollen.
[...]
Dieser Code steht bei mir in FB004.
Code:
[COLOR=#333333]LC Z1[/COLOR]
[COLOR=#333333]T MW 10[/COLOR]
[COLOR=#333333]L KH 1FFF (1 Steht für 0,1s)[/COLOR]
[COLOR=#333333]UW[/COLOR]
[COLOR=#333333]T MW12 (variabler Zeitwert)
[/COLOR]

[...]
Demnach muss ich im OP1 nur folgenden Code benutzen um den Timer zu Starten und auszuwerten.
Du brauchst Deinen Code nicht in mehrere Stücke zerreißen, Du kannst auch alles hintereinander im FB4 programmieren. Wenn Du den FB4 im OB1 aufrufst ("SPA FB4") dann werden alle Anweisungen genauso oft ausgeführt als würden sie im OB1 stehn.

Das Hinzufügen der S5TIME-Zeitbasis zum BCD-codierten Zählerwert kann nicht mit UW gemacht werden, Du mußt OW oder +F benutzen.
Code:
LC Z1     (Zählerstand 0..999 im BCD-Format)
[COLOR="#0000FF"]L KH 1000 (1 steht für 0,1s)
OW        (+F geht auch)[/COLOR]
T MW12    (variabler Zeitwert)


PS: Wer weitere Programmbeispiele zeigen will: Beachtet es geht hier um Step5.

Harald
 
Zurück
Oben