AWL gegen SCL

thomasgull

Level-2
Beiträge
166
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe mal eine grundsätzliche Frage zu SCL

Bei uns wird fast ausschliesslich in AWL programmiert, jedoch haben wir einige komplex Anwendungen von Mathematischen berechnungen, Datenhandling.
Nun wird von Oben behauptet dass SCL wesentlich grössere Bausteine erzeugt und die Zykluszeit verlängere.
Der Code ist ja in SCL wesentlich einfacher zu realisieren. also nehme ich an dass der Code kürzer werden sollte.

Was sind nachteile von SCL?

grüsse und danke für Infos

Thomas
 
Nun wird von Oben behauptet dass SCL wesentlich grössere Bausteine erzeugt und die Zykluszeit verlängere.

Das ist in den meisten Fällen wohl leider so.

Der SCL-Übersetzer macht nichts anderes, als aus dem SCL-Code AWL-Code zu machen. Den kannst Du Dir danach ja auch ansehen.

Dieser Code ist meistens länger und komplizierter aufgebaut, als man denken möchte. Und vor allem unlesbar.

Siemens gibt nicht umsonst ein paar Tips und Regeln an, die bei der SCL Programmierung beachtet werden sollten, damit ein kurzer, schneller AWL Code erzeugt wird.

Fragt sich halt, ob nachher ein paar Byte mehr Code und ein paar mikrosekunden mehr Laufzeit in Verhältnis zu stundenlanger Mehr-Programmierarbeit (und damit auch Mehrkosten) stehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,
also erstmal vorab : ich bin großer SCL-Fan ...

SCL-Code ist nicht grundsätzlich größer als AWL-Code - kann aber so werden ...

SCL-Code ist bei Schleifen-Programmierung, ARRAY-Zugriffen oder komplexen Berechnungen einfach schneller zu erstellen (und er funktioniert dann auch gleich).

Ob und wie sich deine Zykluszeit manifestiert liegt nicht nur an einem (oder mehreren) SCL-Baustein. Wenn du das Gleiche in AWL nachproggst, was dir dein SCL-Compiler zusammengebastelt hat, dann braucht das auch seine Zeit. Allerdings ... wenn du viel und gerne mit STRUCT's im SCL arbeitest, dann besteht dein compilierter AWL-Code in der Hauptsache aus Pointer-Erstellungen (die dann natürlich seine Zeit brauchen). Da hat Siemens keine intelligente Methode gefunden, die mit einem Basis- Pointer und einem Offset-Pointer arbeitet.

Ist es dir übrigens wichtig, dass dein Code kürzer wird oder möchtest du nicht in Wirklichkeit übersichtlichere Bausteine.

Gruß
LL
 
Danke für die Infos.
@Grubba: hast du gerade die Links zu den Tipps von Siemens?

Klar 1. ist die Zuverlässigkeit und übersichtlichkeit dess Programms, anderseits durch SCL bausteine soll ja auch nicht die Zykluszeit unverhältnissmässig ansteigen.
Also ist es so dass Pointeranweisungen eher das Problem bilden als Mathematische Opperationen?

Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... die Operationen sind m.E. überhaupt nicht das Problem. Es sind immer die Variablen-Zugriffe. Sind alle deine Variablen "konventionell" angelegt (also nicht in einer Struktur oder eibnem ARRAY verschaltet) dann wird dein SCL-Code sehr wahrscheinlich gleich groß dem entsprechenden Hand-erstellten AWL-Code werden.
 
Ich sehe es in etwas wie Larry. AWL-code ist nur dann besser, wenn man ihn wirklich konsquent auf kurze Laufzeit "trimmt". Manchmal ist der SCL-Compiler ein wenig konservativ und setzt Schleifen nicht unbedingt optimal um, aber das hält sich sehr in Grenzen. Die heutigen SPS sind ja schon sehr viel schneller geworden, so daß eigentlich nicht sehr Große Unterschiede für die Zykluszeit zu erwarten sind. Ich pack SCL auch nur aus, wenn es um größere Sachen geht. Was ich mal in AWL fertig habe, bau ich auch nicht mehr extra um, z.Bsp. meine "SPS-interne Rezept-Datenbank".
 
OK will ich auch nicht,
ich sollte nur ein Förderstromregler einbauen und muss dabei viele Gepäckmengen mit verschiedenen Operationen entsprechend verrechnen.

Die Formeln sind in SCL übersichtlicher und einfacher zu handeln als AWL.

Der rest soll bleiben.

Aber die Chefetage hat bedenken und ich muss stellung nehmen.

Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn deine Zykluszeit durch SCL doch zu lang werden sollte, ist es fast immer günstiger eine grössere CPU einzubauen, als wenn du die Zeit rechnest die du länger zum programmieren, testen und Fehler suchen brauchst. Also ich würde bei vielen Berechnungen die SCL-Variante bevorzugen. Und wenn du nicht 100%ig fit in AWL bist werden deine Programme auch nicht kürzer und schneller als in SCL
 
Wer nicht zwanghaft Siemens braucht, der nehme VIPA-Speed7.

Damit habe ich bei drei identischen Anlagen drei Probleme auf Schlag gelöst bekommen:

Die Zykluszeit sank von über 30 Millisekunden auf 2 bis 3 ms.
Der Speicher hat sich vervierfacht, von einer 315-2DP.
Das Teil kostet fast nur ein drittel der Kombination 315-2DP und CP343.

Jetzt programmiere ich wenn möglich in Graph und SCL.
Luxus pur, wobei SCL nur wo's sinnig ist. Alle einfachen Funktionen
Instandhaltergerecht in KOP.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich finde in der Regelungstechnik das SCL sehr genial.
Überall wo kein PCS7 zum Einsatz kommt.

In der Antriebs- oder Fördertechnik und im Anlagebau hingegen AWL und Graph.

SCL lehnt sich halt etwas an Pascal.
Hier kann halt jemand mit viel technischer Erfahrung aber ohne große Kentniss in der Elektrotechnik ergebnisse erzielen.

AWL geht halt nahe an die Programmierebene. Jemand mit Assemblerkentnissen tud sich hier leicht. Es wird direkt der CPU mitgeteilt was diese zu tun hat.
 
Wer nicht zwanghaft Siemens braucht, der nehme VIPA-Speed7.

Damit habe ich bei drei identischen Anlagen drei Probleme auf Schlag gelöst bekommen:

Die Zykluszeit sank von über 30 Millisekunden auf 2 bis 3 ms.
Der Speicher hat sich vervierfacht, von einer 315-2DP.
Das Teil kostet fast nur ein drittel der Kombination 315-2DP und CP343.

Jetzt programmiere ich wenn möglich in Graph und SCL.
Luxus pur, wobei SCL nur wo's sinnig ist. Alle einfachen Funktionen
Instandhaltergerecht in KOP.

Hm,

Die Vipa war bei mir langsamer als die 314-2DP.
Riesen AWL Code, Siemens 5-7ms // Vipa 14-15 ms.

Glaube ist manchmal etwas Äpfel mit Birnen vergleichen.

Kop sehe ich nur noch in Modicon, Glöckner Möller und Schneider CPU`s
 
Arrrggghh

Hallo,

maxi schrieb:
AWL geht halt nahe an die Programmierebene.

Ich kann Dir gerne noch einiges benennen, was nahe der Programmierebenen ist :

AWL
KOP
FUP
SCL
CFC
Pascal
ANSI-C
C++
C#
PHP
ASM und das nur mal so als einige Beispiele für vieles anderes.


maxi schrieb:
Jemand mit Assemblerkentnissen tud sich hier leicht. Es wird direkt der CPU mitgeteilt was diese zu tun hat.

Ich nehme mal an, da wir hier im SPS-Forum sind, dass Du mit der "CPU" eine SPS-CPU meinst...
Ich frage mich nur, in welchem Film Du heute wieder gewesen bist :ROFLMAO:

Gruß

Question_mark
 
AWL geht halt nahe an die Programmierebene. Jemand mit Assemblerkentnissen tud sich hier leicht. Es wird direkt der CPU mitgeteilt was diese zu tun hat.

Da meint Maxi dann wohl mit, dass AWL eher in Richtung Maschinensprache (auch Maschinencode) geht.
Daher: bei Maxi nicht immer alles wörtlich nehmen, QM ;).

Gruß
Flinn
 
Zuviel Werbung?
-> Hier kostenlos registrieren
SCL Compiler wurde immer besser

Hallo,

ich programmiere seit 20 Jahren SPSen. Die blaue B&R habe ich in Ansi-C programmiert und die S7 mit SCL.

Der Grund : Ich brauche in der SPS sehr viel Mathematik, und habe einige Fuzzy-REgler und PID Regler selbst geschrieben. Und das alles in AWL zu schreiben ist total unübersichtlich und bringt nur unnötige Fehlerquellen.

Vor 6 Jahren war der AWL Ausgangs Code vom SCL Kompiler manchmal sehr merkwürdig. Aber seit der V5.3 mit SP4 vom SCL Kompiler (habe ich seit 6 Montaten im Einsatz) wurde der AWL Code um einiges kleiner (ca. 30%) und übersichtlicher.

Wir haben jetzt statt S7-414 oder 416 die S7-319 im Einsatz. Die ist billiger und was die Zykluszeit angeht um das 3-6 fache schneller als alle S7-400er.

Daher ist mir das egal, wenn der AWL Code vom SCL Kompiler etwas länger ist als reiner AWL Code.

Bei den kleinen Maschinen mit einer fixen S7-313C schreibe ich natürlich auch alles in AWL. Aber dort laufen nur 1 oder 2 Temperaturregler mit Puls/Pausenverhältnis.

Mein Fazit ist:
AWL - für kleine Anwendungen OK.
SCL - für große Anwendugen mit viel Mathematik viel übersichtlicher.

PS: Ich programmiere SCL mit S7 absichtlich nicht mit den Siemens Features (z.B. die AT funktion), sondern wie die IEC 61131 Norm (ST) dies vorschreibt. Somit kann ich diesen SCL Code mit kleinen Anpassungen sehr schnell auf anderen SPSen portieren, die ST nach IEC 61131 können. Und das sind heutzutage fast alles Hersteller.
 
PS: Ich programmiere SCL mit S7 absichtlich nicht mit den Siemens Features (z.B. die AT funktion), sondern wie die IEC 61131 Norm (ST) dies vorschreibt. Somit kann ich diesen SCL Code mit kleinen Anpassungen sehr schnell auf anderen SPSen portieren, die ST nach IEC 61131 können. Und das sind heutzutage fast alles Hersteller.

Dieses AT braucht man doch auch nur bei S7, weil nur S7 unter dem Pseudo-IEC eigentlich S5-Code strickt, oder sehe ich das falsch?
 
Zurück
Oben