SCL vs. FUP/KOP/AWL

flicflac

Level-1
Beiträge
1
Reaktionspunkte
0
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
 
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...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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é
 
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. :rolleyes: )

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
 
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. :rolleyes: )

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

Anhänge

  • NW1.JPG
    NW1.JPG
    18,1 KB · Aufrufe: 38
Zurück
Oben