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

Ergebnis 1 bis 6 von 6

Thema: SCL vs. FUP/KOP/AWL

  1. #1
    Registriert seit
    04.08.2011
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Bis jetzt habe ich immer gelesen, aber heute mal eine Frage an die Pofis was FUP/KOP/AWL angeht.
    Ich selbst komme eher aus dem Bereich der textorientierten Hochsprachen (C/C++ bzw. Delphi/Pascal) und hatte bis auf einen kurzen "Ausflug" in Richtung "Codesys" bis vor einem Jahr weniger mit SPS zu tun. Das TIA V11 ermöglicht ja nun ohne Zusatzlizenz auch in SCL zu programmieren. Nun sammle ich Argumente für TIA V11 und SCL. Ohne damit FUP/KOP/AWL in Abrede zu stellen...
    Folgender SCL-Code soll in FUP bzw. AWL erstellt werden. Ich behaupte nun dass jede zu erfüllende Bedingung (IF/ELSIF) in einem eigenen Netzwerk dargestellt werden muss, wobei alle nicht klar definierten VKE bei FUP/KOP/AWL explizit in einem eigenen Netzwerk ausgeschlossen werden muss. Oder liege ich da falsch? Wie würde das in z.B. FUP aussehen?

    Code:
    IF "M10.0" AND "M10.1" AND "M10.2" THEN
      "M11.0" := TRUE;
      "M11.1" := FALSE;
      "M11.2" := FALSE;
    ELSIF "M10.0" AND NOT "M10.1" AND NOT "M10.2" THEN
      "M11.0" := TRUE;
      "M11.1" := TRUE;
      "M11.2" := FALSE;
    ELSIF NOT "M10.0" AND "M10.1" AND "M10.2" THEN
      "M11.0" := TRUE;
      "M11.1" := FALSE;
      "Tag_1" := TRUE;
    ELSE
      "M11.0" := FALSE;
      "M11.1" := FALSE;
      "M11.2" := FALSE;
    END_IF;
    Ich stelle mir ein Netzwerk vor in welchem alle verwendeten M11.x auf "0" gesetzt werden, danach drei Netzwerke mit den Bedingungen.
    Das sieht zwar auf den ersten Blick trivial aus, aber wenn sich die Bedingungen weiter verzweigen (siehe Bsp.) vermute ich lange komplizierte Netzwerke.
    Code:
    IF (
        ("M10.0" AND ("M12.0" AND NOT "M12.1"))
        OR
        ("M10.0" AND ("M12.0" AND NOT "M12.2"))
      )
      AND "M10.1" AND "M10.2" THEN
      "M11.0" := TRUE;
      "M11.1" := FALSE;
      "M11.2" := FALSE;
    ELSIF
     ...
    Ich hoffe ich habe halbwegs verständlich das Problem darstellen können.

    THX
    flicflac
    Zitieren Zitieren SCL vs. FUP/KOP/AWL  

  2. #2
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Das Forum ist voll von "Endlosdiskussionen" dieser Art. Da werden Philosophiefragen, Kundenvorgaben, persönliche Neigungen und differenzierte Begründungen geliefert, warum es nur die eine Sprache geben muss oder auch warum jede Sprache ihre Berechtigung hat. Nach dem Studium all dieser threads gibt es kaum noch Fragen...
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  3. #3
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.619
    Danke
    776
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Netzwerke sind eigentlich nur für die Optik. DU kanns ein Netzwerk praktisch mit Code zupflastern. Sie haben keinen Einfluss auf die Programmausführung

    Dein Beispiel liesse sich etwa so ausführen.

    U M10.0
    U M10.1
    U M10.2
    S M11.0 // diese OP verändern das VKE nicht
    R M11.1
    R M11.2
    spb end // überspringe wenn vorhergehende Bedingung erfüllt
    U M10.0
    UN M10.1
    UN M10.2
    S M11.0 // diese OP verändern das VKE nicht
    S M11.1
    R M11.2
    spb end
    ...
    ...
    end: nop 0

    mfG René

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Bei der SPS-Programmierung betrachtet man eigentlich den Ausgang und schreibt in Oder-Zweigen auf, wann dieser Ausgang TRUE werden soll - in allen anderen Fällen wird der Ausgang FALSE. Da braucht man keine Sprünge. Und S/R sollte man nur einsetzen, wenn etwas für spätere OB1-Zyklen gespeichert werden muß.

    Da es 3 Ausgangsmerker gibt, braucht man für FUP/KOP 3 Netzwerke (in AWL kann man auch alles in 1 Netzwerk quetschen. )

    Der SCL-Code 1:1 umgesetzt (vorausgesetzt, das "Tag_1" soll eigentlich "M11.2" heißen):
    Code:
    NETWORK
          U     M     10.0
          U     M     10.1
          U     M     10.2
          O
          U     M     10.0
          UN    M     10.1
          UN    M     10.2
          O
          UN    M     10.0
          U     M     10.1
          U     M     10.2
          =     M     11.0
    NETWORK
          U     M     10.0
          UN    M     10.1
          UN    M     10.2
          =     M     11.1
    NETWORK
          UN    M     10.0
          U     M     10.1
          U     M     10.2
          =     M     11.2
    Etwas optimiert:
    Code:
    NETWORK
          U     M     10.1
          U     M     10.2
          O
          U     M     10.0
          UN    M     10.1
          UN    M     10.2
          =     M     11.0
    NETWORK
          U     M     10.0
          UN    M     10.1
          UN    M     10.2
          =     M     11.1
    NETWORK
          UN    M     10.0
          U     M     10.1
          U     M     10.2
          =     M     11.2
    Für FUP/KOP-Darstellung: die AWL-Zeilen ohne das "NETWORK" in AWL-Ansicht jeweils in ein eigenes Netzwerk kopieren und dann die Ansicht auf FUP/KOP umstellen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Bei der SPS-Programmierung betrachtet man eigentlich den Ausgang und schreibt in Oder-Zweigen auf, wann dieser Ausgang TRUE werden soll - in allen anderen Fällen wird der Ausgang FALSE. Da braucht man keine Sprünge. Und S/R sollte man nur einsetzen, wenn etwas für spätere OB1-Zyklen gespeichert werden muß.

    Da es 3 Ausgangsmerker gibt, braucht man für FUP/KOP 3 Netzwerke (in AWL kann man auch alles in 1 Netzwerk quetschen. )

    Der SCL-Code 1:1 umgesetzt (vorausgesetzt, das "Tag_1" soll eigentlich "M11.2" heißen):
    Code:
    NETWORK
          U     M     10.0
          U     M     10.1
          U     M     10.2
          O
          U     M     10.0
          UN    M     10.1
          UN    M     10.2
          O
          UN    M     10.0
          U     M     10.1
          U     M     10.2
          =     M     11.0
    NETWORK
          U     M     10.0
          UN    M     10.1
          UN    M     10.2
          =     M     11.1
    NETWORK
          UN    M     10.0
          U     M     10.1
          U     M     10.2
          =     M     11.2
    Etwas optimiert:
    Code:
    NETWORK
          U     M     10.1
          U     M     10.2
          O
          U     M     10.0
          UN    M     10.1
          UN    M     10.2
          =     M     11.0
    NETWORK
          U     M     10.0
          UN    M     10.1
          UN    M     10.2
          =     M     11.1
    NETWORK
          UN    M     10.0
          U     M     10.1
          U     M     10.2
          =     M     11.2
    Für FUP/KOP-Darstellung: die AWL-Zeilen ohne das "NETWORK" in AWL-Ansicht jeweils in ein eigenes Netzwerk kopieren und dann die Ansicht auf FUP/KOP umstellen.

    Harald
    Wobei man noch sagen muss, dass das Debuggen (online-Zustand ansehen) von KOP oder FUP bei oben gezeigten binären Verknüpfungen i.d.R. wesentlich übersichtlicher ist, als die im Start-Thread gezeigten If/Then-Anweisungen.
    So ergibt sich wie immer: "Für jede Aufgabe gibt es eine optimale Sprache", Wenn man das Mischen kann ist es das Optimum.
    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

  6. #6
    Registriert seit
    10.11.2010
    Beiträge
    21
    Danke
    1
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nur wegen der Vollständigkeit

    natürlich kann man das ganze auch in einem KOP oder FUP Netzwerk darstellen - es wir dazu aber eine Hilfsvariable benötigt die VKE=1 erfüllt.


    Code:
          U     "TRUE_B"
          =     L      0.0
          U     L      0.0
          U(    
          U     M     10.1
          U     M     10.2
          O     
          U     M     10.0
          UN    M     10.1
          UN    M     10.2
          )     
          =     M     11.0
          U     L      0.0
          U     M     10.0
          UN    M     10.1
          UN    M     10.2
          =     M     11.1
          U     L      0.0
          UN    M     10.0
          U     M     10.1
          U     M     10.2
          =     M     11.2

    mfg ASAB
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: jpg NW1.JPG (18,1 KB, 28x aufgerufen)

Lesezeichen

Berechtigungen

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