Gerüch(t)e und Wahrheit zu SCL

Gerücht oder Wahrheit

Hallo Lipperlandstern,

Lipperlandstern schrieb:
Nun gib doch endlich zu, das Dir ein kleiner Teil der S5-Welt entgangen ist

Wenn mich jemand davon überzeugen kann, gebe ich das gerne zu. Nur die bisherigen Links stammen alle aus Simatic-Katalogen. Und da hat schon manches gestanden, was nie das Siemens Entwicklungslabor verlasssen hat.
Ich habe selber mal recherchiert und nur eine Produktankündigung aus 1996 gefunden. Da wurde ein S5-SCL in Verbindung mit dem S5DOS-MT V6 unter Flexos angekündigt. Hat mich auch noch nicht so richtig überzeugt. Ich hatte gehofft, irgend ein User hier im Forum könnte das mit dem S5-SCL bestätigen oder auch widerlegen. Aber so wichtig ist das nun auch wieder nicht, Schnee von gestern...

Gruß

Question_mark
 

IBN-Service hat ja schon im Beitrag 12 geschrieben das er es selbst verwendet hat!
 

Jemand anderes an einer normalen Anlage hat aber kein SCL.
Umgekehrt wirst du in der Prozesstechnik eher wneiger finden die AWL können.
 
Hallo QM.

Nun gib doch endlich zu, das Dir ein kleiner Teil der S5-Welt entgangen ist.......*ROFL*



Ist doch nicht schlimm.......


Grüsse aus dem Lipperland

Axel


Wer will den schon freiwillig etwas an einer s5 machen?

Ich lang ausser mit Geldmotivationen usw. so etwas altes, vergammeltes, schäbiges, überholtes, stromfressendes, igitigit ned an
 
...
auf die Gefahr hin, Sturm zu ernten
...
nur mal rein wissenschaftlich, ganz ohne Leidenschaft ...



das würde bei mir in AWL so aussehen:
Code:
      ON    #FLANKE
      O     #FL_BIT
      SPB   m001
      L     1
      L     #Z
      +I    
      U     OV
      =     #q
      SPO   m001
      T     #Z
m001: U     #FLANKE
      =     #FL_BIT
 
      UN    #RESET
      SPB   m002
      R     #q                 // EDIT !!!!!!
      L     0
      T     #Z
m002: NOP   0
So, je nachdem, wie man nun den Speicherbedarf ermittelt, komme ich auf große bis kleine Zahlen.

Brutto, das komplette Programm inklusive Aufruf etc. will 428 Bytes Ladespeicher. Arbeitspeicher Code 194 Bytes, Daten 44 Bytes, 238 gesamt.

Netto betrachtet, nur den Code an sich, komme ich auf 68 Bytes Ladespeicher und 62 Bytes Arbeitsspeicher (ich habe den Code im FB dupliziert und den Zuwachs gemessen).

Also, nur rein wissenschaftlich (weil ich nicht über SCL verfüge und es daher nicht selbst prüfen kann): wie hast Du Deine Codegröße gemessen?


EDIT:
habe das Verhalten vom Ausgang #q noch im Code korrigiert - siehe dortiges EDIT - damit wächst der Speicherbedarf nochmals geringfügig - Anhang habe ich unverändert gelassen
 

Anhänge

  • Test-z.zip
    29,8 KB · Aufrufe: 1
Zuletzt bearbeitet:
jetzt hab ich endlich mal ein SCL-Programm in die Finger gekriegt ...

Bei den Schulungsunterlagen http://www.automation.siemens.com/fea/html_00/down_module.htm hab ich den Block C2 "SCL" gefunden - und ein SCL-Beispielprogramm mit Blähungen:
Code:
                   SCL  AWL
Lokaldaten          10    0
MC7                 90   44
Ladespeicher       188  140
Arbeitsspeicher    126   80
Codeverdopplung     72   42

Codeverdopplung: damit habe ich den Zuwachs an Arbeitsspeicherbedarf gemessen, wenn ich den Programmcode im Baustein verdoppelt habe. Fazit: das Beispielprogramm von Siemens ist gegenüber dem von mir entworfenen AWL-Code um Faktor 1,7 länger im Arbeitsspeicher, über die Laufzeiteffizienz möchte ich wegen der Real-Arithmetik schon gar nicht reden.

um den SCL-Code zu optimieren: kann die Variable Ergebnis auch als Integer deklariert werden? Oder ist der Rückgabewert von SQR() grundsätzlich ein Real?
 

Anhänge

  • screen.JPG
    70,7 KB · Aufrufe: 23
  • Scl_st_1.zip
    69,1 KB · Aufrufe: 2
Hallo Perfektionist,
was du da beschreibst ist m.E. das generelle Problem von Compilern. Trotzdem gibt es Aufgabenstellungen (z.B. Schleifen-Bearbeitungen oder komplexere Formeln), wo ich auf einen Code-Zuwachs sch..., da ich durch den Compiler einen eleganteren, besser lesbaren Code erhalte - nicht in AWL aber in der Ausgangssprache ... hier SCL.

Gruß
LL
 
Der Vergleich hinkt. Der SCL-Code in dem Beispiel ist ja auch nicht auf Größe optimiert. Man könnte die Aufgabe sicher auch umständlicher in AWL lösen.
Hier mal eine abgewandelte Version vom SCL Code.
Code:
FUNCTION Quadrat : INT
// Quadriert eine Zahl im Integer-Format wenn der Betrag <= 181 ist
// Rückgabewert ist das Ergebnis des Quadrates oder -1 im Fehlerfall
// Der Rückgabewert ist im Integer Format

VAR_INPUT
  Zahl      :INT;                   //Eingangsvariable definieren
END_VAR

BEGIN
  IF ABS(Zahl) <=181 THEN           //Prüfen ob der Betrag der Zahl <= 181
    Quadrat := Zahl*Zahl;           //Wenn ja, Ergebnis ist Quadrat der Zahl
  ELSE
    Quadrat:= -1;                   //Wenn nein, Ergebnis ist -1
  END_IF;
END_FUNCTION
Das was der Compiler daraus mach ist sich auch noch größer aber ich würde da nicht von einer Aufblähung sprechen. Er fügt die Bie-Bits Behandlung noch hinzu.

@Perfektionist: Dein AWL Code hat übrigens ein anderes Verhalten bei negativen Zahlen als das SCL Beispiel das Dir als Vorlage diente.
 
...
@Perfektionist: Dein AWL Code hat übrigens ein anderes Verhalten bei negativen Zahlen als das SCL Beispiel das Dir als Vorlage diente.
ja, der erste Vergleich hätte natürlich auf -181 lauten müssen
Altes Basic-Leiden - bei SQR denkt der alte Knochen halt reflexartig an einen anderen Wertebereich
 
... und überhaupt: seit wann mach ich mir als AWL-Proggi vor einer Berechnung Gedanken über den Wertebereich?

Code:
FUNCTION "awl-quadrat" : VOID
TITLE =
VERSION : 0.1
 
VAR_INPUT
  I_Wert : INT ; 
END_VAR
VAR_OUTPUT
  Q_Wert : INT ; 
END_VAR
BEGIN
NETWORK
TITLE =
      L     #I_Wert; 
      PUSH  ; 
      *I    ; 
      UN    OV; 
      SPB   m001; 
      L     -1; 
m001: T     #Q_Wert; 
END_FUNCTION

MC7: 24Bytes

ist es in SCL möglich, OV auszuwerten?
 
AWL als Quelle

Hallo ich wollte mal fragen was der Vorteil von AWL als Quelle ist , ist das der Funktionswert. Wie lädt man eigentlich eine Quelle in die CPU oder PLC-Sim.
 
Hallo

Wie sieht es denn aus mit der Debug-Info?
Wenn ein Baustein im SCl erstellt wird, bei dem auf einen DB > ca. 512 Byte zugegriffen wird, keine Debug-Info mehr erstellt werden kann?
Ist doch völliger Schrott.
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…