Step 7 Bitte um Tipps für Diplomarbeit und SCL Compiler

luckyman

Level-1
Beiträge
34
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Sehr geschätzte Programmierer und Programmiererinnen.
Ich bin Diplomand und schreibe gerade meine Diplomarbeit. Sie handelt um eine Heißpresse die mittels Induktion Material erhitzt und anschließend zu Schleifscheiben verpresst.

Die Heißpresse wird mittels SPS gesteuert und hier treten einige Fehler auf.
Die Maschine besitzt einen Wegsensor der den Stempel der Maschine auf und ab bewegen lässt. Wir möchten diesen Weg auslesen und dadurch die Maschine steuern.

Nun zum 1. Problem:
Wir möchten gerne die Eingangsadresse des Wegsensors finden. Doch es gibt einige Komplikationen.

  1. Das Hauptprogramm is in einem FB der in SCL geschrieben wurde und anschließend in AWL umgewandelt wurde. Dies wurde mittels SCL Compiler K05 gemacht. Die Quelle ist jedoch nicht mehr vorhanden. (Wurde von der Programmierfirma gelöscht)
  2. Der Baustein Kann in Step 7 aufgemacht werden jedoch nicht bearbeitet werden weil die maximale Zeilenanzahl überschritten wurde.

Fragen:

  1. Kann der FB zurück in SCL umgewandelt werden?
  2. Der Sensor ist an einem Modul von Siemens angeschlossen kann man dadurch die Adresse herausfinden.
  3. Kann man Die Eingangsadresse irgendwie Herausfinden?

Ich hoffe es kann mir wer weiterhelfen.
Wen jemand eine Idee hat oder mir bei der Arbeit helfen könnte würde es mich freuen.
Bitte melden sie sich unter meiner Email.

Mit freundlichen Grüßen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Für die Schnelle antwort.
Die Adesse kann ich finden ;)
Jedoch sendet der Wegsensor nicht nur den Weg sondern auch den Status und andere informationen...
Wir müssen also die Eingangsadresse für den Weg finden.

Weiters müssen wir für die Diplomarbeit die Umrechnung für den Sensors, da die jetzige Anzeige keine nachvollziehbaren größen anzeigt. (dh. Es werden Werte angezeigt jedoch entsprechen sie keine Weggröße)

Da die Umrechnung jedoch in dem FB umgewandelt werden möchten wir einen Eigenen Baustein programmieren der die Werte anschließend richtig anzeigen lässt.
mfg.

3.PNG
modul.PNG
Diplomarbeit Hardware.jpg
 
Man kann einen AWL-Baustein zumindest theoretisch wieder zurück in SCL übersetzen. Wie genau das der ursprünglichen Quelle entspricht, hängt davon ab welche Funktionen der Sprache verwendet wurden.
So etwas wie AT-Sichten auf Variablen lassen sich nicht wiederherstellen, zumindest nicht mit symbolischem Namen. Dann gibt es bestimmte Schleifenkonstrukte bei denen aus dem AWL-Code nicht mehr eindeutlich rekonstruierbar ist, aus welcher SCL-Anweisung diese nun entstanden sind, da sie die gleiche Sprungreihenfolge der Blöcke erzeugen.

Arbeitet ein Baustein hautpsächlich auf seinen eigenen Daten (In/Out/Stat/Temp Variablen in einem FB), und werden keine komplexen Datenstrukturen wie Arrays oder Strukturen verwendet, ist es aus AWL relativ einfach wieder zurückzuübersetzen.

Je mehr Schleifen, Funktionsaufrufe und komplexe Strukturen enthalten sind, desto schwieriger wird es. Aber zu dem Thema (Decompiler) könntest du eine eigene Diplomarbeit schreiben.
 
Danke auch dir Thomas für deine Antwort :)
Hättest du auch vielleicht noch eine Idee wie ich die Eingangsadresse für den Wegsensor finden kann?
Dies ist das Hauptproblem der Diplomarbeit.

Eine weiters Problem ist das der in AWL umgewandelte FB nicht mehr bearbeitbar ist. Sobald ich im FB etwas verändern oder bearbeiten will kommt die Meldung, dass die maximale Zeilenanzahl überschritten wurde.

mfg.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei SCL-Bausteinen kann es mehrere Probleme geben.
a) Der Compiler kann Anweisungen erzeugen, die der AWL-Editor zwar darstellen aber nicht bearbeiten kann, weil der SCL-Compiler teilweise MC7 (liegt quasi eine Stufe unter AWL) und nicht AWL erzeugt.
b) Das Problem mit der Zeilenanzahl lässt sich nicht umgehen. Da müsstest du den Baustein schon in zwei Bausteine aufteilen. Da kommst du wieder bei Problem a) an.

Denn um den Baustein in zwei aufteilen zu können, musst du wissen was er macht. Dazu musst du dir erst eine AWL-Quelle erzeugen. Das geht nur wenn die Bausteinsprache nicht auf SCL steht. Um das zu machen, musst du in den dBase-Projektdateien etwas manipilieren (z.B. mit Access).

Das geht alles irgendwie, ist aber auch für einen erfahrenen SPS-Programmierer ein ordentliches Stück Arbeit.
 
Du kannst den Baustein speichern mit Quelle generieren.
Dann kannst du in der Quelle nach den 255 Zeilen mit "Network" ein Trennung erzeugen.
So kannst du den Baustein auch Online betrachten.
Wegen der Adresse für den Weg hilft dir die Dokumentation zu dem Bauteil.
In dieser wird die Kommunikation beschrieben, so kannst du aus dem Datenblock die richtige Adresse finden.


Ein Decompiler für SCL gibt noch? nicht, aber wie Thomas geschrieben hat, wäre dies ein schönes Projekt für eine Diplomarbeit.
Wobei so verknotet zu denken wie die Leute von BigS ist ein extra besondere Herausforderung.

Viel Erfolg


bike
 
OK sieht so aus als wäre die Umwandlung nur schwer möglich...

Das Modul an dem das Modul angeschlossen ist heißt "SM 338 POS-INPUT"
Es wäre ein großer Schritt für uns die Eingangsadresse für den Weg des Sensors auszulesen.

Hätten Sie vielleicht einen Tipp wie man dies am besten angeht?
mfg.

Danke für den Tipp bike :)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Du suchst im AWL-Code nach Anweisungen wie:
L EW
oder
L PEW

Evtl. werden auch spezielle FC/SFC aufgerufen um die Daten von der Baugruppe abzufragen.
Sind denn die Symbolnamen der Variablen noch vorhanden?

Ich würde erstmal wie von mir geschrieben eine AWL-Quelle erzeugen. Dann kannst du wenigstens nach bestimmten Anweisungen suchen.
 
Hey Leute hab es geschafft die AWL Quelle zu erzeugen :)
Die Symbolnamen und Variablen sind noch vorhanden.

Ich komme nun zu neuen Fragen (Würde mich freune wenn ihr mir wieder weiter helfen könntet) :

  1. Kann ich nun wieder einen bearbeitbaren Baustein erzeugen? (Wie kann ich das machen)
  2. Kann man in der Quelle auch die Eingangsadresse finden?

Dieses Bild Zeigt einen Teil der Quelle des Bausteis:
Quelle.jpg
Kann es sein das dies die Eingänge und die Umrechnung des Wegsensors ist? :)
mfg.
 
  1. Kann ich nun wieder einen bearbeitbaren Baustein erzeugen? (Wie kann ich das machen)
.

Hast du gelesen was ich dir schrieb?
Den Baustein in Netzwerke teilen und dann mit "CTRL B" neu übersetzen.

Ich denke, um wirklich helfen zu können, brauchen wir die Quelle.

Doch zunächst wie immer:
Habt ihr versucht vom Hersteller Informationen und/oder die Quellen zu bekommen?


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi bike danke :)
Hab versucht die Quelle wieder neu zu übersetzten jedoch werden mir Fehler angezeigt... (15 Fehler, 48 Warnungen)

Es kommt immer der Fehler:
Anweisung nicht erlaubt ür SFC-Befehls-Operanden.
Immer bei den Befehen
  • UC "BLKMOV"
  • UC "FILL"


Wenn jemand lust hat mir zu helfen und eine Herausforderung braucht, könnte versuchen die quelle zu übersetzen.
Wenn jemand Interesse hat bitte bescheid sagen :)

mfg.
 
Zuletzt bearbeitet:
  1. Der Baustein Kann in Step 7 aufgemacht werden jedoch nicht bearbeitet werden weil die maximale Zeilenanzahl überschritten wurde.
Das Problem ist die maximale Zeilenzahl pro Netzwerk. Wenn du ihn in mehrere Netzwerke aufteilst, kannst du ihn bearbeiten. Dazu legst du zunächst eine AWL-Quelle an und fügst den Baustein hinzu. Als Ergebnis erhälst du eine AWL-Quelle (Textdatei mit AWL-Befehlen). Aus dieser kannst du durch Übersetzen wieder den Baustein generieren. Aber du kannst eben vorher ein paar NETWORK Anweisungen einstreuen und so eine Version mit mehreren Netzwerken erzeugen, die dann wieder im "normalen" AWL-Editor bearbeitet und auch beobachtet werden kann.
 
Danke Zottel :)
Das Problem ist die maximale Zeilenzahl pro Netzwerk. Wenn du ihn in mehrere Netzwerke aufteilst, kannst du ihn bearbeiten. Dazu legst du zunächst eine AWL-Quelle an und fügst den Baustein hinzu. Als Ergebnis erhälst du eine AWL-Quelle (Textdatei mit AWL-Befehlen). Aus dieser kannst du durch Übersetzen wieder den Baustein generieren. Aber du kannst eben vorher ein paar NETWORK Anweisungen einstreuen und so eine Version mit mehreren Netzwerken erzeugen, die dann wieder im "normalen" AWL-Editor bearbeitet und auch beobachtet werden kann.

Soweit bin ich schon gekommen. Doch wie gesagt beim Übersetzten treten die oben genannten Fehler auf.
Wie kann ich den Quellkode ins Forum schreiben? Hat nämlich 3658 Zeilen!

mfg.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das mag daran liegen, dass dein Baustein-Ordner keinen SFC20 (BLKMOV) enthält oder dass die symbolische Zuordnung BLKMOV<->SFC20 in der Symbolliste fehlt. Bei FILL ist es SFC21. Um das zu ändern legst du einfach einen beliebigen NEUEN FC an. Darin schreibst du "CALL SFC20". Der AWL-Editor präsentiert dir dann:
Code:
      CALL  "BLKMOV"
       SRCBLK :=
       RET_VAL:=
       DSTBLK :=
Zugleich kopiert er den SFC20 aus der Systembibliothek in deinen Bausteinordner und ergänzt die Symboltabelle.
Dasselbe machst du mit dem SFC21 (FILL).
 
Zuletzt bearbeitet:
Zurück
Oben