Gerüch(t)e und Wahrheit zu SCL

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Quod esset demonstrandum ...

Und die Erwähnung im Handbuch sehe ich nicht als Beweis.

Gruß

Question_mark

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
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Lipperlandstern,



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! ;)
 
Und nun auch noch mein Beitrag dazu ... tut mir leid.
Ich programmiere Anlagen ... und bei keiner von den neuen, die ich bei uns im Hause gemacht habe, möchte ich SCL missen müssen. Ich gebe allerdings zu, das ich meine Schrittketten (noch) nicht in SCL schreibe ... kommt aber vielleicht auch noch.
Mir ist es dabei schnurzegal, ob der Code etwas länger oder kürzer ausfällt ... die Durchschaubarkeit ist entscheidend. Schon eine einfache Berechnungsformel sieht in SCL entscheidend schöner aus als in AWL. Und sogar meine Elektriker können sie lesen, auch wenn sie nicht selber SCL programmieren können ...

Gruß
LL

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 ...

...
Gerücht Nr.1: SCL verursacht Blähungen ;).
Bzw. ist Ressourcen verbrauchend und kostet viel Speicherplatz.
Wer sich die Mühe machen will, kann den SCL-Zähler unter:
http://www.sps-forum.de/showthread.php?t=18651&page=3
gern mal anders implementieren, wer bei gleicher Funktionalität den Speicherbedarf signifikant erniedrigt, darf das Gerücht gerne behaupten..
...

...
Code:
    q := FALSE;
    IF Z < 32767 THEN
        IF FLANKE AND NOT FL_BIT THEN
            Z:=Z+1;
        END_IF;
    ELSE
        q := TRUE;
   END_IF;
    IF RESET THEN
        Z := 0;
    END_IF;
    FL_BIT := FLANKE;
 
  FC192 := q;

Größe: 146 Bytes

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
    screen.JPG
    70,7 KB · Aufrufe: 23
  • Scl_st_1.zip
    69,1 KB · Aufrufe: 2
Zuviel Werbung?
-> Hier kostenlos registrieren
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 ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... 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 :cool:

ist es in SCL möglich, OV auszuwerten?
 
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.
 
Zurück
Oben