TIA Programmcode von S7 AWL nach TIA FUP

sps-fuzzy

Level-2
Beiträge
25
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
habe folgenden Programmcode in S7 AWL , und möchte diesen nach TIA FUP wandeln.
Die Befehle "U L 4.3" gibt es in TIA nicht. Bitte um Hilfe und Lösungsansätze.
L #Bedienbyte
T LB 4
// Bedienen von WinCC:
U(
UN L 4.2 // Betriebsart AUTOMATIK EIN
U #BEDG // Ansteuerbedingung für AUTO
)
O(
U L 4.2 // Betriebsart AUTOMATIK AUS (-> HAND EIN)
U L 4.0 // HAND ANSTEUERN
)
U #MS #MS -- Motorschutz
= #AUSG // Ausgang ansteuern
// Rückmelden an WinCC:
U #FRG #FRG -- Bedien-Freigabe
= L 4.3 // Freigabe (Grundstellung "AUTOMATIKBETRIEB abgesteuert")
UN L 4.3
R L 4.2 // keine Freigabe Handbedienung -> Automatikbetrieb
// HANDBETRIEB manuell angesteuert
U L 4.2 // BA "HAND"
U L 4.0 // manuell angesteuert
U #MS // INI oder Rückmeldung da #MS -- Motorschutz
= L 4.4 // => "HAND EIN" (GELB)
// HANDBETRIEB manuell abgesteuert
U #bla //#MS
U L 4.2 // BA "HAND"
UN L 4.0 // manuell abgesteuert
= L 4.5 // => "HAND AUS" (BLAU)

Danke.
 
Die L-Variablen gibt es in TIA auch. Es sind die TEMP-Variablen eines FB's oder FC's.
In deinem Fall wurden die Variablen augenscheinlich nicht symbolisch zugewiesen/definiert. Du mußt die jetzt, da es ja Kommentar-Texte gibt, dasselbe eben selbst erstellen.
Das Einzige, was ich als "ekelig" ansehe, ist die Sache mit dem Bedienbyte - da wirst du dann noch gesondert Hand anlegen müssen ...
 
Für welche CPU soll das sein?
Lx.y ist direkte Adressierung von TEMP-Speicheradressen, daher muss % davor (wie bei %M %E %A), z.B. L4.3 = %L4.3
Das geht aber nur bei S7-300/400. Bei S7-1500 kann TEMP-Speicher nur symbolisch adressiert werden.
 
Das gezeigte Beispiel lässt sich nahezu 1:1 auf Slice umstellen.
Richtig, ich denke, dass es trotzdem nicht der richtige Lösungsansatz ist.
Dann steht dort *Bedienbyte.%X0*, da kennt man sich im Code genau so wenig aus.
Gerade wenn es in FUP sein soll, da gibt's dann noch nicht mal die "Kommentare".

Wenn man das Originalprogramm nicht anfassen will/kann, dann spendiert man wenigstens im FC/FB eine saubere Variablenstruktur.
Geht doch im TIA wirklich sauber, z.B. am Bausteinanfang das Byte in die Struktur laden und am Ende von der Struktur wieder ins Byte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die einzigste Byte Zugriff ist die erste Laden von #BedienByte ins LB4.

In TIA, erstell ein Datentyp "Bedienbyte", mit die 6 BOOLs.
Wenn diese Datentyp als Eingangsparameter an den FC übergibt wird, dann sind die gewünschte BOOLs schon vorhanden und mit Symbole.
Einfach und sauber.
In WinCC erstelle die dementsprechende Variabeln, mit dieselbe Struktur.

Pas auf, sind das Tippfehler, oder wie sind die verdoppelte #MS #MS und #FRG #FRG ins Code Schnipsel gekommen ?
Code:
    U #MS #MS -- Motorschutz
    = #AUSG // Ausgang ansteuern
    // Rückmelden an WinCC:
    U #FRG #FRG -- Bedien-Freigabe
 
Das gezeigte Beispiel lässt sich nahezu 1:1 auf Slice umstellen.
... falls der Code für eine S7-1200/1500 sein soll. Bei S7-300/400 kann TIA das Slice nicht.
Außerdem ist Slice sehr uneffizient (ergibt ziemlich große Codegröße) und auf die einzelnen Bits wird genauso unsymbolisch zugegriffen wie in der dirty (*) Vorlage. AT ist viel effizienter und die Bits können per Struct symbolisch angesprochen werden.

(* dirty: es ist schon ein bisschen komisch, dass weder das LB4 noch die Bits L4.x ein Symbol haben. Der Code sieht aus, als ob er schon seit S5 und Schmiermerkern mitgeschleppt wird.
 
Zurück
Oben