AWL vs. FUP

Pimsti

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi!
Bin gerade von Mitsubishi in die Siemens-Welt eingetaucht und soll nun S7-300 CPUs programmieren. Nun habe ich einen Haufen fragen.
Gleich mal was elementares.
Ich bin dabei alle Anlagenteile in FBs zu implementieren.
Diese werden dann im OB1 aufgerufen und mit den div. Signalen "verdrahtet". Mir gefällt der FUP-Stil da er sehr übersichtlich ist. Nachdem ich aber aus der AWL(STL)-Welt komme porgrammiere ich gerne in AWL. Wenn ich nun einen FB in FUP einfüge und dann auf AWL umstelle sehe ich das für die Eingänge immer solche Teile erstellt werden:
Code:
      BLD   103
      U     M    100.1
      =     L     28.1
[code]
Warum wird im FUP Modus immer der eingang auf einen L-bereichsvaribale gelegt und diese dann am FB abgeschlossen anstatt gleich das Signal anzuschliessen.
Wenn ich den FB via AWL einfüge ist dies nämlich kein problem.
 
Der BLD Befehl bewirkt rein garnichts, er wir nur im KOP oder FUP Editor zur Umwandlung nach AWL und zurück benutzt.
Genauso wie der Befehl =L 28.1

Also alles nur zur Umwandlung, man kann die L und BLD Befehle auch löschen. Dann kann man nur nicht mehr nach FUP oder KOP umschalten. Es funktioniert aber weiterhin

marlob
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Befehl = L28.1
bewirkt sehr wohl etwas, wie der Fragesteller schon festgestellt hat wird der eigentliche FB-Eingang mit einer Temporärvariable blelegt.
Warum das von Siemens allerdings so aufwendig gemacht ist, weiß nur Siemens.

Der BLD oder NOP Befehl ist allerdings wirklich nur zur Umwandlung zwischen AWL und KOP/FUP.
 
@Pimsti

Ich denke mal, siemens schafft damit die Möglichkeit, ganze Verknüpfungen an einen Eingang des FB zu hängen und das dann in FUP darzustellen. Das Ganze wird dann über das von dir gezeigte Konstruckt aufgedröselt, so daß es in AWL schön nacheinander dasteht. Leider ist das für AWL-Programmierer nicht so das Richtige, außerdem werden die Temp-Variablen öfter umgruppiert, wenn man Netzwerke mit neuen Bausteinen einfügt. Ich hab mit eigentlich angwöhnt, die Bausteinaufrufe selbst immer in ein AWL-Netzwerk zu setzen (Baustein in AWL mit CALL etc. aufrufen), Der ist zwar nicht mehr in FUP darstellbar, aber meine eingenen Temp-Variablen kann ich da übersichtlicher ranschreiben.
 
@MSB
Du hast recht, das der Befehl = L28.1 etwas bewirkt. Die Variable L28.1 kommt ja schliesslich 2x mal vor einmal als Zuweisung und einmal als UND-Verknüpfung
Der BLD Befehl bewirkt ja schliesslich auch etwas und zwar die Umwandlung nach FUP/KOP, nur Programmtechnisch ist er uninteressant, genau wie die Befehle mit der lokalen Variable und darum kann man sie meistens!! auch löschen ohne die Funktionaltät zu verändern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Problemorientierte Programmierung ...

M.E. solltest du einen problemorientierten Ansatz wählen:

- bei einfachen Lade- und Transferoperationen ist
AWL sicher besser, weil du dir den z.T. unnötigen
Overhead (BLD-Anweisungen) etc. sparst

- bei gemischten UND vor ODER vor UND-Verknüpfungen
ist FUP sicher die bessere Alternative, sonst geht
man leicht im Klammerwald verloren.

- auch bei Rechen- und Transferoperationen (außer MOVE)
ist es sinnvoll, FUP zu verwenden, weil der Compiler
dann eine Typprüfung vornehmen kann. Diese Prüfung
kann aber auch lästig sein, wenn du z.B. 16 Freigabe-
bits gemeinsam in einem Wort verarbeiten willst. Ein
boolsches Array 1-16 lässt sich nicht direkt in ein
WORD transferieren.

- du solltest versuchen, deinen Code immer möglichst
lokal zu halten, also Lokaldaten benutzen (aber un-
bedingt im Bausteinkopf deklarieren und nicht abso-
lut zugreifen, weil es sonst zu Doppelbelegungen
kommen kann, wenn der KOP/FUP/AWL-Editor wie in deinem
Beispiel selbständig L-Daten belegt) und in FBs auch
lokale statische Variablen.
M, MB, MW, MD nur für wirklich globale Variablen,
z.B. zur Übergabe zwischen verschiedenen Programm-
teilen einer Maschine.

- reinen AWL-Code für systemnahe Programmierung (z.B.
Zerlegung und Zusammenbau von Pointern) möglichst in
gekapselten Funktionen.

- SCL für Programme mit Schleifen und vielen Verzweigungen
(IF, CASE, ...) vor allem beim Arbeiten mit UDTs und in
Instanz-DBs, denn da kannst du in AWL kaum einen Ge-
schwindigkeitsvorteil rausholen. Die indizierten Zugriffe
über die Adressregister sind leider etwas kompliziert,
weil Siemens hier vergessen hat, einige Adressierungs-
arten in Hardware zu gießen.

Gruß G.
 
Aber wenn ich einmal AWL z.B im OB1 oder einen anderen FB brauche dann wird ja alles in AWL dargestellt oder?
Oder gibt es einen Möglichkeit einzelne Netzwerke in AWL und einzelne in FUP darzustellen?
Wenn nicht ist FUP für mich hinfällig da ich immer wieder kurze Sachen in AWL implementieren will
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Bausteineditor stellt alles was er aus irgend einen Grund nicht auf KOP/FUP übersetzen kann in AWL dar, es kann also durchaus sein, das das eine Netzwerk in AWL ist, und das nächste in KOP/FUP.
 
Früher bei S5 gabs mal den AWL-Befehl.
Dadurch wurde dann ein Netzwerk explizit in AWL dargestellt und nicht in KOP oder FUP. Obs das heute noch gibt glaube ich kaum, da es eigentlich unnötig wurde.

Ebenfalls sind die versch. BLD-Befehle interne Befehle zur Bild-Steuerung im Editor. Das gabs bei S5 auch schon. War ganz nett bei der Programmeingabe. Z.B. BLD255 Text wurde dann so umgewandelt, das ein neus Netzwerk erzeugt wurde mit der Überschrift "Text". Da gab es dann noch einige mehr!

Die NOP's (NOP 0) sind Nulloperations Befehle.

NOP 0 (Operation NOP mit dem Operand "0") führt keine Funktion aus und beeinflußt die Statusbits nicht. Der Operationscode enthält ein Bitmuster mit 16 Nullen. Die Operation ist nur für das Programmiergerät (PG) wichtig, wenn ein Programm angezeigt wird.
 
Die Umstellung ist ...

Pimsti schrieb:
Aber wenn ich einmal AWL z.B im OB1 oder einen anderen FB brauche dann wird ja alles in AWL dargestellt oder?
Oder gibt es einen Möglichkeit einzelne Netzwerke in AWL und einzelne in FUP darzustellen?
... im KOP/FUP/AWL-Editor in Ansicht-FUP bzw. in
Extras-Einstellungen-Ansicht-Ansicht Codebausteine möglich.

Wenn du hier KOP oder FUP einstellst, wird jedes Netzwerk,
bei dem dies möglich ist, so dargestellt und der Rest in AWL.

Gruß G.
 
Zurück
Oben