Konvertieren AWL von Step 7 zu AWL von CoDeSys

Nas97

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
seit ein Paar Wochen beschäftige ich mich mit der Ersetzung einer alten Siemens SPS durch eine neue Wago SPS. Hardwaremässig habe ich alles gemacht aber nun habe ich ein paar Probleme mit der Programmierung gefunden. Das Programm ist in AWL geschrieben (einfach aber zu lang) da es nur FBs gibt. Kann ich die FBs einfac wieder kopieren und die Commands also Befehle erstezen ? Wie erstze ich die "Network Phrasen? und wie schreibe ich die Call Aufrufe? hier ist z.B ein Network vom ersten Baustein:

Network 2: T1
##Not-Halt
A #P1
AN #P2
A "Taste.Nothalt"

R #P1
S #P2
R #stable

wird es in der Codesys AWL Sprache so sein:

LD P1
AND P2
And "Taste.Nothalt"
R P1
S P2
R stable

??


Ich entschuldige ich für die dumme Frage bin nun neu bei der AWL Programmierung.
MfG.
 
Ob Wago/Codesys-AWL (IL) eine "Network"-Anweisung zur Text-Strukturierung kennt weiß ich nicht (in IEC1131-3 IL gibt es kein Network-Sprachelement). Du könntest einfach eine Kommentarzeile draus machen. Für die Programmierung wird "Network" nicht gebraucht.

Call-Aufrufe schreibt man vermutlich "CAL Instanz(Par1 := 0, Par2 := TRUE)"

"AN #P2" muß zu "ANDN P2" übersetzt werden.

Ist Dein Ursprungs-Programm so lang oder kompliziert, daß es sich lohnt, es 1:1 in Wago/Codesys-AWL zu übersetzen? Wäre völlig neu programmieren keine bessere Alternative?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmmm, wenn man ein Programm aus Sprache A in Sprache B übersetzen will/soll, so sollte man aber die Sprache A sehr gut kennen und auch die Sprache B!
Du sagst, Du bist "neu bei der AWL Programmierung" und meinst damit wahrscheinlich, dass Du weder "die AWL-Sprache von Siemens" noch die von CoDeSys einigermassen gut kennst.
Hast Du Dich jetzt "hobby-mässig" darauf eingelassen?
Von CoDeSys-AWL habe ich leider Null Ahnung, also werde ich mich hüten zu sagen, wie Du die "NetzwerkPhrasen" [üb]ersetzt.
Vermutlich am einfachsten, indem Du sie als KommentarZeile übernimmst - zumindest zu Deiner eigenen Orientierung.
Ich würde an Deiner Stelle unbedingt zuerst feststellen wollen, welche OP-Codes überhaupt verwendet werden.
Werden SprungBefehle verwendet und wenn ja, welche. Findest Du SprungMarken im Programm?
U.s.w. ... u.s.w. ...
Die SprungMarken würde ich um die NetzwerkNr und BausteinArt und -Nr ergänzen.
Z.B. Die SprungMarke M001 im Netzwerk 2 von FB 3 würde ich umbenennen in FB003-NW002-M001.
Von Siemens-AWL kenne ich, dass
a) Sprünge nicht die NetzwerkGrenzen überspringen können bzw. dürfen.
In diesem Fall können gleichnamige SprungMarken zwar innerhalb eines Bausteins, jedoch nicht innerhalb eines Netzwerkes mehrfach vorkommen.
b) Sprünge die NetzwerkGrenzen überspringen können bzw. dürfen.
In diesem Fall können gleichnamige SprungMarken innerhalb eines Bausteins (und erst recht innerhalb eines Netzwerkes) nicht mehrfach vorkommen.
Wird mit Pointern gearbeitet?
Was meinst Du mit ...
1) "Das Programm ist in AWL geschrieben (einfach aber zu lang) da es nur FBs gibt."?
- einfach, aber wofür zu lang?
- es gibt nur FBs? Keine OBs? Keine PBs? Keine FCs? ...
- gibt es DBs, DIs, UDTs?
2) "Kann ich die FBs einfach wieder kopieren und die Commands also Befehle ersetzen?"
- meinst Du, statt einen FB an verschiedenen Stellen im Programm bedingt oder unbedingt aufzurufen, den Inhalt des FB an den entsprechenden Stellen immer wieder neu hinzuschreiben?
2) "wie schreibe ich die Call Aufrufe?"
- meinst Du in CoDeSys?
Falls das nur eine Hobby-Anwendung sein sollte, die Du übersetzen willst, könntest Du die "Siemens-AWL" als TextDatei (oder csv) zur Verfügung stellen, so dass ich Excel mal damit beschäftigen könnte?
Kann ich mir irgendwo eine pdf herunterladen, mittels derer ich mich über CoDeSys-AWL (ggfs passend zu Deiner Wago) informieren könnte?
Gruss, Heinileini
PS:
Deine Umsetzung AN #P2 ==> AND P2 verstehe ich nicht - wo versteckt sich die Negation? (Danke Harald - Du hast wieder den GeschwindigkeitsRekord aufgestellt!)
 
Zuletzt bearbeitet:
Nur mal so am Rande:
Die IEC nennt AWL "depreciated". Auf CoDeSys V3-Ebene wird nach meinem Kenntnisstand auch keine neuen Features mehr verfügbar gemacht.
AWL somit als Target für die Konvertierung von S7 zu nutzen ist ziemlich unsinnig. Und Arbeit müsstest du hineinstecken da S7 nicht IEC konform war und es deshalb so einige Unterschiede gibt.

Guga
 
Ach Harald!
"AN #P2" muß zu "ANDN P2" übersetzt werden.
Danke!

Ist Dein Ursprungs-Programm so lang oder kompliziert, daß es sich lohnt, es 1:1 in Wago/Codesys-AWL zu übersetzen? Wäre völlig neu programmieren keine bessere Alternative?
Wenn man sich in CoDeSys-AWL auskennt und weiss, was die Siemens-AWL tut, dann ist neu programmieren sicherlich einfacher. Man muss sich dazu nicht auch noch in Siemens-AWL auskennen ;o)
In Siemens-AWL gibt es Befehle, die ich nicht einmal mit der Pinzette anfassen würde, da sie nicht so dokumentiert sind, dass man überhaupt etwas damit anfangen kann. Und beim Portieren von "Siemens-AWL-Dialekt" zu "Siemens-AWL-Dialekt" (von CPU zu CPU) müsste man sie dauernd anpacken.
Gruss, Heinileini
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was für eine S7-CPU/SPS genau ist das ursprünglich gewesen? Warum soll die durch eine Wago-SPS (welche?) ersetzt werden - einfach so als Hobby-Projekt oder gibt es einen zwingenden Grund?

Kommen in dem S7-Programm auch Zahlen-Berechnungen z.B. Analogwertverarbeitung vor? Dann wirst Du das S7-AWL nicht mehr Anweisung für Anweisung 1:1 nach Wago/Codesys-AWL übersetzen können, weil das Wago/Codesys-AWL mit nur einem Akku für Zahlen und Logik arbeitet, die S7 aber mindestens 2 Akkus und einen VKE-Stack gleichzeitig hat. Bei Sprüngen wie SPA, SPZ, ... nimmt die S7 2 Akku-Werte und das VKE mit - das Wago/Codesys-AWL kann sowas nicht.

Wenn Du beide AWL-Sprachen nicht gut genug kennst bzw. generell würde ich empfehlen, im S7-Programm die Ansicht auf FUP oder KOP umzustellen und für die Wago die FUP/KOP-Ansicht "abzumalen". (Dann bekommst Du außerdem auch keine Probleme mit nicht übersetzbaren BLD- und NOP-Anweisungen.)

Harald
 
... Wenn Du beide AWL-Sprachen nicht gut genug kennst bzw. generell würde ich empfehlen, im S7-Programm die Ansicht auf FUP oder KOP umzustellen und für die Wago die FUP/KOP-Ansicht "abzumalen". (Dann bekommst Du außerdem auch keine Probleme mit nicht übersetzbaren BLD- und NOP-Anweisungen.)
Moin Hatald!
Du schreibst 'die FUP/KOP-Ansicht "abzumalen"' - daran hatte ich noch gar nicht gedacht. Wahrscheinlich, weil das nach "Handwerk" (manuelle Eingabe) klingt und ich irgendwie auf dem Trip war, die Übersetzung per Progrämmchen zu erledigen.
Wenn ohnehin die Eingabe händisch erfolgen soll, gebe ich Dir absolut Recht!
Meine ersten Gehversuche in KOP habe ich auf einem PG675 (oder war's ein PG685?) gemacht, als ich Fanuc-LADDER programmieren musste, aber weder die Fanuc-Steuerung noch das Fanuc-PG zur Verfügung hatte. Habe dann in S5 Dummy-FBs gestrickt für die Fanuc-SUBs (also für die "Kästchen" im KOP bzw. LADDER). So hatte ich eine leicht änderbare Basis, die eine sauber ausgedruckte Vorlage für das "Abmalen" ergab. Den Kampf mit handschriftlichen Kritzeleien und nachträglichen Korrekturen konnte ich mir so ersparen.
Das war jetzt eine holprige Überleitung zu dem, was ich noch anmerken möchte:
Wenn man die ZielSprache gut kennt (und die Quell-Sprache natürlich auch) und eine "maschinelle" Umsetzung der SW anstrebt, dann würde ich empfehlen, die Quell-AWL nach Fallstricken für die Übersetzung abzusuchen und die Quell-AWL an den komplizierten Stellen für die Übersetzung "mundgerecht" umzustricken.
Probleme mit nicht übersetzbaren BLD- und NOP-Anweisungen? Nun gut, in FUP und KOP nimmt man sie nicht wahr und ahnt nicht, dass in der AWL noch einige Anweisungen lauern, die man getrost ignorieren kann (vermute ich mal, ohne die diesbezüglichen Geheimnisse von CoDeSys zu kennen).
Gruss, Heinileini
 
Zurück
Oben