Step 7 Berechneten INT-Wert in S5Time umwandeln

blubbb

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

stehe vor folgenden Problem. Ich berechne eine Zeit in ms , im Format INT und möchte diesen Wert dann in eine S5Time umwandeln. Das ganze auf der Programmiersprache SCL.

Zurzeit nutze ich den Systembaustein FC40(unten TIM_S5TI) von Siemens den ich eingebunden habe.

Dann sieht das so aus:

// Umwandlung und Zuweisung Zeit
"Zeit1 := TIM_S5TI(IN := DINT_TO_TIME (INT_TO_DINT(Zeit_Ergebniss)));"

nur leider schneidet die Umwandlung die "einer"-Stelle ab. Hat jemand eine andere Idee oder kennt ein Trick um den "einer Bereich" mit zu übergeben?

Lieben Gruß
blubbb
 
Zuviel Werbung?
-> Hier kostenlos registrieren
.
Du solltest in deinem ursprünglichem Post weitermachen
und dieses Doppelposting vermeiden ! :!:

Aber dennoch: die Suchfunktion oben rechts hier auf
dieser Seite wird dir sicher einige Lösungsmöglichkeiten
auch für SCL aufzeigen können. ;)

Zur Umwandlung von INT zu S5Time kann ich dir leider
nur diesen Hinweis (kein SCL) geben.
 
Nur leider schneidet die Umwandlung bzw der FC40 Baustein die "Einer"-Stell ab und ignoriert diese.

Kann mir jemand helfen, hat einer eine Idee oder einen Tricke wie ich diese "Einer"-Stelle mit übergeben bekomme?
Ich vermute mal, dass das Abschneiden/Ignorieren der Einer-Stelle (was auch immer Du damit genau meinst) mit dem speziellen S5Time-Format zusammen hängt.
Das Format wird ja in Softmaschines 2. Link sehr gut erklärt, um das nach zu vollziehen.

Daher besteht wohl die Lösung Deines Problems darin, von der Verwendung der S5-Timer auf die IEC-Timer TON, TOF usw. zu wechseln.
Außerdem ersparst Du Dir damit die umständliche Umwandlung der Timervorgaben und eine Multiinstanzierung der Bausteine wird ebenfalls einfacher.
 
INT-Wert in S5Time

die S5Time hat 3 Stellen. Beispiele:

a) L S5T#123ms -> in KH 0123
b) L S5T#2S34ms -> in KH 1234 = 234ms * 10
c) L S5T#34S5ms -> in KH 2345 = 234ms * 100

kann sein dass ich mich jetzt um eine 10er Stelle täusche.

korrekt ist aber dass die rechten 3 Stellen immer BCD sind.

L #Zeit // in msa
L 10
/I
ITB
T #myS5Time

#Zeit in ms für Werte von 000 bis 999 ergibt den S5Timerwert

steht aber auch in der Hilfe, und im bergerbuch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
b) L S5T#2S34ms -> in KH 1234 = 234ms * 10
2 Sekunden und 34 Millisekunden sind aber nicht 234ms * 10, sondern 203,4ms * 10 und genau das wird auch das Problem sein.
Wenn bei seinem INT Werte >1000ms eingegeben werden, geht die letzte Stelle auf Grund der nötigen Multiplikation verloren.
Also, um bei dem Beispiel zu bleiben, aus 2034ms werden dann 203 * 10ms.
Deshalb "korrigiert" S7 übrigens auch die Eingabe S5T#2S34MS auf S5T#2S30MS.
 
.
Hallo zusammen!

Ich denke mal, der FC 40 macht das schon richtig.

Der FC 40 wandelt das Format TIME mit Abrundung
in das Format S5TIME.
Das Format S5TIME kann jedoch nicht unter 10 ms
auflösen und korrigiert dies natürlich.

Der TE sollte also seine Berechnung des INT-Wertes
entsprechend anpassen oder die Rundung (also seine
fehlenden Einer-Stellen) so hinnehmen.


Noch zur Info für die andere Richtung:

Ist die zu wandelnde Zeit am IN-Parameter
grösser als die grösste im S5TIME-Format
darstellbare Zeit, gibt der FC 40 als Ergebnis
den Wert S5TIME#999.3 heraus.

Also darf der IN-Parameter des FC 40 nicht grösser
als TIME#02:46:30.000 sein.

Gruss
 
Zuletzt bearbeitet:
Ich denke mal, der FC 40 macht das schon richtig.
Natürlich macht der FC das richtig, deshalb möchte ich vom "warum" noch mal auf die eigentliche Frage nach der möglichen Lösung des Problems zurück kommen:
Daher besteht wohl die Lösung Deines Problems darin, von der Verwendung der S5-Timer auf die IEC-Timer TON, TOF usw. zu wechseln.
Außerdem ersparst Du Dir damit die umständliche Umwandlung der Timervorgaben und eine Multiinstanzierung der Bausteine wird ebenfalls einfacher.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

erstmal vielen Dank für die zahlreichen Antworten:),
da S5Time nicht unter 10ms auflösen kann und dies korrigiert,(besten dank an SoftMachine für diese Information)
werde das ganze mal mit einem IEC Timer versuchen und anschließend berichten.
 
Hallo zusammen,

erstmal vielen Dank für die zahlreichen Antworten:),
da S5Time nicht unter 10ms auflösen kann und dies korrigiert,(besten dank an SoftMachine für diese Information)
werde das ganze mal mit einem IEC Timer versuchen und anschließend berichten.


Gern geschehen und viel Erfolg mit der IEC-Variante !

Gruss
 
.
Falls du doch bei S5TIME bleiben musst, kannst du
deinen berechneten INT-Wert schon vor der
FC40-Wandlung in der Einer-Stelle auf- oder abrunden.

Damit verkürzt du die 10ms-Unschärfe auf 5ms, weil
das Format S5TIME offenbar immer (auch bei 9ms)
abgerundet wird.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich hab nun das Ergebniss vor der Umwandlung gerundet und somit eine Unschärfe von 5ms welche für mich nun absolut ausreichen ist.

Eine andere Frage, ich habe versucht einen IEC Timer (TP) anzulegen jedoch hab ich es nicht geschafft bzgl. der Deklaration in SCL.
Gibt es die IEC Timer auch für Step 7 oder nur in TIA?

Mit freundlichen Grüßen
 
Zurück
Oben