AWL nach SCL convertieren

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

ich möchte bereits in AWL geschriebene Funktionen aus einem Step7 Projekt jetzt in ein PCS7 Projekt einbinden. Dabei möchte ich aber nicht die Bausteine so verwenden, sondern die Funktionen in SCL konvertieren, um anschließend diese mit Erweiterungen zu modifizieren.
Gefunden habe ich nur eine Möglichkeit der Generation von AWL Quellen, die sehen aber wieder anders aus, als die SCL Quellen.
Gibt es eine Möglichkeit die SCL Quelle aus AWL zu erzeugen, ohne sich die Finger wund zu tippen :?:

Danke schon mal!
 
Da gibt es meines Wissens nach keine Möglichkeit. SCL ist eine "Hochsprache" und wird von einem Compiler in AWL-Code umgesetzt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ralle schrieb:
...und wird von einem Compiler in AWL-Code umgesetzt.

Hi Ralle

Das kann ich auf grund meiner neuesten Erkenntnisse so nicht stehen lassen. Der SCL-Compiler erzeugt MC7-Code und nicht AWL-Text-Code.

Mir ist das in der letzten Woche aufgefallen, als ich eine in SCL geschriebene Funktion im AWL-Editor nachbearbeiten wollte. Siemens verwendet da beim SCL-Compiler nicht veröffentlichten Code und Methoden, der bzw. die vom AWL-Editor nicht erkannt werden. Z.B. kann es passieren, das bei der Einbindung von SFC-Bausteinen, der SCL-Compiler das nicht mit einem normalen "CALL" übersetzt, sondern er setzt den Befehl "UC" ein! Obwohl "UC" entsprechend Siemens nur für parameterlose Funktionen angewendet werden sollte! Der SCL-Compiler fügt Code ein, mit dem er zunächst das Adressregister "AR1" sichert. Die Parameter, die z.B. einer SFC-Funktion übergeben werden müssen, wandelt der SCL-Compiler in Ladebefehle um, die vor der Ausführung die Werte in eine bestimmten Bereich der Lokaldaten ablegen. Dann folgte eine Veränderung des Adressregister "AR1" mit einem Offset, der spannenderweise der Adresse der Lokaldaten entspricht, an denen zuvor die Parameter abgelegt wurden. Schlussendlich folgt der Sprung in die SFC-Funktion mit "UC". Bis jetzt habe ich aber (mangels Zeit) noch nicht heraus gefunden, wie die Rückgabe von Parameter erfolgt. Das ist die eine Geschichte.

Etwas unangenehmer ist die Tatsache, das offensichtlich vom SCL-Comiler hin und wieder auch mal nicht veröffentlichter MC7-Code eingebaut wird. Wenn solcher Code vorhanden ist, dann scheitert jeder Versuch, den Baustein in AWL nachzubearbeiten.

wiebke schrieb:
Hallo

ich möchte bereits in AWL geschriebene Funktionen aus einem Step7 Projekt jetzt in ein PCS7 Projekt einbinden. Dabei möchte ich aber nicht die Bausteine so verwenden, sondern die Funktionen in SCL konvertieren, um anschließend diese mit Erweiterungen zu modifizieren.
Gefunden habe ich nur eine Möglichkeit der Generation von AWL Quellen, die sehen aber wieder anders aus, als die SCL Quellen.
Gibt es eine Möglichkeit die SCL Quelle aus AWL zu erzeugen, ohne sich die Finger wund zu tippen :?:

Danke schon mal!

Hi wiebke

Ich würde dir empfehlen, die in AWL geschriebenen Bausteine so zu belassen wie sie sind. SCL kann schon gar nicht alles, was man in AWL ggf. so alles machen kann. Sofern notwendig, kann man die AWL-Bausteine auch im AWL-Editor PCS7-like anpassen, das ist zwar etwas mühsamer als in SCL, aber es geht.

Ich beschäftige mich zur Zeit mit einem Projekt, um für die S7 einen C-Compiler zu bauen. Dazu haben sich einige Leute hier aus dem Forum zusammengefunden, die Sache gedeiht. Aber es wird noch ein lange Weg sein, bis das eine runde Sache ist. Die Idee mit dem C-Compiler für S7 ist bei mir deswegen entstanden, weil SCL eigentlich nur eine magere Sache ist und den AWL-Befehlsvorrat nicht ausschöpft.

Gruß Barnee
 
Danke Barnee, das mit den Rückgabewerten intressiert mich auch, wenn du was herausfindest laß es mich bitte wissen. So umfangreiche SCL-Funktionen schreib ich meistens nicht, bis jetzt konnte ich alles in AWL lesen 8) .
 
@Barnee

Hallo

Es gibt in MC7 keinen CALL!! Das ist nur die Umschreibung für das Aufbereiten von Parametern und dann UC FC/FB + einem SPA und die Parameterpointliste im Falle eines FCs.

Kann man sich auch bei jedem normalen AWL Baustein ansehen, wenn man aus dem Projekt den aufgerufenen Baustein entfernt und dann den aufrufenden Baustein im Editor öffnet. Es kommt dann eine Fehlermeldung und man sieht den ganzen "Call"! Und bei einem komplexen Parameterlisting kommt da einiges zusammen!!!! Allerdings zeigt der Editor den SPA nicht an! Aber den sieht man ja im .wld File.


Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Barnee schrieb:
Ich beschäftige mich zur Zeit mit einem Projekt, um für die S7 einen C-Compiler zu bauen. Dazu haben sich einige Leute hier aus dem Forum zusammengefunden, die Sache gedeiht.

Etwas ähnliches hatte ich auch mal vor, MC5 code in AWL oder C Kode
zu Übersetzen. Allerdings als ich mich dann mit Hashing und Symboll-
tabellen beschäftigt habe, sah ich das ich dazu noch nicht in der Lage bin.

Aber euer Projekt würde mich denoch interessieren um in dem Quellcode
zur Übung zu lesen.

Habt ihr schon irgendwo ein Projekt angelegt?

cu
Josef
 
@ Josef
Habt ihr schon irgendwo ein Projekt angelegt?

Ein Projekt wurde nicht Angelegt.

Kannst mir ja einmal genauer beschreiben, was Du gerne möchtest, da ich nicht genau verstanden habe, was Du genau willst. Dann kann ich mal gucken, was ich machen kann. der Volker hatte ein paar posts vorher auch etwas nützliches zum Download bereitgestellt. vielleicht hilft dir das weiter.

________
Gruß
Micha
 
Zuletzt bearbeitet:
Ich habe schon einigen Code von AWL in SCL übersetzt.


Ebenso "AWL-Code von SCL-Compiler" in SCL-Code übersetzt.


Ein Vergleich mit beiden erzeugten AWL-Code war exakt möglich.

Lediglich konnte der Befehl "TAK" bereitet beim vergleich Probleme.
(In der Aufrufreihenfolge, Unterschiede bei Berechnung Reihenfolge,
mal mit mal OHNE "TAK" wobei das Ergebnis identisch ist)

Wenn mann die Version und SP identisch hat, wird auch das Ergebnis gleich.


Ich dachte schon mal an ein Schreiben eines "Wandlers", jedoch ist das ziemlich umfangreich.
(Z.b. Schachtelung mehrerer IF / ELSE Befehle)


Dadurch, dass ich den Auftrag für die "Nachbearbeitung" / "Zurückführung" auf den SCL-Code nicht bekommen hatte (Kunde hat die meisten SCL-Quellcodes verloren) ist das Projekt nach 5 Bausteinen "gestorben"

(Vieleicht habe ich zuviel verlangt :rolleyes:, die dachten so an 5 Euro pro Baustein)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi wiebke
Ich würde dir empfehlen, die in AWL geschriebenen Bausteine so zu belassen wie sie sind. SCL kann schon gar nicht alles, was man in AWL ggf. so alles machen kann.

... und in Anlehnung an den Beitrag von Gravieren:

Blödsinn ...
Ich habe bisher keine Funktion aus AWL gefunden, die ich nicht in SCL hätte nachstellen können. Ich muß hier allerdings zugeben, dass es einem bei machen Befehlen nicht ganz leicht gemacht wird (z.B. TAK). Dafür gibt es aber dann auch wieder Funktionalitäten, die sich in SCL um vieles leichter und komfortabler machen lassen, wie in AWL (und sie funktionieren i.d.R. auch gleich). Beispiel hier : Schleifen-Operationen oder umfangreichere Berechnungen.

Gruß
LL
 
mal abgesehen davon, dass dieser Thread eigentlich schon uralt ist ...

für die, die gerne AWL in SCL übersetzen möchten:
Code:
L Zaehler
L Weiterzaehlweite
+I
SPO M001
T Zaehler
M001: NOP 0

oder
Code:
L Alter_Wert
L Neuer_Wert
T Alter_Wert
TAK
-I
T Differenz
 
Ich hab das nicht getestet.
Aber bei gravieren kommt doch wohl immer eine Differenz von Null raus.

Das TAK wechselt doch die Akku Inhalte untereinander. Wo siehst Du da den Unterschied Larry?

Der neue Wert wird von dem alten abgezogen.
 
Wo siehst Du da den Unterschied Larry?
... beim Ergebnis ...
Code:
Differenz := Neuer_Wert - Alter_Wert ;
Alter_Wert := Neuer_Wert + Alter_Wert ;
das wäre meine Variante ...

Variante streichen ... Blödsinn ... ich habe da irgendwo ein "+I" gesehen, das es gar nicht gibt.
Somit ist Karl's Vorschlag richtig (wenn er die Zeilen vertauscht ) ...!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
... beim Ergebnis ...
Code:
Differenz := Neuer_Wert - Alter_Wert ;
Alter_Wert := Neuer_Wert + Alter_Wert ;
das wäre meine Variante ...

Echt?

Wo siehst Du da eine Addition vom alten und neuen Wert?
Ich bin ja eine AWL Null, aber übersichtlich ist das nicht.
 
Zurück
Oben