Step 7 SCL /AWL Schreibweise???

bastler

Level-2
Beiträge
258
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ich habe einen FC (in SCL geschrieben) aus der oscat.lib den ich an meine Bedürfnisse anpassen muß. In diesen FC werden noch andere IEC FC's geladen, wie z.B. der FC5. Der FC 5 ist in meinen Projekt aber schon als ein anderer Baustein vorhanden, sodass ich den "Original FC5" in FC 8 umbenannt habe. Durch die Umbennung muß ich nun auch den Oscat-FC anpassen.
Wenn ich den Oscat-FC mit dem Editor öffne, stehen folgende Zeilen, die ich ändern muß:

Code:
UC  FC5
      P#L 54.0
      P#L 58.0

Aus dem FC 5 muß der FC8 werden. Aufrufen kann ich in AWL meines Wissens nur mit "call". Also hab ich folgendes geschrieben:

Code:
call FC8
      I            :=
      RET_VAL :=

Wie lautet für die beiden Parameter die Schreibweise, P#L54.0 wird nicht akzeptiert.

MfG
bastler
 
Warum änderst du den Code nicht in der SCL Quelle?
P#L 54.0 ist ein Pointer der irgendwo hinzeigt. Soetwas wie UC entsteht aus der Compilierten SCL Quelle.
In deinem Fall genügt es wenn du UC 8 schreibst. Dann sollte das Programm funktionieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum änderst du den Code nicht in der SCL Quelle?

Ich hab null Ahnung von SCL. Hab den Baustein zwar mit SCL geöffnet, aber da find ich nirgends Einträge, die ich ändern könnte.
UC 8 funktioniert leider nicht, da weigert sich Step7 das anzunehmen. Wer könnte denn den Baustein in SCL ändern, das wäre super?

MfG
bastler
 
Zuletzt bearbeitet:
Du brauchst in der SCL Quelle keine Anpassungen vorzunehmen, es ist ausreichend die SCL Quelle aus der Oscat Bibliothek in dein eigenes Projekt zu kopieren und diesen neu zu übersetzen.

Bei Übersetzen wird nach dem Symbol für den Baustein "DI_STRNG" gesucht, und die Nummer die in der Symboltabelle dazu gefunden wird im AWL Code eingesetzt.
Viele Bausteine aus der Oscat Bibliothek benötigen noch weitere Bausteine, die musst du ebenfalls in dein Programm übernehmen. Welche das sind stehen in der Übersetzungssteuerdatei (@...).
 
Hallo Thomas
Kannst du mir das alles mal etwas detailierter erklären, ich bin Instandhalter mit SPS-Grundkenntnissen, leider kein Programmierer!

MfG
bastler
 
Danke für deine Hilfe. Es handelt sich um den FC 278 Real_to_STRF. In diesen Baustein werden der FC 2, der FC4, der FC5 der FC17 und der FC77 aufgerufen. FC17 und FC77 können so bleiben. Der FC5 muss FC8 werden, der FC 2 muss FC 20 werden und der FC4 muss FC40 werden.
 
Du öffnest dein eigenes Projekt und die Oscat Bibliothek.

1. Du kopierst aus dem Oscat Projekt aus dem Ordner 'Quellen' das Objekt REAL_TO_STRF in den den Ordner 'Quellen' deines eigenen Projekts

2. Du kopierst aus dem Bausteinordner des Oscat Projekts folgende Bausteine:
FC5, FC2, FC77, FC4, FC17 (das sind alle Bausteine die REAL_TO_STRF benötigt)
und den Baustein FC278, also REAL_TO_STRF an sich, in den Bausteinordner deines eigenen Projektes.

(Info: Der Baustein REAL_TO_STRF ist nur wichtig damit beim späteren Übersetzen das Symbol für den Baustein schon vorhanden ist,
es würde auch reichen das Symbol REAL_TO_STRF mit einer entsprechenden FC-Nummer in der Symboltabelle einzutragen)

Wenn du die Bausteinnummern schon verwendet hast, meldet dir der Simatic Manager die doppelten Nummern, und bieten dir an die Nummer zu ändern.
Das nimmst du an, und änderst die Bausteinnummern auf die von die gewünschten Nummern.

3. Du öffnest in deinem eigenen Projekt im Ordner 'Quellen' das Objekt REAL_TO_STRF.
Im SCL-Editor stößt du das Übersetzen entweder über die Schaltfläche 'Übersetzen' oder über das Menü Datei->Übersetzen an. Wenn er dich fragt ob er den Baustein mit Nummer xy (wahrschenlich 278) überschreiben soll, bestätigst du dieses.

Wenn alles geklappt hat, siehst du im Ausgabefenster als Ergebnis 0 Fehler, 0 Warnungen


PS
Sieht nicht nur umständlich aus, ist es auch. Dieses Siemens Nummernkonzept ist für Bibliotheken unbrauchbar. Bei Codesys ist das wesentlich einfacher handzuhaben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für deine ausführliche Erklärung. Wenn ich morgen auf Arbeit bin, werde ich das ganze mal versuchen auf die Reihe zu bekommen. Klingt alles ein wenig kompliziert, aber mal sehen, vielleicht bekomm ich das ja hin.
Was mir noch aufgefallen ist, der FC77 ist der einzige FC aus der oscat.lib, die anderen sind alle aus der Standard.lib. Spielt das eine Rolle?
 
Zuletzt bearbeitet:
Bei deinem konkreten Baustein nicht.
Bei den Bausteinen die aus der Oscat Bibliothek verwendet werden, muss man aber auch wieder aufpassen ob diese nicht wieder weitere Funktionen aufrufen. Bei dem FC77 (EXP10) ist das aber nicht der Fall.

Mal angenommen EXP10 würde auch wieder irgendwelche FCs verwenden bei denen du die Nummer geändert hast, dann muss man diesen Baustein wie ich es oben beschrieben habe auch wieder aus der SCL-Quelle neu übersetzen.
Weil die Oscat Bibliothek sehr verschachtelt ist, sollte man bei der Verwendung bei Step7 immer aus den Quellen neu übersetzen. Und man sollte die Nummernbereiche aus der IEC-Bibliothek freihalten. Es werden nämlich bei verschiedenen Dingen in SCL die nicht direkt als Funktionsaufruf sichtbar sind, automatisch Bausteine aus der IEC-Bibliothek in dein Projekt kopiert. Bei deinem aktuellen Problem wird z.B. der FC5 (DI_STRNG) aufgrund von DINT_TO_STRING(...) benötigt.
 
@Thomas

Blöd ist, dass die IEC-Bausteine von Siemens gerade die kleinen Nummern belegen, die viele früher brauchten, da die kleinen Siemens-SPS nur FC/FB bis 127 konnten und einige Bausteinen aus Step5 "herübergerettet" wurden. Da habe ich auch immer wieder mit den IEC-Bausteinnummern zu kämpfen. Wenn man sie umbenennt (bei mir +300 addiert), dann ist es wichtig, die Symbole zu belassen, wie sie sind. So kann die Oscat die Symbole finden und man kann die Bausteine neu übersetzen. Auf Grund der starken Verschachtelung der Oscat-Library, habe ich auch schon mal Bausteine zusammengelegt, wenn ich nur eine spezielle Sache benötigte oder den entsprechenden Code adaptiert. Man muß ja nicht immer das Rad neu erfinden.
 
Zuletzt bearbeitet:
Zurück
Oben