S5TIME wandeln zu brauchbarem

marcelh

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

folgendes Problem:

Über ein OP77B möchte ich einen Zeitwert in Sekunden Ausgeben bzw verändern. Diese Zeit soll dann als S5Time auf einen Impuls gehen( das ist nicht das Problem).
Ich bekomme die Umwandlung einfach nicht hin! Über das OP lese ich einen Int ein, der bewegt sich immer zwischen 1-10 sec. also passt das. Nur halt die Weiterverarbeitung kriege ich nciht auf die Reihe.

Hoffe auf baldige antwort
Mit freundlichen Grüßen

Marcel
 
der larry hat das mal für dich erklärt
2.) du machst ein Eingabefeld vom Typ INT. Diesen Eingabewert wandelst du in der SPS mit dem Befehl ITB in einen BCD-Wert um und veroderst diesen Wert dann mit deiner Basiseinheit der Eingabe - also Eingabe in Sek. dann mit w#16#2000 verodern - oder Eingabe in Zehntelsek. dann mit w#16#1000 verodern. Hierbei mußt du dann allerdings beachten, dass deine Euingabe den Wert von 999 nicht übersteigen darf. Das Ergebnis dieser Operation ist dann auch eine S5Time, die du für den Timer verwenden kannst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, also im OP habe ich jetzt mein Int Feld und den ankommenden Wert in der Sps habe ich auch umgewandelt.
Definier mir mal bitte "verodern". Gib mla bitte ein Beispiel.

Ist ja nicht mehr weit zum Ziel oder :D

danke shconmal für die Antwort
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ok, habe ich gemacht, habe im OP auf 2 sec gestellt, BCD ist 16#0002

und der "veroderte" Wert ist bei mir 2002.

so den schreibe ich jetzt in einen DBW und nehme ihn als Zeit,
mit move, oder?

EDIT:
Jap, klappt alles perfekt! bekomme jetzt am Impuls meine 2sec ;D

Danke sehr!

mfg
 
Zuletzt bearbeitet:
Hallo Marcel,
auf Basis meiner Antwort von oben :
Code:
U E 0.0
L #Zeitbasis_fuer_Timer  // dies kann eine Temp-Variable vom Typ S5Time sein
SE T 11
... oder so ...
 
Hallo,

leider habe ich hier bei der Suche nach dem Umwandeln von INT in eine S5Time nicht das passende für mich gefunden...
Vll bin ich auch etwas zu blöd...

Ich habe folgendes Problem:

Im TP soll man die Zeit eingeben können, von 0,01 sekunde bis 180 Sekunden.
Die Zeit wird im INT vorgegeben, sprich der INT - Wert 1 entspricht 10ms, der INT - Wert 10 = 100ms, der INT - Wert 100 = 1 sekunde.
Das funktioniert bis zum INT - Wert 999 = 9 sek 990 ms.

Sobald ich den INT - Wert 1000 eingebe, welcher 10 sekunden entsprechen soll, funktioniert das nicht mehr!

Hat jemand so etwas schon mal lösen können???
Für gute Tipps wäre ich Eich echt Dankbar!

Gruß
 
Hallo,

Gib deinem Integer das Format S5Time

Im Display kannst die Kommastellen um 3 verschieben, dann hast Sekundenangabe mit 1/10/100
1,000s op= 1000ms sps

oder nicht verschieben,

1000ms = 1000ms
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

unten stehend den Programmcode bei den ich mir zusammen gebastelt habe.
Ist das Resultat aus der Suche... ;-)

Dies ist quasi ein eigener Baustein den man einfach nur von außen mit dem Wert "füttern" muss, ausgegeben wird dann der Wert in S5Time.

L #Zeitvorgabe
L 999
>I
SPB M001
L #Zeitvorgabe
ITB
T #S5_Time
BEA

M001: L #Zeitvorgabe
L 9990
>I
SPB M002
L #Zeitvorgabe
L 10
/I
ITB
OW W#16#1000 // Zeitbasis 100ms
T #S5_Time
BEA

M002: L #Zeitvorgabe
L L#99990
>I
SPB M003
L #Zeitvorgabe
L 100
/I
ITB
OW W#16#2000 // Zeitbasis 1s
T #S5_Time
BEA

M003: L #Zeitvorgabe
L L#999990
>I
SPB M004
L #Zeitvorgabe
L 1000
/I
ITB
OW W#16#3000 // Zeitbasis 10s
T #S5_Time
BEA

M004: = #Error


Gruß
 
@Paradox
Wenn es nun also wirklich ein Siemens-TP ist, von dem da die Rede ist,
dann verstehe ich die furchtbar verkomplizierte Vorgehensweise nicht.

Variableneinstellung:
Typ: Timer,
Lineare Skalierung: Steuerung 0-10 -> Bediengerät 0-1

Dann dein gewünschtes EA-Feld mit 2 kommastellen Projektieren ... fertig.

Mfg
Manuel
 
Zurück
Oben