Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 10 von 10

Thema: Vorgehensweise bei Schnittstellenänderung Multiinstanz

  1. #1
    Registriert seit
    23.12.2010
    Beiträge
    43
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    Folgender Sachverhalt: ein Funktionsbaustein wird an anderen Programmstellen als Multiinstanz aufgerufen. Die Daten des Aufrufs werden in einem DB abgelegt. Um das Programm anzupassen sind einige Aktualwerte im DB online verändert worden.
    Nun soll ein weiterer Aufruf dieses Multiinstanz-FB erfolgen, wobei bei dem Baustein, aus dem der Aufruf erfolgt, die Bausteinschnittstelle (statische Variable) um diesen Aufruf ergänzt wird. Für diesen Aufruf müssen die Daten im DB jetzt natürlich auch um diesen Aufruf ergänzt werden.

    Die Möglichkeit, die ich bisher kenne ist, eine Bausteinkonsistenzprüfung durchlaufen zu lassen. Dabei werden im DB die Daten ergänzt. So weit, so gut.

    Um nun die Änderungen an den online geänderten Daten im DB auch offline zur Verfügung zu haben, habe ich mir den DB online aufgerufen, und vor der Konsistenzprüfung abgespeichert. Das Problem: Wenn ich jetzt die Bausteinkonsistenzprüfung durchlaufen lasse, werden die geänderten Aktualwerte wieder mit den Anfangswerten überschrieben!

    Meine Frage lautet deshalb: Gibt es eine Möglichkeit, die Aufrufe im DB zu aktualisieren, ohne die geänderten Aktualwerte zu überschreiben?


    Danke schon mal,
    der Andi
    Zitieren Zitieren Vorgehensweise bei Schnittstellenänderung Multiinstanz  

  2. #2
    Registriert seit
    11.12.2009
    Beiträge
    2.120
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Hallo,

    du gehst in den baustein, der den Baustein aufruft, welcher die Multiinstanzen enthält (logisch oder? xD)

    Dieser wird dort Rot markiert.

    Du drückst auf Datei -> Zugriffe prüfen und aktualisieren

    Dann sollte alles passen!

    Grüße

    Marcel

  3. #3
    Registriert seit
    23.12.2010
    Beiträge
    43
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Marcel,

    ja, so in etwa habe ich das in der Schule auch mal gelernt. Allerdings klappt das nur, wenn Du den Multiinstanz FB änderst, also den FB, der aufgerufen wird. Der Simatic Manager erkennt, daß sich da was geändet hat, und markiert die Aufrufe an den anderen Programmstellen rot.
    Hier ist es allerdings so, daß nicht der aufgerufene FB geändert wird, sondern ein neuer Aufruf programmiert wird. Der aufgerufene FB bleibt somit unverändert.

    Grüße,
    der Andi

  4. #4
    Registriert seit
    13.10.2007
    Beiträge
    12.054
    Danke
    2.793
    Erhielt 3.284 Danke für 2.165 Beiträge

    Standard

    Den Aufruf im STAT Teil deklarieren, neue Zeile einfügen, Namen vergeben, den aufzurunden Baustein bei variabel eintragen. Im Code den Baustein mit den definierten Namen aufrufen. Dann alles speichern, den auruf
    des Mutterhäusern aktualisieren, somit wird der IDB aktualisiert. Zu guter Letzt Bausteinkonstinzprüfung durchführen.

  5. #5
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von Andi2 Beitrag anzeigen
    Meine Frage lautet deshalb: Gibt es eine Möglichkeit, die Aufrufe im DB zu aktualisieren, ohne die geänderten Aktualwerte zu überschreiben?
    Leider nein.
    Aber da dein Instanz-DB nur um einen Baustein erweitert wird und die alte Struktur bestehen bleibt, gibt es einen umständlichen Weg um die Daten zu retten:
    Wichtig das kommende Prozedere vor der Erweiterung machen!
    • Du legst dir einen Global DB an der die gleiche Länge hat wie dein Instanz-DB, der Datentyp ist dabei egal, z.B.: (Array [0..250] of Byte).
    • Diesen DB ins AG übertragen.
    • Im OB1 den SFC20 aufrufen: Eingang: P#DBy.DBX0.0 Byte 250 (DBy ist der Instanz-DB) Ausgang: P#DBz.DBX0.0 Byte 250 (DBz ist der Global-DB)
    • OB1 ins AG übertragen.
    • Nun sollte der Global-DB die Werte vom Instanz-DB haben
    • Als nächstes den SFC20 im OB auskommentieren und erneut übertragen
    • Jetzt kannst du die Erweiterung vornehmen und anschließend den frisch generierten Instanz-DB zur Steuerung übertragen
    • Erneut den OB1 aufrufen und die Auskommentierung rückgängig machen
    • Wichtig vor dem erneuten übertragen Ausgang und Eingang des SFC20 tauschen > sprich die Werte des Global DB werden zurück auf den Instanz-DB geschrieben. Der Instanz-DB ist zwar durch deine Änderung länger geworden das aber ignorieren, die Werte gibt es ja eh noch nicht.
    • OB1 zur Steuerung übertragen, somit sollten die alten Daten wieder vorhanden sein.
    • Abschließend den Aufruf des SFC20 aus dem OB1 löschen und nochmals übertragen.
    • Zu guter Letzt den provisorischen Global-DB Offline wie Online löschen.
    Fertig!
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  6. Folgender Benutzer sagt Danke zu Paule für den nützlichen Beitrag:

    Matze001 (16.03.2012)

  7. #6
    Registriert seit
    11.12.2009
    Beiträge
    2.120
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Genau! Das ist ein wunderschöner Workaround

    Grüße

    Marcel

  8. #7
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.737
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von Matze001 Beitrag anzeigen
    Genau! Das ist ein wunderschöner Workaround
    ...
    Dann sollte man die Anleitung in die FAQ übertragen und das dortige Inhaltsverzeichnis aufnehmen.

  9. #8
    Registriert seit
    23.12.2010
    Beiträge
    43
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Daumen hoch

    Hallo Paule (...und natürlich auch ein Hallo an die anderen...),

    vielen Dank für Deine Anleitung - und Du hast Recht: dieser Weg ist ja wirklich ganz schön aufwendig!!
    Ich kann mir gar nicht vorstellen, daß es dafür keine einfachere Lösung gibt. Ich glaube, da ist es einfacher, die geänderten Aktualwerte im DB nach dem Übertragen von Hand wieder nachzuändern.

    @ rostiger Nagel: Ich glaube, Du beschreibst da einfach eine Programmierung einer Multiinstanz. Vielen Dank trotzdem für die Mühe.

    Wenn jemand noch eine andere Lösung bietet als Paule, dann her damit!

    Grüßle,
    Andi
    Zitieren Zitieren Mercy!  

  10. #9
    Registriert seit
    06.10.2003
    Beiträge
    3.445
    Danke
    453
    Erhielt 509 Danke für 411 Beiträge

    Standard

    Hallo Andi,

    was sind es denn für Werte und wie werden sie online geändert? Parameter wie Sollwerte, Schaltzeiten etc. sind in einem Global-DB besser aufgehoben.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  11. #10
    Registriert seit
    23.12.2010
    Beiträge
    43
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Onkel Dagobert,

    in dem Instanz-DB werden Größtenteils Zeiten für Förderbandantriebe (Soll-, und Istwerte), sowie entsprechende Signalzustände der für diesen Antrieb zuständigen Aktoren festgehalten. Verändert werden, bzw. wurden z. B. Nachlaufzeiten.

    Grüße,
    der Andi

Ähnliche Themen

  1. Vorgehensweise Programmierung S7
    Von Filesharer im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 11.03.2010, 22:19
  2. Antworten: 2
    Letzter Beitrag: 23.03.2009, 17:05
  3. Richtige Vorgehensweise Leitungsbemessung
    Von Toddy80 im Forum Schaltschrankbau
    Antworten: 3
    Letzter Beitrag: 02.11.2007, 15:26
  4. Etws Offtopic. Vorgehensweise bei der Automatisierung?
    Von Tigerkroete im Forum Stammtisch
    Antworten: 2
    Letzter Beitrag: 01.05.2006, 19:21
  5. Antworten: 3
    Letzter Beitrag: 19.07.2004, 14:08

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •