variablen Zeitwert erstellen

Zapot

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Grüße an die Profis,

versuche in Step7 eine Formel einzugeben um einen variablen Zeitwert zu erhalten, den ich dann für einen Timer (SE) benutzen will. Aber leider funktioniert das nicht so wie ich mir das denke. Ich komme da mit Real und Int irgendwie durcheinander.
Zur Formel: t = s / ( d * ¶ * (n / 60))
T = ?;
s= weg(1700mm); d= Durchmesser=8,3mm; ¶= PI =3,14; n= Drehzahl=2700¯¹

und jetzt ?:ROFLMAO:

freu mich auf jede Anregung oder Ansatz zum Problem
danke
 
Hallo Zapot,

bin alles andere als ein Profi, über die Zusammensetzung
der S5 Zeit habe ich mal folgendes aufgeschnappt.
Vielleicht hilft dir das ein wenig weiter.

MfG

Peter


s5t setzt sich aus 4 Werten zusammen

Das ganze steht in einen Wort

Bin : xxxx 3333 2222 1111

xxxx = Faktor 0 = 10 ms 1 = 100 ms 2 = 1s 3 = 10s

3333 3 Stelle vom BCD Code ( 0 - 9 )
2222 2 Stelle vom BCD Code ( 0 - 9 )
1111 1 Stelle vom BCD Code ( 0 - 9 )

das heist wenn du

Bin 0010 0000 0011 0111

x = 2
3 = 0
2 = 3
1 = 7

würde das bedeuten Zahlen wert 37 * Faktor von 1 sek = 37 sekunden

Bsp. 1:
L EW 0
L KH 0FFF <- vierte Tetrade ausblenden
UW
L KH 2000 <- Ziffer 2 speichern (2 = Sekunden)
OW
T MW10

Bsp. 2:
L 120
ITB
L W#16#2000
OW
T MW10

0000hex wären 10ms
1000hex wären 100ms
2000hex wären 1s
3000hex wären 10s
_________________
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde das wie folgt lösen alles in Real

DB anlegen mit ein paar Real Zahlen

AUF DB 110 //Rechen DB

L DBD 0 //Drehzahl
L 6.000000e+001
/R
T DBD 4 // Zwischenwert Drehzahl

L DBD 8 // Durchmesser
L DBD 4 // Zwischenwert Drehzahl
*R
T DBD 12 // Zwischenwert Durchmesser mal Zwischnwert Drehzahl


L DBD 16 // Weg
L DBD 12 // Zwischenwert Durchmesser mal Zwischnwert Drehzahl
/R
T DBD 20 // Ergebnis Zeit in Real



L DBD 20 // Ergebnis Zeit in Real
TRUNC
DTB
T DBD 24 // Zeit umgewandelt


U E 1.0
U E 1.1
L DBW 26 // Zeit
SE T 100


U T 100
= A 1.0

Das sollte eigentlich so funktionieren

mfg

Andy
 
@puehri
Also eigentlich bin ich nicht der Meinung das das so funktionieren würde.
Schon alleine deshalb weil du die Zeitbasis vollkommen unberücksichtigt lässt.
Was heißt das du in obigem Fall mit den Werten den Timer mit exakt 10ms startest.

Hier ein Vorschlag von mir:
Das die Berechnung des Wertes steht, das setze ich jetzt einfach mal vorraus.
Der Wert, in obigem Fall 1,448 Sekunden? steht im MD0, im MW10 steht der berechnete Zeitwert.

Code:
L MD0
L 1000.0
*R
RND
T MD4  //Zeitwert in MS (Format: TIME)

CALL FC40 //Aus Standartbiblio - IEC Function Blocks
IN: MD4
RET_VAL: MW10  //Zeitwert von TIME umgewandelt auf S5TIME

U Bedingungen_fuer_Timer
L MW10
SE T0
 
Zuletzt bearbeitet:
Ton

versuche in Step7 eine Formel einzugeben um einen variablen Zeitwert zu erhalten, den ich dann für einen Timer (SE) benutzen will. Aber leider funktioniert das nicht so wie ich mir das denke. Ich komme da mit Real und Int irgendwie durcheinander.
Hallo,
warum nicht gleich mit IEC-Timer (siehe TON), muß doch nicht SE sein,
oder ist das wieder so eine gescheite Übungsaufgabe?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

@puehri
Irgendwie vermisse ich das PI in deiner Rechnung?

Wenn man bei einem Ergebnis von 1,448 den Befehl TRUNC verwendet,
wird daraus 1. Somit ergeben sich viel zu große Ungenauigkeiten.
Wenn man für die S5-Timer den Sekunden - Wert mit 100 multipliziert, erhält man die kleinste Zeitbasis ( 1/100sec) und braucht dann nur den Integer
zu BCD konvertieren.

Ich würde aber eher auch mit 1000 multiplizieren (ms) und dann wie MSB
mit der Funktion umrechnen, oder lieber gleich einen TON - Timer nehmen.



Code:
// T = S / (d * Pi * (U / 60)) 
// T = S * 60 / (d * Pi * U)
// T[max] = 9,99s !

      L     1700                        // S= 1700mm
      L     60                            
      *D                                 // DINT!
      DTR   
      L     8.300000e+000            // d=8.3mm
      /R    
      L     3.140000e+000           // pi
      /R    
      L     2.700000e+003          // 2700U
      /R    
      L     1.000000e+002         //Faktor 100 für Hundertstel sek.
      *R                                // dann ist Zeitbasis 0000
      RND                              // runden -> Integer
      ITB                               // Integer -> BCD
      T     MW    10                // Zeitwert

// Testen Zeit

      UN    T     20
      L     MW   10
      SE    T     20
mfg.
Rolf
 
Zuletzt bearbeitet:
antwort

also vielen dank an alle,

habe Rolfs Vorschlag ausprobiert und es hat alles super funktioniert.
Ich hatte nur das Problem das ich nicht wuste, dass REAL-Typen als Gleitzahl betrachte werden müssen, so konnte ich mit dem ganzem Unfug den ich da abgelesen habe überhaupt nichts anfangen. Aber kaum macht man es richtig, funktioniert es auch schon!
Um es als S5-TIME zu verarbeiten kann man noch bit 12/13 den Zeitfaktor bestimmen. 00= 0,01s; 10= 0,1s; 01= 1s; 11= 10s

Ähhhhhhh "TON Zeit" ??????????? was und wie
 
TON ist ein sogenannter IEC Timer. Den gibt es als Standartbaustein in der Library. Ich gaube SFB4 heißt er da.
Wenn du in einer CPU z.B. keine Timer mehr frei hast, oder willst keine Timer einsetzen, oder sowas, kannst du diesen Baustein verwenden.

Im Prinzip machst du nur:

SPA (SPB) SFB4

Dann erscheint:

IN - Starteingang
PT - Zeitdauer, um die die steigende Flanke am Eingang IN verzögert wird. PT muß positiv sein. ( Hinweis: Der Wertebereich ist durch den Datentyp TIME festgelegt.)
Q - Status der Zeit
ET - abgelaufene Zeit

Fertig. Den gibts auch noch als TOF, dies ist dann der SFB 5.
Geh einfach mal in die SFB Library und schau dir die beiden mal mit F1 an... :)

MfG
Borsti
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jop,

auch mir als quereinsteiger hat dieser Thread sehr gut geholfen. Bei meiner Aufgabe muss ich von einem TP170 Daten in die CPU einlesen und die z.T. als Zeiten im Bereich zwischen 0 und 2000 ms in den Timer einspeisen.

Das mit dem
'
WERT
FAKTOR
RND
ITB
ab in den Timer
'
ist ne einfache und sehr gute Sache.

Mein Lieblingstimer ist übrigens der verlängerte Impuls, auch gut, um nen Überwachungs- zeit- tor zu schalten. Mal schauen, ob es den 'SV' auch als SFC gibt ;)

Wer Bibliotheken nicht findet, wie ich bis heute morgen *rot werd* , klicke einfach auf den Button 'Übersichten Ein/ aus' , oder aktiviere den in den Ansichten. DA sind nämlich auch die vielen ach so tollen Bibliotheken aus der 'F1- Siemens- Verulkungsparty'

Greetz
 
Zurück
Oben