Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 7 von 7

Thema: Vergleich AWl <--> SCL

  1. #1
    nobug Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Der SCL-Compiler übersetzt ja das Programm nach AWL. Mich würde dabei interessieren, wie "effizient" der Compiler dabei im Vergleich zum "optimalen" AWL-Programm arbeitet.

    Besonders wichtig wäre dabei ein Vergleich im Bezug auf Speicherbedarf und Ausführungsgeschwindigkeit.

    Das ist natürlich auch vom Einzelfall abhängig. Trotzdem sollten allgemeine Aussagen (mit Zahlenwerten) möglich sein.


    Vielen Dank für die Antworten!
    Zitieren Zitieren Gelöst: Vergleich AWl <--> SCL  

  2. "Der Sinn dieser Frage leuchtet mir nicht ein.

    Ein Hochsprachen Compiler liefert im vergleich zum "optimalen" Assembler Code immer etwas, was mehr Resourcen braucht. Das ist mit dem SCL Compiler der AWL Produziert auch nicht anders.

    Die Erkenntnis ist jetzt nichts neues und wenn es Relevant wäre würde man auch im PC Bereich weiterhin Assembler und kein C++/Delphi/VB und Co nutzen.

    Der Performance Vorteil von Assembler wäre ja bei Großen Projekten am größten. Komisch nur das alle Großen Projekte immer Komfortablere Hochsprachen verlangen.

    Mir ist es wichtiger das ich einen Ablauf an der Maschine möglicht leicht beschreiben kann und nicht das irgendeine krüppel CPU das noch mit ach und krach abarbeiten kann."


  3. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.299
    Danke
    545
    Erhielt 2.715 Danke für 1.962 Beiträge

    Standard

    Zahlen wird dir keiner nennen können, der einfachste Weg ist, ein SCL-Programm zu schreiben, dieses zu übersetzen, und dann den FC umzukopieren. Danach kann man sich den Code in "AWL" ansehen, wobei der SCL-Compiler auch ein paar Sonderbefehle kennt. Die Sachen die ich mir bisher angesehen habe, ware nicht so schlecht, wobei man per Hand in AWL fast immer etwas effektiver programmieren kann. Allerdings liegt die Betonung auf "ETWAS"!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #3
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Der Sinn dieser Frage leuchtet mir nicht ein.

    Ein Hochsprachen Compiler liefert im vergleich zum "optimalen" Assembler Code immer etwas, was mehr Resourcen braucht. Das ist mit dem SCL Compiler der AWL Produziert auch nicht anders.

    Die Erkenntnis ist jetzt nichts neues und wenn es Relevant wäre würde man auch im PC Bereich weiterhin Assembler und kein C++/Delphi/VB und Co nutzen.

    Der Performance Vorteil von Assembler wäre ja bei Großen Projekten am größten. Komisch nur das alle Großen Projekte immer Komfortablere Hochsprachen verlangen.

    Mir ist es wichtiger das ich einen Ablauf an der Maschine möglicht leicht beschreiben kann und nicht das irgendeine krüppel CPU das noch mit ach und krach abarbeiten kann.
    If you open your Mind too much, your Brain will fall out.

  5. Folgender Benutzer sagt Danke zu zotos für den nützlichen Beitrag:

    Zefix (17.03.2008)

  6. #4
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    Eine interessante Diskussion findest du hierzu in:

    http://www.automation.siemens.com/WW...e&PostID=63997


    Unter anderem steht hier:
    -------------------------------------------------------------
    Und dann das Märchen von der Laufzeit:
    Man kann SCL natürlich so programmieren, dass es unendlich Laufzeit schluckt. Wenn man zum Beispiel Elemente einer UDT in einem Array von diesen UDT in jeder Zeile immer wieder neu über einen variablen Index adressiert, dann braucht das Laufzeit ohne Ende. Wenn man aber die UDT am Anfang variabel indiziert in eine var_temp kopiert, mit dieser arbeitet und sie am Schluss wieder zurückkopiert, ist das Programm fast weg (verstanden?

    Überhaupt hat die Architektur der Software einen wesentlich größeren Einfluss auf die Laufzeit wie die Programmiersprache. Bei meinem letzten Projekt hatte ich einen 5 ms Takt zu erfüllen. Das klingt jetzt nicht nach schnell, aber die Rechenleistung, die dahinter steckte, war die einer C7-635.

    ---------------------------------------------------------------------

    Wenn dir das nicht genügt, kannst du ja mal ein paar Konstrukte If/then,
    Schleifen, in beiden Sprachen umsetzen.
    Wenn du's dann 1000mal pro Zyklus auffrufst, kannst du den Unterschied womöglich sogar messen.
    Beachte aber dabei auch die Compilereinsellungen von SCL (Debug-Info etc)

    Bericht uns dann, was du herausgefunden hast.
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  7. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.299
    Danke
    545
    Erhielt 2.715 Danke für 1.962 Beiträge

    Standard

    Zitat Zitat von kiestumpe Beitrag anzeigen
    Eine interessante Diskussion findest du hierzu in:

    http://www.automation.siemens.com/WW...e&PostID=63997


    Unter anderem steht hier:
    -------------------------------------------------------------
    Und dann das Märchen von der Laufzeit:
    Man kann SCL natürlich so programmieren, dass es unendlich Laufzeit schluckt. Wenn man zum Beispiel Elemente einer UDT in einem Array von diesen UDT in jeder Zeile immer wieder neu über einen variablen Index adressiert, dann braucht das Laufzeit ohne Ende. Wenn man aber die UDT am Anfang variabel indiziert in eine var_temp kopiert, mit dieser arbeitet und sie am Schluss wieder zurückkopiert, ist das Programm fast weg (verstanden?

    Überhaupt hat die Architektur der Software einen wesentlich größeren Einfluss auf die Laufzeit wie die Programmiersprache. Bei meinem letzten Projekt hatte ich einen 5 ms Takt zu erfüllen. Das klingt jetzt nicht nach schnell, aber die Rechenleistung, die dahinter steckte, war die einer C7-635.

    ---------------------------------------------------------------------

    Wenn dir das nicht genügt, kannst du ja mal ein paar Konstrukte If/then,
    Schleifen, in beiden Sprachen umsetzen.
    Wenn du's dann 1000mal pro Zyklus auffrufst, kannst du den Unterschied womöglich sogar messen.
    Beachte aber dabei auch die Compilereinsellungen von SCL (Debug-Info etc)

    Bericht uns dann, was du herausgefunden hast.
    Tja, so ist das, immer die gleiche Diskussion und alle sind die Helden !
    Aber wie die Siemens-Beitrag auch zeigt, man kann auch mit SCL so richtig schön Scheiße programmieren, deshalb schaden zumindest AWL-Kenntnisse nicht, um zu wissen, wie man SCL dann optimal einsetzen kann, bzw. was man besser nicht machen sollte.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.846
    Danke
    402
    Erhielt 2.429 Danke für 2.025 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    zu wissen, wie man SCL dann optimal einsetzen kann, bzw. was man besser nicht machen sollte.
    Ich glaube, das dieser Passus der springende Punkt bei der Geschichte überhaupt ist.
    Es gibt Aufgaben, die sind mit SCL einfach schöner (eleganter) und vor allem übersichtlicher zu machen. Bei anderen Aufgaben hat man keinen wirklichen Vorteil bzw, Code-technisch (und damit auch Zykluszeit) einen Nachteil.

    Gruß
    LL

  9. #7
    Registriert seit
    29.08.2006
    Beiträge
    195
    Danke
    0
    Erhielt 35 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    nun ich kann hier nicht für siemens sprechen kenne ich nicht, aber unter codesys ist es definitiv anders:

    st (so heist dort scl) wird nicht in awl übersetzt, sondern in einem zwischencode, in den auch awl übersetzt wird.
    beide awl und st haben den gleichen zwischencode.

    aus diesem grund sind komplexere structuren wie z.b. eine for schleife in st schneller als in awl, den um z.b. eine variable zu incrementieren muss sie in den accu usw. usw.
    der compiler übersetzt den awl und den st code und ist bei komplexeren strukturen sogar schneller als in awl wo es diese strukturen nicht gibt
    ein trugschluß ist zu glauben das awl maschinencode (assembler) wäre das ist weit gefehlt und wird genauso übersetzt.

    codesys bietet einen button der st in awl übersetzt und ich muss feststellen das ich es kaum effizienter schaffen würde.

    habe ein paar codestücke von st in awl übersetzt und dann per hand optimiert, in den meisten fällen lief der st code ein bisschen schneller als der von hand optimierte awl code.

    wie gesagt das ganze gilt aber für codesys und ich kann nichts zu siemens sagen

Ähnliche Themen

  1. Pointer Vergleich AWL -> SCL??
    Von Carsten77 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 16.08.2011, 14:21
  2. Bausteine Vergleich
    Von datasys im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 03.01.2011, 15:05
  3. Bausteine Vergleich
    Von kfz im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.07.2010, 15:49
  4. vergleich mit sprung?
    Von Ibaxx im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.09.2007, 09:50
  5. Vergleich auf Char
    Von lord.paddington im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 01.05.2006, 17:30

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •