Step 7 SCL Quelle ändern

Ninja2602

Level-1
Beiträge
271
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

ich möchte eine neue SCL Quelle dem Programm hinzufügen und als Multiinstanz aufrufen.
Die "SCL-Quelle" (FB118) habe ich fertig programmiert und fehlerfrei übersetzt.
Meinen SCL-Baustein möchte ich nun in einem anderen FB als Multiinstanz aufrufen, auch das ist fertig programmiert.
Jetzt meine HEeausforderung, wenn ich speichern möchte bekomme ich die Meldung 30:22

"Beschreibung:
Sie haben die Schnittstelle einer Funktion (FC), eines Funktionbausteins (FB) oder eines anwenderdefinierten Datentyps (UDT) geändert. Falls Sie den Baustein speichern bzw. laden, entstehen Konflikte bei Bausteinen, die diesen referenzieren:
-Nach Änderung einer FC- oder FB-Schnittstelle werden alle Aufrufe dieses Bausteins in rufenden Bausteinen in Expandierter Form oder als fehlerhaft markiert dargestellt. Nach Änderung einer FB-Schnittstelle müssen die vorhandenen Multiinstanzdefinitionen und Instanz-Datenbausteine aktualisiert werden.
-Nach Änderung einer UDT-Definition, die in einem DB, FC, FB oder einer anderen UDT-Definition verwendet wird, entsteht ein Zeitstempelkonflikt. Beim Öffnen der Bausteine, die diesen UDT referenieren wird die UDT-Komponente expandiert oder als fehlerhaft markiert dargestellt und alle Variablennamen durch vom System vorgegebenen Bezeichner überschrieben.
ACHTUNG:
Falss Sie den geänderten Baustein in die CPU laden, kann dadurch die CPU in "STOP" gehen.
Behebung:

Generieren Sie eine AWL-Quelle mit dem zu ändernden Baustein und allen direkt oder indirekt referenzierenden Bausteinen, bevor Sie die Schnittstellenänderung speichern/laden. Speichern Sie anschließend die Änderung in der erzeugten Quelle und Übersetzen Sie danach die angepaßte Quelle zurück in die Bausteine.
"

Der FB in dem ich die SCL-Multiinstanz aufrufe wird im OB1 aufgerufen und hat einen Instanz-DB.
Da ich aber nicht bis zum speichern komme, sehe ich nicht ob ich im OB1 einen Zeitstempelkonflikt habe.

Meine vorherige Suche zu dem Siemens Behebungs Tipp hat mich leider auch nicht weitergebracht.
Folgendes habe ich gemacht:
- den SCL-Baustein compiliert
- die SCL-Quelle aus dem Projekt entfernt
und dann soll der SCL-FB geöffnet und zur AWL-Quelle umgewandelt werden --> hier habe ich den FB geöffnet und dieser ist in AWL, wie wandel ich den jetzt in eine AWL Quelle um?

Und ist das dann schon wirklich alles was ich machen muß?????
 
Also zu allererst solltest du mal eine Bausteinkonsistenzprüfung machen, und zwar VOR allen anderen.
Evtl. reicht das schon, ansonsten gibt es im Bausteineditor noch Features wie "Zugriffe prüfen und Aktualisieren".

Wichtig ist auch, das in dem Zusammenhang:
- Das Projekt im jetzigen Zustand archivieren
- Den Operandenvorrang auf Absolut umstellen (Eigenschaften Bausteinordner)

Ansonsten lade dein Projekt einfach hier mal hoch.

P.S.
Die Siemens Hilfe halte ich laut deinem Zitat eher für Müll.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
wollte Deine Tipps heute morgen testen. Aufgrund eines Stromausfalls hatte sich das erstmal erledigt.
Der Grund warum ich eine neue SCL-Quelle erstellt habe, ist der das ich im Programm an einer Stelle einen Wert bekommen habe den ich nirgendwo dem DB zugeordnet habe. Deswegen wollte ich den Programmteil "neu" machen um zu sehen ob der falsche Wert dann weg ist.
Nach dem der Strom auf der Anlage wieder da war, habe ich den Programmteil nochmal getestet (ohne Programmänderung) und siehe da der falsche Wert ist weg. Hatte sich wohl im Hintergrund irgendwo aufgehangen. Hoffe das kommt nicht nochmal vor.

Die Bausteinkonsistenzprüfung werde ich trotzdem noch durchführen.
 
leider kann ich den SCL-Code immer noch nicht ändern ohne die SPS dabei wohlmöglich in Stopp zu schicken.
...
Ändern möchte ich im SCL Code das Pumweg Array.

Naja, wenn Du den IDB änderst musst Du damit rechnen, dass das Laden nur im CPU-Stopp geht... Das ist halt so.

Wenn hier jemand eine Doku kennt, wo verständlich beschrieben steht, bei welchen Änderungen unter welchen Umständen bei welcher CPU ein Stopp notwendig wird oder auch nicht, wäre ich daran auch interessiert.

Ich hab sowas noch nicht gefunden.

Bei IDB-Änderungen geh ich immer von einem notwendigen CPU-Stop aus.

Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Je nachdem was der FB macht kann man auch den/die Aufruf(e) des FB oder des "Über"-Bausteins deaktivieren (auskommentieren), dann den FB und den/die IDB in die CPU laden und danach den/die Aufruf(e) wieder aktivieren. So kann man ohne CPU-Stop hinkommen. Allerdings erfordert das, daß der Programmierer weiß was er tut und welche Auswirkungen das hat. Besonders zu beachten: gibt es direkte Zugriffe in den IDB von außerhalb des FB?!

Harald
 
Wichtig ist auch, das in dem Zusammenhang:
- Den Operandenvorrang auf Absolut umstellen (Eigenschaften Bausteinordner)

Aus welchem Grund eigentlich?
Ich meine wenn er was an der Schnittstelle ändert wäre es tragisch wenn da erst die absoluten Zugriffe übernommen werden.

Nehmen wir an der Baustein Hat schnittstelle:
Code:
      CALL  #Brandklappe   
       RM_Auf                  :="BAK I".Auf
       RM_Fern                 :="BAK I".Fern

oder

Code:
       U "BAK I".Auf
        = #Brandklappe.RM_Auf
       U "BAK I".Fern
       O Automatik
        = #Brandklappe.RM_Fern

Jetzt macht er unter RM_auf noch ein RM_Zu hin. Da wäre es ja tragisch wenn "BAK I".Fern auf einmal an RM_Zu angehängt ist nur weil das an zweiter Stelle kommt.

mfG René
 
Zuletzt bearbeitet:
Zurück
Oben