Step 7 SCL lernen und verstehen

Kehrer

Level-2
Beiträge
380
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich versuche gerade bei S7 V5.6 SCL zu lernen.
Fragen:
1.Warum kann ich keinen FB mit SCL erstellen im Projekt (Bild1)
2. Würde es nicht auch reichen bei //Freigabe erstellen unter 2
Code:
IF ("TasterFreigabeErteilt") THEN 
"FreigabeMerker" :=true
zu schreiben? Muss hier tatsächlich beides genannt werden? (Bild2)
 

Anhänge

  • IMG_20210626_141744.jpg
    IMG_20210626_141744.jpg
    138,7 KB · Aufrufe: 73
  • ScreenHunter_08.jpg
    ScreenHunter_08.jpg
    20,2 KB · Aufrufe: 70
... S7 V5.6 SCL ...
Fragen:
1.Warum kann ich keinen FB mit SCL erstellen im Projekt (Bild1)
SCL ist bei Classic IMHO 'ne separate Lizenz und Installation.
Hast Du beides?

2. Muss hier tatsächlich beides genannt werden? (Bild2)
Hängt eher von Deinem restlichen Programm (z.B. Interrupts u.ä.) ab, ob Du es Dir leisten kannst, dass der "FreigabeMerker" ggf. für ein Netzwerk lang auf TRUE ist.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
In Step7 Classic legt man eine SCL Quelle an. Wenn die SCL Quelle ohne Fehler kompiliert wurde, dann wird automatisch der FC / FB erstellt. Der DB zum FB wird erstellt, sobald der FB irgendwo aufgerufen wird.
 
Einfach mal eine Quelle anlegen ( der Ordner über dem Ordner Bausteine im Simatic Manager ), dann die Quelle öffnen und dann am einfachsten eine Bausteinvorlage einfügen ( dafür gibt es ein Befehl oben in der Menüleiste )
 
Mein Tipp: Classic nicht benutzen um SCL zu lernen. Das erzeugt nur Frust. Der Status von SLC unter Classic ist "Es geht irgendwie", aber kein bisschen mehr...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein Tipp: Classic nicht benutzen um SCL zu lernen. Das erzeugt nur Frust. Der Status von SLC unter Classic ist "Es geht irgendwie", aber kein bisschen mehr...
Würde ich nicht so sagen, ich arbeite seit 10 Jahren mit SCL und bin in Classic zufrieden. Klar gibt es in TIA diverse
Komfortfunktionen aber hier stören mich diese ständigen Gedenksekunden...

"Es geht irgendwie", aber kein bisschen mehr...
Ich finde es geht wunderbar ( bis auf Bausteinvergleich )
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zurück zur 2. Frage:

Kann ich da nicht auch einfach schreiben:
Code:
Freigabemerker := TasterFreigabeErteilt
brauch ich dafür die IF abfrage?
Das wären zwei unterschiedliche Funktionen:

Hier wird der Freigabemerker gemeinsam mit den TasterFreigabeErteils TRUE und auch wieder FALSE
Code:
Freigabemerker := TasterFreigabeErteilt;

Bei der Programmierung wird der Freigabemerker mit dem TasterFreigabeErteilt TRUE aber nicht mehr FALSE
Code:
IF "TasterFreigabeErteilt" THEN
    "FreigabeMerker" := TRUE;
END_IF;
 
Diese Funktion
Code:
Freigabemerker := TasterFreigabeErteilt

würde in einem IF Konstrukt so aussehen ( was so natürlich keinen Sinn macht da ein Einzeiler reicht ):
Code:
IF "TasterFreigabeErteilt" THEN
    "FreigabeMerker" := TRUE;
    ELSE
    "FreigabeMerker" := FALSE;
END_IF;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab mich schon oft gefragt warum es in SCL nicht sowas wie eine „setzende“ Zuweisung gibt. Gibts das in anderen Programmiersprachen?
Also zB Tag_1 S= Tag_2 statt dem IF-3-Zeiler.
 
Ich hab mich schon oft gefragt warum es in SCL nicht sowas wie eine „setzende“ Zuweisung gibt. Gibts das in anderen Programmiersprachen?
Also zB Tag_1 S= Tag_2 statt dem IF-3-Zeiler.
Wahrscheinlich wären die ganzen IT->SPS-Quereinsteiger damit überfordert o_O

In ganz vielen SCL-Bausteinen ist
Code:
A := B and C;
extrem selten bis gar nicht vorhanden.
Standard ist halt
Code:
If B and C Then
  A := True;
Else
  A := False;
End_If

Seit die Gemischtprogrammierung möglich ist, sind bei mir reine SCL-Bausteine selten geworden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
If B and C Then
  A := True;
Else
  A := False;
End_If

Seit die Gemischtprogrammierung möglich ist, sind bei mir reine SCL-Bausteine selten geworden.
Ja, solche Konstrukte sieht man tatsächlich sehr häufig. Gerade SCL Anfänger schreiben in der Form ( weil sie es halt nicht
besser wissen ). Daher versuche ich auch SCL Einsteigern dies gleich abzugewöhnen.

Was man auch sehr häufig sieht:
Code:
IF Eingang1 = TRUE AND Eingang2 = TRUE AND Eingang3 = FALSE THEN...
 
Ich hab mich schon oft gefragt warum es in SCL nicht sowas wie eine „setzende“ Zuweisung gibt. Gibts das in anderen Programmiersprachen?
Also zB Tag_1 S= Tag_2 statt dem IF-3-Zeiler.
Gibt es doch als 1-Zeiler:
A := A OR B ;

Zugabe:
Rücksetzen als 1-Zeiler:
A := A AND NOT B ;

Anmerkung: Kann man sinngemäss auch so in AWL programmieren, aber dort sind es dann 3-Zeiler.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es doch als 1-Zeiler:
A := A OR B ;

Zugabe:
Rücksetzen als 1-Zeiler:
A := A AND NOT B ;

Anmerkung: Kann man sinngemäss auch so in AWL programmieren, aber dort sind es dann 3-Zeiler.
da find ichs halt in AWL verständlicher:

Code:
U B
S A

UN B
R A

so doof ist AWL nicht :cool: ;)
 
Zurück
Oben