TIA TIA:SCL Bausteine verstehen, Teilweise in FUB umwandeln

Zuviel Werbung?
-> Hier kostenlos registrieren
@wt15309 evtl. bietet dir dieses Dokument Unterstützung dabei, ...
SIMATIC Vergleichsliste
Wow! Danke! Mir hat es Unterstützung geboten. Seite 10:
R_TRIG
Positive Signalflanke erkennen
SCL: Ausprogrammieren mit zwei Anweisungen ist
effektiver:

posFlanke := signal and not laststate;
laststate := signal;
;) Und sinngemäss die gleiche Aussage für F_TRIG.

(Sorry, dies ist kein off topic, sondern lediglich ein Vorgriff auf eines der zukünftigen Themen dieses Threads)
 
Guten Morgen,

@Michitronik
danke für die Liste.

An dieser Stelle möchte ich mich bei Allen bedanken für die Tipps und auch Kritik. Ihr seid Spitze.
leider werde ich noch weitere Fragen stellen müssen 🥺.

Gruß
wt15309
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Leider muss ich wieder nachbohren, da ich unsicher bin. Ausserdem hab ich keine Kollegen die man fragen kann.
Kann ich die umschreibung so machen, oder gibt es einen eleganten Weg.
SCL-Vorlage
IF #Bereich.Betriebsart.HAND THEN
#Peripherie.Sollfrequenz := #Parameter."Sollfrequenz Hand";
ELSE
#Peripherie.Sollfrequenz := #Parameter."Sollfrequenz Auto";
#Parameter."Sollfrequenz Hand" := #Parameter."Sollfrequenz Auto";
END_IF;

1625641158914.png
hier geht mir um das ELSE - wie geht man damit um?

Gruß
wt15309
 
Moin wt15309,

Leider muss ich wieder nachbohren, da ich unsicher bin. Ausserdem hab ich keine Kollegen die man fragen kann.
Kann ich die umschreibung so machen, oder gibt es einen eleganten Weg.
SCL-Vorlage
IF #Bereich.Betriebsart.HAND THEN
#Peripherie.Sollfrequenz := #Parameter."Sollfrequenz Hand";
ELSE
#Peripherie.Sollfrequenz := #Parameter."Sollfrequenz Auto";
#Parameter."Sollfrequenz Hand" := #Parameter."Sollfrequenz Auto";
END_IF;

Anhang anzeigen 55316
hier geht mir um das ELSE - wie geht man damit um?

Gruß
wt15309

Ich bin kein FUP-Freund, sondern arbeite lieber in KOP. Aber Folgendes wäre möglich:


Unbenannt.PNG

In KOP ist es vielleicht einfacher verständlich:

Unbenannt.PNG

macht aber das Selbe.

Hinweise:
- Bitte keine Leer- oder Sonderzeichen für die Variablennamen verwenden (#Parameter."Sollfrequenz HAND").
- noch sauberer wäre es, wenn man #Peripherie.Sollfrequenz nur einmal (in einem weiteren Netzwerk) zuweist und für die Zwischenergebnisse temporäre Variablen nutzt.
- mit Klick auf das gelbe Sternchen im Move-Baustein kannst Du einen weiteren Ausgang hinzufügen.


VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey,
klasse. Vielen Dank.
Jetzt bin ich auf folgende Eionschaltverzögerung gestossen.
#"TON Hochlauf Sequenz"(IN := #"Gestartet Sequenz",
PT := t#1ms + DINT_TO_TIME(REAL_TO_DINT(#Parameter."Hochlaufzeit Sequenz" * REAL#1000.0)));

Hab jetzt folgendes probiert, aber sieht nicht so sonderlich gut aus. Was haltet ihr davon.
1625657405305.png
Die 1 ms spare ich mir, da ich den Sinn dahinter nicht erkenne. Evtl. habt ihr eine Erklärung dazu.

Gruß
wt15309
 
Moin wt15309,

ich denke die 1ms wurde hinzugefügt, da der Timer mit einer Zeit T#0s nicht abläuft. Mit 1ms tut man Niemandem weh und der Timer läuft immer ab.
Warum liegt die Zeitvorgabe in Real vor?

VG

MFreiberger
 
ich denke die 1ms wurde hinzugefügt, da der Timer mit einer Zeit T#0s nicht abläuft. Mit 1ms tut man Niemandem weh und der Timer läuft immer ab.
Das stimmt inzwischen nicht mehr so ganz. Bei der S7-300/400 war das so und wenn man in der S7-1x00 einen Timer in einem nicht Optimierten Baustein liegen hat ist es immer noch so. Wenn aber die Timer-Instanz in einem Optimierten Baustein liegt, läuft der Timer auch mit 0ms (Sofort) ab.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Windoze,

Das stimmt inzwischen nicht mehr so ganz. Bei der S7-300/400 war das so und wenn man in der S7-1x00 einen Timer in einem nicht Optimierten Baustein liegen hat ist es immer noch so. Wenn aber die Timer-Instanz in einem Optimierten Baustein liegt, läuft der Timer auch mit 0ms (Sofort) ab.
Das mag sein. Trotzdem denke ich, das ist der Grund für die eine Millisekunde.

VG

MFreiberger
 
@MFreiberger,
ich meine warum überhaupt eine Zeitangabe? Die Variable alleine tut es doch auch?

zu deiner Frage. Ich hab keine Ahnung - der UDT spuckt es so aus. Wer weiss wie alt der ist.
1625660684002.png
Gruss
wt15309
 
Moin wt15309,

ok. Aber den UDT kann man ja ändern. Ich dachte es hätte berechnungstechnische Gründe.
Die Variable muss vom Typ time sein. Wenn sie als Real vorliegt, muss sie erst umgewandelt werden.
Des Weiteren sollte der UDT sowieso mal bearbeitet werden, um die Leerezeichen zu eliminieren :) .

VG

MFreiberger
 
Nunja, Kunden bdschweren sich da vieles in SCL vorliegt. Zumindest ist dies die Aussage meines Vorgesetzten.
Jetzt soll alles in Fup/Kop umgemünzt werden. Ich weiss es selber nicht ob es wirklich zur Anwendung kommt, aber hier ist der Kunde wirklich König.

Gruß
wt15309
 
Aber für den Einstieg finde ich die Aufgabe gar nicht so verkehrt.
Man sieht einiges was fraglich ist....
Leider fehlt mir jemand Vorort der die Antworten gibt - somit wende ich mich an euch -

Das ist ein Klasse hier.

Gruß
wt15309
 
Noch eine blöde Frage. SCL rechnet Punkt vor Strich, oder?
#AnimLoop := #AnimLoop + #HMI.Frequenz / REAL#50.0 * #Sekunden * REAL#64.0 / REAL#2.0;
Dann sieht das in Fup so aus:
1625667161353.png
oder täusche ich mich?
vg
wt15309
 
Zurück
Oben