s5time Multiplizieren

settelma

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

kann mir jemand sagen wie ich eine s5time multiplizieren kann. Ist das überhaupt möglich.

Ich will am Panel ( TP177a ) einen Wert einstellen ( z.B. 1 ). Dieser wert soll mit einem Umrechnungsfaktor ( z.B. 1,7 ) multipliziert werden. Dieses Ergebnis will ich dann als S5time an den Zeiteingang einer Einschaltverzögerung legen. Ich verwende eine S7 315.

Vielen Dank

Gruß Markus
 
Hallo zusammen,

kann mir jemand sagen wie ich eine s5time multiplizieren kann. Ist das überhaupt möglich.

Ich will am Panel ( TP177a ) einen Wert einstellen ( z.B. 1 ). Dieser wert soll mit einem Umrechnungsfaktor ( z.B. 1,7 ) multipliziert werden. Dieses Ergebnis will ich dann als S5time an den Zeiteingang einer Einschaltverzögerung legen. Ich verwende eine S7 315.

Vielen Dank

Gruß Markus

Ja, auch dies geht.
Doch ist es einfacher wenn du einen IEC timer nimmst.(z.B.SFB4)
Beim s5t musst du auf die Skalierung des Timers manuell machen.
Der Wert muss BCD sein.
Du musst dir das Zahlenformat in der Hilfe genau anschauen, dann klappt auch dieses ;-)


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kannst du mir das genauer erklären?

So funtioniert das nicht oder?

L DB100.DBW 0 // der einstellbare Wert am TP als int
L 1.700000e+000 // Multiplikationswert
*I
T DB100.DBW 2 // Istwert am Eingang der Einschaltverzögerung als s5time
NOP 0
 
Kannst du mir das genauer erklären?

So funtioniert das nicht oder?

L DB100.DBW 0 // der einstellbare Wert am TP als int
L 1.700000e+000 // Multiplikationswert
*I
T DB100.DBW 2 // Istwert am Eingang der Einschaltverzögerung als s5time
NOP 0
Nein,
wenn dann vielleicht so:

Code:
L DB100.DBW 0 // der einstellbare Wert am TP als int
ITD
DTR
L 1.700000e+000 // Multiplikationswert
*[COLOR=red]R[/COLOR]
[COLOR=black]RND[/COLOR]
[COLOR=black]ITB[/COLOR]
T DB100.DBW 2 // Istwert am Eingang der Einschaltverzögerung als s5time
Aber bike's Vorschlag mit dem IEC Timer ist wirklich besser.
Dann kannst Du gleich alles in Millisekunden rechnen und nicht in dem umständlichen BCD Format.
Und man ist nicht so sehr bei der Zeit eingeschränkt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab hald schon die Siemens Timer im Programm verwendet und will nicht alles umstellen. Wär schon schön wenns S5t wär. Die S5t ist BCD Codiert oder?
 
Ich hab hald schon die Siemens Timer im Programm verwendet und will nicht alles umstellen. Wär schon schön wenns S5t wär. Die S5t ist BCD Codiert oder?

Ja, das ist es, doch bei der Multiplikation musst du beachten, wenn aus zentel auf einmal Sekunden oder 10 Sekunden als Ergebnis werden.

Welchen Zahlenrahmen haben die Eingaben?
Dann kann man ggF eine Funktion programmieren.


bike
 
Ich brauche nur Zeiten von ca. 0,3s bis 30s.
Gruß Markus

Wenn du nun weißt, wie du die Zahlen eingeben willst, kannst du die Zahl umrechnen.
Die Integerzahl überprüfen welcher Zahlenrahmen benutzt wird.
Du kannst es als 10 in Bit 12 und 13 deklarieren, die Zeit aus Integer in BCD wandeln und an den Timer anschalten.
Du musst nur die Zahlen auf Gültigkeit und das gewandelte Ergebnis prüfen, wenn da ein Fehler drin ist geht die PLC auf Stopp.

Alles geklärt?


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du nun weißt, wie du die Zahlen eingeben willst, kannst du die Zahl umrechnen.
Die Integerzahl überprüfen welcher Zahlenrahmen benutzt wird.
Du kannst es als 10 in Bit 12 und 13 deklarieren, die Zeit aus Integer in BCD wandeln und an den Timer anschalten.
Du musst nur die Zahlen auf Gültigkeit und das gewandelte Ergebnis prüfen, wenn da ein Fehler drin ist geht die PLC auf Stopp.

Alles geklärt?


bike

Tja das funktioniert wunderbar bis zur Zahl 12. Ab 13 passen die Werte nicht mehr. Ich hab das mit dem Bit 12 und 13 noch nicht verstanden.

Kannst du mir das ( für Einsteiger ) nochmal erklären.

Danke

Gruß Markus
 
Tja das funktioniert wunderbar bis zur Zahl 12. Ab 13 passen die Werte nicht mehr. Ich hab das mit dem Bit 12 und 13 noch nicht verstanden.

Kannst du mir das ( für Einsteiger ) nochmal erklären.

Danke

Gruß Markus

Die ersten 3 Nibble(4bit) beinhalten die Zahl im BCD Format.
Da kann Maximal 999 drin stehen.
Mit den beiden Bits, 12 und 13 wird skaliert.
00 = Zeitbasis 0,01s
01 = 0,1s
10 = 1 s
11 = 10s

wenn du 0,3 sek hast, dann schaut das Zeitwort so aus:
xx01 0000 0000 0101
Die beiden xx sind relevant 01 = skaliert auf 0,1 s und am ende die 3 sind hoffe ich klar.

Du nimmst eine Integerzahl und wandelst diese mit I_BCD?
Und was machst du dann?


bike
 
Ich habs so im Programm stehen.
Den DB100.DBW 2 lege ich direkt auf den Zeiteingang der Einschaltverzögerung.

L DB100.DBW 0 // der einstellbare Wert am TP als int
ITD
DTR
L 1.700000e+000 // Multiplikationswert
*R
RND
ITB
T DB100.DBW 2 // Istwert am Eingang der Einschaltverzögerung als s5time
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habs so im Programm stehen.
Den DB100.DBW 2 lege ich direkt auf den Zeiteingang der Einschaltverzögerung.

L DB100.DBW 0 // der einstellbare Wert am TP als int
ITD
DTR
L 1.700000e+000 // Multiplikationswert
*R
RND
ITB
T DB100.DBW 2 // Istwert am Eingang der Einschaltverzögerung als s5time

Und was steht in dem DBW?
Zum skalieren musst du die Bits setzen
set
= db100.dbx12.0
clr
= db100.dbx13.0
damit du auf die 0,1 sek Skalierung kommst.


bike
 
Ich hab hald schon die Siemens Timer im Programm verwendet und will nicht alles umstellen. Wär schon schön wenns S5t wär.
Tip1: Wenn Du am Panel die Zeit unbedingt als S5TIME eingeben willst, dann kannst Du auch den Eingabewert mit FC33 S5TI_TIM in TIME# umwandeln, Deine Multiplikation machen und anschließend mit FC40 TIM_S5TI in S5TIME zurückwandeln (Standard Library > IEC Function Blocks).
Tip2: Ganzzahl-Multiplikation mit Runden: TIME# * 1,7 = (TIME# * 17 + 5) / 10

Harald
 
Skalieren kann das Panel eigentlich auch selbst:
In den Eigenschaften der Variablen gibt es unter "Eigenschaften" den Punkt "Lineare Skalierung". Da gibst Du bei "Anfangswert" auf beiden Seiten "0" ein und als "Endwert" bei "Steuerung" einen Wert ein, der 1,7-mal höher ist, als der, den Du bei "Bediengerät" eingibst.
In der Steuerung musst Du dann nichts mehr machen, da das Panel direkt die S5TIME skaliert, einschließlich der richtigen Zeitbasis.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das mit der Skalierung funktioniert ja einwandfrei.

Habs gerade mal getestet. Und ich brauch keine Hand ans Programm zu legen.

Vielen Dank für den Tipp.

Hat das auch irgendwelche Nachteil.

Gruß Markus
 
Hat das auch irgendwelche Nachteil.

Wenn da ein Fragezeichen stehen sollte, dann ja.
Denn es ist für jeden der das Programm nicht erstellt hat, wenn 10 eingegeben wird und mit 17 gearbeitet wird.
So etwas ist fatal und die schlechteste Lösung die ich mir vorstellen kann.
Was soll der arme Instandhalter oder nachfolgende Programmierer tun, wenn er nicht das gesamte Programm und die Visualisierung analysieren will/kann.

Jeder kann irgend etwas irgendwie verbiegen, doch ist das sinnvoll?



bike


Ps: es geht auch anders. Doch scheinbar ist die Bequemlichkeit mehr wert als gute Programme zu erstellen.
Meine Meinung, das ist MIST!
 
Genau deshalb hab ich gefragt.
Das ist keine Sache von Bequemlichkeit. Ich hab das Programm mittlerweile auf IEC Timer umgestellt. Hab also jetzt beide Versionen. Für mich ist es aber sehr hilfreich um neue Sachen zu lernen.

Nochmal zu der Geschichte mit den IEC Timern. Das hat noch nicht so richtig funktioniert.

Ich hab den Timer in einen FC gezogen und genauso angesteuert wie den Siemens Timer. An Ausgang Q einen Merker gesetzt den ich dann im Programm wie den Siemens Timer verschalten hab.
Allerdings hat mir der Timer den Merker nie gesetzt bzw. die Zeit ist nicht abgelaufen. Ich weiss wiedermal nicht an was das liegt. Ich habs so gemacht wie es in der Hilfe steht.

Noch ne andere Frage. Ich benötige 20 Timer. Muss dann wirklich für jeden ein eigener Datenbaustein erzeugt werden. Da bekommt man ja ganze Massen zusammen.

Gruß Markus
 
Zurück
Oben