Step 7 AWL Code in FUP

Stephan25

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

ich hätte folgende Frage und zwar, kann ich so einen AWL Code auch in FUP darstellen lassen.
Wenn ja was müsste ich hierfür ändern, Klammern oder ähnliches.

L B#16#C2
T #byPAB_1

L #DB_Number
T #DB_No

Auf DB [#DB_No]
L DBB 42
T #byPAB_2

L DBB 43
T #byPAB_3

L #byPEB_1
L B#16#82
==I
SPB I_SC
BE


Danke und Gruß
 
Mir soll niemenad den AWL Code übersetzen in FUP, bitte nicht falsch verstehen,
ich will nur wissen ob es geht und wenn ja ob man dann eben irgendwas Ein,-bzw. Ausklammern muss.
 
Hallo Stephan25,

soweit ist das alles problemlos, außer bei dem Vergleicher. Bei FUP kann man kein BE angeben, deshalb muß man dies mit einem Sprung ins letzte Netzwerk des Bausteins lösen. Eine Sprungmarke (bei FUP) kann aber nicht alleine in einem Netzwerk stehen, deshalb die Dummy-Sache.
 

Anhänge

  • FC4.pdf
    14,9 KB · Aufrufe: 77
Zuviel Werbung?
-> Hier kostenlos registrieren
Einfach so umschalten wird nicht gehen. Es funktioniert nur, wenn du den Code in FUP geschrieben hast und dann zwischen AWL und FUP switche willst.
Es funktioniert auch, wenn man nachträglich an den richtigen Stellen NOP 0 und Netzwerktrennungen einfügt. ;)
Aber Du hast Recht, es ist nicht einfach. Denn wer weiß schon, wo welche Einfügung erwartet wird.
Da ist es einfacher, gleich neu zu erstellen. (Hab' ich auch so gemacht :p)
Doch die Frage war ja, ob es überhaupt geht. :)


... außer bei dem Vergleicher. Bei FUP kann man kein BE angeben, ...
Auch das geht: Programmsteuerung -> [RET] = Bedingtes Bausteinende. Da vorher eh' ein Vergleich durchgeführt wird, kann man auch bedingt den Baustein beenden, statt das unbedingte Ende zu überspringen. Wäre in meinen Augen eh die bessere Variante (, allerdings hängt das auch davon ab, wo der Sprung überhaupt hingeht):
Code:
L #byPEB_1
L B#16#82
<>I
BEB

Was in FUP aber normalerweise beim INT-Vergleich Probleme macht, sind die beiden Byte-Werte.
Deshalb Frage @190B:
Wie hat bei Dir STEP7 den als Byte deklarierten Eingang #byPEB1 als Formalparameter am INT-Vergleicher zugelassen. Bei mir wird vorher eine Transformation zu INT erwartet und auch die B#16#82 muss ich als 130 (dezimal) angeben.


Daraus ergeben sich bei mir folgende grüne Einfügungen bzw. Netzwerktrennungen (------) und rote Änderungen (Sprung entfällt), damit man zu FUP/KOP umschalten kann:
... kann ich so einen AWL Code auch in FUP darstellen lassen.
Wenn ja was müsste ich hierfür ändern, Klammern oder ähnliches.

Code:
L     B#16#C2
T     #byPAB_1

L     #DB_Number
T     #DB_No

Auf  DB [#DB_No]
L     DBB 42
T     #byPAB_2

L     DBB 43
T     #byPAB_3

L     #byPEB_1
L     B#16#82
==I
SPB  I_SC
BE

Code:
[FONT=Courier New]      L     B#16#C2               //Hex-Wert C2 (Dez. 194)
      T     #byPAB_1              //an Ausgangsbyte 1 übertragen
      [COLOR="#00FF00"]NOP   0

---------------------------------------[/COLOR]

      L     #DB_Number            //Eingang DB-Number von Byte/Int?
      T     #DB_No                //in WORD (temporär?) wandeln
      [COLOR="#00FF00"]NOP   0

---------------------------------------[/COLOR]

      AUF   DB [#DB_No]           //läßt sich wegen der variablen DB-Nummer nicht zu FUP ändern
[COLOR="#00FF00"]
---------------------------------------[/COLOR]

      L     DBB   42              //Datenbankbyte 42
      T     #byPAB_2              //an Ausgangsbyte 2 übertragen
      [COLOR="#00FF00"]NOP   0

---------------------------------------[/COLOR]

      L     DBB   43              //Datenbankbyte 43
      T     #byPAB_3              //an Ausgangsbyte 3 übertragen
      [COLOR="#00FF00"]NOP   0

---------------------------------------[/COLOR]

      L     #byPEB_1              //Eingangsbyte?
      [COLOR="#00FF00"]T     #iPEB_1[/COLOR]               //in Integer wandeln
      [COLOR="#00FF00"]NOP   0

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

      L     #iPEB_1[/COLOR]               //zu INT gewandeltes Eingangsbyte
      L    [COLOR="#FF0000"] 130 [/COLOR]                  //Hex-Wert b#16#82 als Int 130
      [COLOR="#FF0000"]<>[/COLOR]I                         //statt bei Gleichheit, Beenden überspringen - bei Ungleicheit den 
      [COLOR="#00FF00"]SAVE[/COLOR]                        //(für FUP-Befehl RET nötig) 
      BE[COLOR="#00FF00"]B[/COLOR]                         //Baustein beenden[/FONT]
 
Wie hat bei Dir STEP7 den als Byte deklarierten Eingang #byPEB1 als Formalparameter am INT-Vergleicher zugelassen. Bei mir wird vorher eine Transformation zu INT erwartet und auch die B#16#82 muss ich als 130 (dezimal) angeben.

Ich bin zwar nicht 190B, aber es gibt in den Einstellungen die Möglichkeit die Typüberprüfung von den Operanden abzustellen.

Extras -> Einstellungen -> KOP/FUP -> Typüberprüfung (Haken entfernen)

Dann geht das ohne Probleme.
Ich hab sie standardmäßig ausgeschaltet.

Gruß wolder
 
Zurück
Oben