TIA Umsetzung von AWL-Code in FUP/Kop für S7-1200

ChristianVogel

Level-2
Beiträge
401
Reaktionspunkte
53
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich plage mich grade mit herum, ein älteres Programm nach einer Migration tauglich zu machen um es in einer S7-1200 laufen zu lassen. Knackpunkt ist der, dass dieses Urprogramm in AWL geschrieben ist und das ja bekanntlich nicht in der S7-1200 läuft. Da ich kein AWL-Gott bin bräuchte ich hier mal Eure Unterstützung.


Kleinere Funktionen bekomme ich hin, schalte in der Ansicht zwischen FUP und AWL HinUndHer, aber hier verlassen mich meine Künste: Kann mir jemand einen Tip geben, wie ich diesen AWL-Roman in Netzwerke splitten kann, dass ich den in FUP darstellen kann???


kurze Info vorab: Ich möchte über einen Deutschmann-Gateway (Profinet/RS232) einen Drucker von Couth-Butzbach ansteuern, konkret einen MC2000T². Die "menschliche Kommunikation" zwischen allen Beteiligten gestaltet sich etwas schwierig, ich habe hier viele Beispielprogramme vorliegen, darin auch ein Step7-Projekt worin ein FB1/FB2 drinnen ist die bezeichnet sind mit "FB1 - Unigate Daten senden" und "FB2 - Unigate Daten emfangen" hat vielleicht jemand schonmal diese Bausteine verwendet und diese in eine Nicht-AWL-version umgetüddelt? Ich habe jetzt gar keine Ahnung, ob diese Bausteine von "Couth-Butzbach stammen, oder ob diese von "Deutschmann" kommen und aus einem Demoprojekt stammen und diese einfach umgestrickt wurden... Zum heulen!


Kennt jemand einen "Konverter" der sowas umsetzen kann, oder kennt jemand einen Umweg über irgendwinen weg, wie ich das Zeugs der S7-1200 schmachhaft machen kann???


Was ich garnicht schnalle sind im FB1 die NW4/5/6/7 und im FB2 die 2/3/4/5, die Block-Move und DPRD/DPWR kann ich mir rausziehen, der Rest sind für mich unverständliche Anweisungen :-(






Anbei der FB1:


FB1 NW1
==========


U #REQ
FP #Flanke
= #Impuls
SPB M100
BE
M100: NOP 0






FB1 NW2
==========


U #Impuls
SPBN M200


L #trigger
L 0
==I
SPBN M201
L 1
T #trigger
SPA M200
M201: L 0
T #trigger
M200: NOP 0






FB1 NW3
==========


L #LADDR
T #add_1
L 128
+I
T #add_2




FB1 NW4
==========


L #LEN
T #laenge




L #laenge
L 224
>I
SPBN M400
L 224
T #laenge
M400: NOP 0




FB1 NW5
==========


LAR1 P##quelle


L B#16#10
T LB [AR1,P#0.0]


L B#16#2
T LB [AR1,P#1.0]


L #laenge
T LW [AR1,P#2.0]


L #DB_NO
T LW [AR1,P#4.0]


L #DBB_NO
SLW 3
L P#DBX 0.0
OW
T LD [AR1,P#6.0]




LAR1 P##ziel


L B#16#10
T LB [AR1,P#0.0]


L B#16#2
T LB [AR1,P#1.0]


L #laenge
T LW [AR1,P#2.0]


L 0
T LW [AR1,P#4.0]


L P##zeichen_1
T LD [AR1,P#6.0]






FB1 NW6
==========


LAR1 P##quelle


L B#16#10
T LB [AR1,P#0.0]


L B#16#2
T LB [AR1,P#1.0]


L 116
T LW [AR1,P#2.0]


L 0
T LW [AR1,P#4.0]


L P##zeichen_127
T LD [AR1,P#6.0]




FB1 NW7
==========


LAR1 P##quelle


L B#16#10
T LB [AR1,P#0.0]


L B#16#2
T LB [AR1,P#1.0]


L 128
T LW [AR1,P#2.0]


L 0
T LW [AR1,P#4.0]


L P##trigger
T LD [AR1,P#6.0]






Da noch der FB2


FB2 NW1
==========


L #LADDR
T #add_1
L 32
+I
T #add_2
L 32
+I
T #add_3
L 32
+I
T #add_4
L 32
+I
T #add_5
L 32
+I
T #add_6
L 32
+I
T #add_7
L 32
+I
T #add_8




FB2 NW2
==========


LAR1 P##quelle


L B#16#10
T LB [AR1,P#0.0]


L B#16#2
T LB [AR1,P#1.0]


L 32
T LW [AR1,P#2.0]


L 0
T LW [AR1,P#4.0]


L P##trigger
T LD [AR1,P#6.0]




CALL "DPRD_DAT"
LADDR :=#add_1
RET_VAL:=#RET_VAL_SFC14
RECORD :=#quelle




FB2 NW3
==========


L #laenge
L 20
>I
SPBN M300
L 20
T #laenge
M300: NOP 0






FB2 NW4
==========




LAR1 P##quelle // Addresse des Quellbereichs


L B#16#10
T LB [AR1,P#0.0]


L B#16#2
T LB [AR1,P#1.0]


L #laenge
T LW [AR1,P#2.0]


L 0
T LW [AR1,P#4.0]


L P##zeichen_1
T LD [AR1,P#6.0]




LAR1 P##ziel


L B#16#10
T LB [AR1,P#0.0]


L B#16#2
T LB [AR1,P#1.0]


L #laenge
T LW [AR1,P#2.0]


L #DB_NO
T LW [AR1,P#4.0]


L #DBB_NO
SLW 3
L P#DBX 0.0
OW
T LD [AR1,P#6.0]




CALL "BLKMOV"
SRCBLK :=#quelle
RET_VAL:=#RET_VAL_SFC14
DSTBLK :=#ziel


L #laenge
T #LEN




FB2 NW5
==========


L #tigger_alt
L #trigger
<>I
= #NDR


L #trigger
T #tigger_alt



Ein konverter wäre warscheinlich die einfachste Lösung, aber finde nix auf die schnelle... Ein Tip von Euch???

DDDAAAANNNNKKKEEE!
 
In den für dich unverständlichen Netzwerken werden ANY-Pointer "zusammengebaut".
In der Form schluckt das die 1200er sowieso nicht.
So was schreibst du am besten neu in SCL.
Wenn du die Datenstrukturen richtig aufbaust, dann sind das wahrscheinlich nur ein paar Zeilen.

Gruß
Blockmove
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Blockmove!

ich brüte die ganze Zeit schon über den Beiden Bausteinen, da wird doch sowieso einiges im TIA-Portal anders aufgebaut sein UND EINFACHER als im alten Code, schon klar. Bei mir hängt es im Moment eher am Verständnis, was der Kollege da damals zusammenprogrammiert hat
:rolleyes: Ich habe hier die glorreiche Aufgabe eben diese Kommunikation mit Profinet<->RS232 hinzubekommen.

Letztenendes habe ich hier am Drucker 256IB und 256QB, so wie das aussieht werden da eben Byteweise die Befehle rausgeschoben und dann über die selbe Byteanzahl wieder ACK und NACK erwartet. Der Kollege schiebt hier eben einige Adressen hin und her, das ist für mich als FUP-lastiger Programmierer :cool: schwehr zu lesen, AWL hatte ich noch nie so richtig lieb :confused::confused::confused:

Zum Beispiel:

L #LADDR
T #add_1
L 32
+I
T #add_2
L 32
+I
T #add_3
L 32
+I
T #add_4
L 32
+I
T #add_5
L 32
+I
T #add_6
L 32
+I
T #add_7
L 32
+I
T #add_8



Hier wird doch folgendes berechnet:

#LADDR +32 = #add1
#add1 +32 = #add2
#add2 +32 = #add3
#add3 +32 = #add4
#add4 +32 = #add5
#add5 +32 = #add6
#add6 +32 = #add7
#add7 +32 = #add8
oder?

Das nimmt mir ja der SFC14/15 sowieso nicht als #LADDR, bzw. im TIA habe ich ja garkeine kontrolle über die HW-ID, die muss ja nicht aufsteigend sein, oder?
 
Zurück
Oben