SCL oder AWL

evolem

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

mich interessiert eure Meinung, wann es sinnvoll wäre SCL einzusetzen. Bei der folgenden Aufgabe stellten wir fest (http://www.sps-forum.de/programmierstrategien/69608-ablaufkette-und-schiebefunktion.html), das die Lösung fehlerhaft bzw nicht vollständig ist.
Da sich die Codes in den Lösungen in den Netzwerken nahezu wiederholen, dachte ich an etwas abgespecktes und das es auch eine schöne Aufgabe ist um SCL zu lernen.

Hier meine Lösung:

Code:
FUNCTION_BLOCK FB101

VAR
    b : INT := 1;
    a : WORD;
END_VAR
    
VAR_INPUT
    //Eingangsparameter
    IN:WORD;
    STOP : BOOL;

END_VAR

VAR_OUTPUT
    //Ausgangsparameter
    OUT : WORD;
END_VAR

    // Anweisungsteil
    // Berechnet IN mit b. 
    // Beispiel: 0000 1000 UND 0000 1000 = 0000 1000 --> Ausgang soll nach der IF-Anweisung geschaltet werden
    // Beispiel: 0000 1000 UND 0000 0111 = 0000 0000 --> Ausgang soll nach der IF-Anweisung nicht geschaltet werden
    // Das Ergebnis wird für die IF Anweisung gebraucht um so festzustellen, das in der richtigen Reihenfolge geschaltet wird
    
    a := IN AND INT_TO_WORD(b);  
       
    IF INT_TO_WORD(b) = a THEN      
        OUT := IN OR OUT;
        b := WORD_TO_INT(SHL (IN := INT_TO_WORD(b), N := 1));
    END_IF;

    IF STOP THEN
        OUT := 0;
        b := 1;
    END_IF;
    
END_FUNCTION_BLOCK

Kritik und Anregungen, wie man es besser machen könnte, ist erwünscht. Macht hier ein SCL-Code Sinn oder kann man es mit AWL eleganter lösen?

Viele grüße Evo
 
mich interessiert eure Meinung, wann es sinnvoll wäre SCL einzusetzen.

Wenn Der Kunde SCL fordert, nimmst Du SCL. Wenn der Kunde AWL fordert, nimmst AWL. Wenn der Kunde FUP fordert, nimmst Du FUP. usw.

Wenn der Kunde nichts fordert, nimmst Du dass, was Du am besten kannst.

Jemand, der AWL gelernt hat, wird sicherlich bei AWL bleiben. Jemand der neu anfängt, und schon mal früher etwas mit Basic oder C oder Pascal oder sonstwas zu tun hatte, wird mit SCL besser klarkommen.

Macht hier ein SCL-Code Sinn oder kann man es mit AWL eleganter lösen?

Das hat nichts mit der Sprache zu tun. Mann kann in beiden Sprachen "elegant" programmieren.

Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kritik und Anregungen, wie man es besser machen könnte, ist erwünscht.

Was soll der FB denn machen? Dann könnte man auch schauen, ob es richtig programmiert ist. Für mich macht das ganze momentan wenig Sinn...

Das Du Out nicht in jedem Aufruf zuweist ist unschön, erstrecht, da Du bei der Deklaration von OUT keinen Wert zugewiesen hast.

Gruß.
 
Hallo,
ich würde Ducati nicht in Allem vorbehaltlos zustimmen.
Es gibt so ein paar Dinge, die würde ich ohne SCL nicht mehr machen wollen. Dazu gehören Funktionen, die Schleifen (im weiteren Sinne) beinhalten bzw. Berechnungen.
Bei Schrittketten (z.B.) könnte man sich drüber streiten - das liegt im Auge des Betrachters.
In beiden Fällen gilt aber : Man kann sich auch Einen zusammenprorammieren (so von hinten durch die Brust ins Auge) - das sollte immer vermieden werden ...

Gruß
Larry
 
Man nehme die Erstellsprache die gefordert wird. :ROFLMAO:
Denn der Kunde hat seine Forderungen und Spezifikationen und daran muss man sich halten.
Berechnungen in KOP oder FUP schauen scheiße aus, funktionieren aber auch.(Denn bei Ladder gibt es nur KOP.)
Ich denke man sehr wohl sowohl in AWL als auch SCL gut Schleifen oder Berechnungen programmieren.
In SCL geht es leichter (wenn man SCL kann).
Ein Kollege von mir macht es in AWL ebenso schnell.


bike
 
Ich habe bereits Erfahrungen mit c, basic uvm. Nichtsdestotrotz habe ich die Aufgabe auch mit AWL programmiert. Ist etwas mühseliger aber ich habs auch abgespeckt geschafft :razz:

Was soll der FB denn machen?

Mit SCL wollte ich diese Aufgabe lösen: http://www.kleissler-online.de/PDF/Schrittkette.pdf

Das Du Out nicht in jedem Aufruf zuweist ist unschön, erstrecht, da Du bei der Deklaration von OUT keinen Wert zugewiesen hast.

Kann dir da nicht ganz folgen. Muss ich bei der Deklaration zwangsmäßig den Wert 0 zuweisen als Anfangswert? ist es nicht automatisch ohnehin schon 0? OUT soll auch nur gesetzt werden, wenn der Eingang in der richtigen Reihenfolge gesetzt wurde.


SCL+FUP oder AWL+FUP usw. aber ungern AWL+SCL ...
Gruß.

Wie ist das gemeint? kann man in SCL auch auf FUP umschalten? Oder meintest du innerhalb eines Bausteins? ich glaube du meinst letzteres
 
Kann dir da nicht ganz folgen. Muss ich bei der Deklaration zwangsmäßig den Wert 0 zuweisen als Anfangswert? ist es nicht automatisch ohnehin schon 0? OUT soll auch nur gesetzt werden, wenn der Eingang in der richtigen Reihenfolge gesetzt wurde.

Ich sag ja auch nicht, dass es u.U. nicht auch funktioniert, es ist nur unschön.


Wie ist das gemeint? kann man in SCL auch auf FUP umschalten? Oder meintest du innerhalb eines Bausteins? ich glaube du meinst letzteres

Nein innerhalb einer SPS, des gesamten Programms, finde ich 2 Sprachen OK, mehr unschön.

Gruß.
 
Nein innerhalb einer SPS, des gesamten Programms, finde ich 2 Sprachen OK, mehr unschön.

Wobei IMHO FUP und AWL dieselben Sprachen nur anders dargestellt sind.

AWL und SCL sind hingegen völlig unterschiedlich auch wenn SCL später nach AWL kompiliert wird.

Ich meine es gibt diverse Aufgaben die mit SCL wesentlich übersichtlicher und verständlicher zu lösen sind als AWL. Und auch umgekehrt. Da wäre es doch blödsinnig aus Prinzip auf eine der beiden Sprachen in einem Projekt zu verzichten.

mfg René
 
Das Geheimnis um die Programmiersprachen ist doch mittlerweile geklärt.
Ich weiß nicht ob das hier bereits diskutiert wurde. Aber zur Sicherheit schreib ich es noch mal.

Es gab Leute, für die waren einige Programmiersprachen wichtiger als andere.
Man konnte 3 Gruppen ausmachen.
Der S5-Programmierer favorisierten AWL.
Die Codesys-Programmierer favorisierten ST und
einige andere (Rockwell, Mitsubishi-Japan, Omron,..) favorisierten KOP.

Wie konnte es zu solch unterschiedlichen Erkenntnissen kommen?
Waren die Rockwell-Programmierer alle doof?
(KOP ist was für Doofe sagte der S5-Programmierer)

NEIN, es gab bei einigen Steurungen ganz bestimmte Sachen, die man nur in einer einzigen Programmiersprache machen konnte. Bei der S5 war das halt AWL, bei Codesys ST und bei Omron KOP,...
Sind die Progammierer einmal an so einem Punkt angekommen, so haben sie alles in dieser Sprache weiterprogrammiert, und die anderen nicht mehr benutzt.
 
So würde ich das nicht stehen lassen.
Ich komme aus der S5 Welt und nehme für jede Anwendung die Sprache? die es für die / den Kunden einfach macht.
Und kann man Fanuc in ST programmieren?
Oft ist man zu einer bestimmten Art der Programmierung gezwungen.
Also solche Grundsatzdiskussionen sind fast ein Glaubenskrieg.

Sind das wirklich Programmiersprachen oder nur verschiedene Darstellungsarten, ist die nächste Frage.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In Beitrag #5 hast du noch behauptet, du nimmst die Sprache, die der Kunde fordert.
Ich gehe denn davon aus, dass du auch die Steuerung nimmst, die der Kunde fordert?
Und da wird es ja wohl keinen Kunden geben, der fordert eine Fanuc zu nehmen und sie in ST zu programmieren!
Oder ich will es noch drastischer ausdrücken,
wenn man die SPS-Hersteller mit Restaurants vergleicht, und die Programmiersprachen wären die Gerichte,
würdest du versuchen Schweinshaxe in einer Dönerbude zu essen?

Ich würde eher die Aussage, dass man Schleifen nur in SCL oder AWL programmieren kann, nicht so stehen lassen!
Ich mache dir die schönsten Schleifen auf der OMRON in KOP.

Gut finde ich, dass, ich nehme mal an, wenn der Kunde keine Programmiersprache vorgibt, du mehrere verschiedene Programmiersprachen in einem Projekt einsetzt. Oder habe ich das falsch verstanden?
 
In Beitrag #5 hast du noch behauptet, du nimmst die Sprache, die der Kunde fordert.
Ich gehe denn davon aus, dass du auch die Steuerung nimmst, die der Kunde fordert?
Und da wird es ja wohl keinen Kunden geben, der fordert eine Fanuc zu nehmen und sie in ST zu programmieren!
Oder ich will es noch drastischer ausdrücken,
wenn man die SPS-Hersteller mit Restaurants vergleicht, und die Programmiersprachen wären die Gerichte,
würdest du versuchen Schweinshaxe in einer Dönerbude zu essen?

Ich würde eher die Aussage, dass man Schleifen nur in SCL oder AWL programmieren kann, nicht so stehen lassen!
Ich mache dir die schönsten Schleifen auf der OMRON in KOP.

Gut finde ich, dass, ich nehme mal an, wenn der Kunde keine Programmiersprache vorgibt, du mehrere verschiedene Programmiersprachen in einem Projekt einsetzt. Oder habe ich das falsch verstanden?

Was willst du mir damit schreiben?
Wenn du den Glaubenskrieg so nimmst ist es deine Endscheidung.
Ich habe geschrieben, dass ich das nehmen das sinnvoll ist und dem Kunden hilft mit seinen Anlagen Geld zu verdienen.


bike
 
Ich "mag" Glaubenskriege, aber ich würde sie lieber Grundsatzdiskussionen nennen.
Jetz hast du meine Frage aber nicht beantwortet:
Mischt du mehrere verschiedene Programmiersprachen in einem Projekt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich "mag" Glaubenskriege, aber ich würde sie lieber Grundsatzdiskussionen nennen.
Jetz hast du meine Frage aber nicht beantwortet:
Mischt du mehrere verschiedene Programmiersprachen in einem Projekt?

Was sind denn verschiedene "Programmiersprachen? :confused:

Die PV ist in SCL geschrieben, die WZV in AWL und andere Funktionen in FUP oder KOP , je nachdem wie du den Editor einstellst und Graph, wenn ich Step 7 verwende und da kommt immer MC7 Code heraus.
Und wenn ich Fanuc machen darf dann eben nur KOP.

Das hat aber keinen Einfluss auf die Funktion, daher die Feststellung, dass es völlig egal mit welcher Entwicklungsumgebung man das Programmieren lernt.


bike
 
Mischt du mehrere verschiedene Programmiersprachen in einem Projekt?

Natürlich. Dafür sind sie ja da.
Jede Sprache hat ihre Vorzüge und eignet sich für bestimmte Aufgaben besser als eine andere.

Betriebsarten / Startbedingungen programmiere ich FUP / KOP.
Berechnungen / Typverwaltung / Datenhandling in SCL / AWL
Schrittketten in Graph

Gruß
Dieter
 
Zurück
Oben