Beitragsliste anzeigen
STEP 7 -- S7-Programm erstellen -- Bausteine und Funktionen aufrufen
Welche verschiedenen Bausteinschutzeinrichtungen stehen Ihnen in STEP 7 zur Verfügung, um das Know-How ihrer Bausteine zu schützen?
Wie groß ist die maximale Anzahl der Parameter die an einem FC und FB in der S7-300 CPU vergeben werden können?
Wie kann für selbst erstellte Bausteine ein Bausteinschutz eingerichtet werden?
Tipps und Tricks für den Aufruf und die Parametrierung von SFBs, SFCs und IEC-Standard-Funktionen
Wie erfolgt die Übergabe von Stringvariablen z.B. von einem Datenbaustein an einem Funktionsbaustein?
Informationen zu dem Thema "Bausteine und Funktionen aufrufen"
Wie wird ein zusammengesetzter Datentyp im IN_OUT-Bereich eines FBs programmiert und ein Funktionsaufruf mit einer ARRAY-Variablen parametriert?
Wie können Multiinstanzen erstellt und aktualisiert werden?
Wie können ungültig gewordene Bausteinaufrufe (Zeitstempelkonflikte) in den aufrufenden Bausteinen aktualisiert werden?
Wie erfolgt die Bausteinkonsistenzprüfung nach den Änderungen im STEP 7 Programm?
Wie wird im Programm die Bausteinnummer der "Datentypen für Parameter" ermittelt und wie kann dieser Parameter an einer FC durchgereicht werden?
Was ist der Unterschied zwischen der CALL- und der UC- bzw. CC-Aufrufanweisung?
Welcher Unterschied besteht zwischen einem Instanz- und einem Global-Datenbaustein und wie wird durch einen CALL-Aufruf das DB-Register beeinflusst?
Wie können Multiinstanzen erstellt und aktualisiert werden?
Bestellnummer:

Anleitungen:
Wenn Sie bei Ihrer strukturierten Programmierung sehr häufig Funktionsbausteine verwenden, benötigen Sie für jeden FB-Aufruf einen eigenen Instanzdatenbaustein. Bei sehr kleinen FBs bestehen auch die Instanz-DBs oft nur aus wenigen Worten. Durch den häufigen Aufruf dieser kleinen FBs und die dadurch erzeugten Instanzdatenbausteine wird u.U. Ihr Programm sehr unübersichtlich oder die für Ihre CPU maximal mögliche Anzahl an DBs wird erreicht.

Da ein Instanz-DB wesentlich länger sein kann als für einen FB notwendig ist, gibt es die Möglichkeit, mehrere Instanz-DBs in einer Multiinstanz zusammenzufassen. Eine Bedingung dabei ist jedoch, dass alle zusammengefassten Aufrufe in einem FB programmiert werden. Außerdem muss der FB, den Sie verwenden, multiinstanzfähig sein. Dieser Beitrag enthält die beiden folgenden Anleitungen:

  1. Tabelle 1: Programmierung von Multiinstanzen und Aktualisierung der Aufrufe geänderter Instanzen
  2. Tabelle 2: Nachträgliche Deklaration vorhandener FBs als multiinstanzfähig oder als nicht multiinstanzfähig.

In der Tabelle 1 ist die Vorgehensweise beschrieben, wie Sie eine Multiinstanz programmieren und Aufrufe geänderter Instanzen aktualisieren können:
 
Nr. Vorgehensweise:
1 Erzeugen Sie im SIMATIC Manager den FB, in dem Sie Ihre Multiinstanz anlegen wollen und öffnen Sie ihn. Geben Sie im statischen Bereich der Schnittstelle einen Namen für die Instanz ein, mit der Sie später die Instanz im Programm aufrufen werden. Als Datentyp geben Sie den FB bzw. den SFB ein, den Sie aufrufen möchten.


Bild 01

Bild 01 zeigt ein Beispiel für die Deklaration der Instanz in der Schnittstelle des FBs.

2 Rufen Sie die Instanz in Ihrem Programm auf. Sie können die Instanz entweder aus dem Katalog unter "Multiinstanzen" auswählen und per Drag&Drop in Ihr Netzwerk hinein kopieren oder Sie rufen die Instanz mit der CALL-Anweisung auf.


Bild 02

Hinweis zu STEP 7 V5.4 SP2:
Wenn im KOP/FUP-Editor die Multiinstanzen in der Katalogansicht nicht aufgelistet werden, empfehlen wir Ihnen in der Deklaration einen Funktionsbaustein (als Dummy) bei den statischen Variablen einzufügen und anschließend wieder zu löschen. Die Multiinstanzen sind dann wieder auswählbar.

3 Parametrieren Sie nun die Ein- und Ausgänge des Bausteins und speichern Sie den FB ab. Nun können Sie den FB mit Ihrer Multiinstanz im Programm (z.B. OB1) aufrufen. Dabei wird ein Instanzdatenbaustein angelegt, den Sie auch beobachten können.

Hinweis:
Beim Anlegen von Multiinstanzen achten Sie bitte darauf, dass der FB - der als Multiinstanz aufgerufen wird - immer erst erstellt und dann als Multiinstanz aufgerufen wird. Sollte dieses Vorgehen nicht eingehalten werden, dann kommt es zu Inkonsistenzen im Programm. Diese Inkonsistenzen entstehen auch, wenn eine Multiinstanz geändert wird.

4 Haben Sie Änderungen in einer Instanz durchgeführt, so öffnen Sie anschließend den aufrufenden Baustein. Während dem Öffnen des aufrufenden Bausteins erhalten Sie die Meldungen, dass die Schnittstelle eines UDTs oder einer Lokalvariable deklarierten FBs geändert wurde und das ein Zeitstempelkonflikt bei mindestens einem Bausteinaufruf vorhanden ist. Bestätigen Sie die Meldungen mit OK. Die geänderte aufgerufene Instanz ist im KOP/AWL/FUP Editor rot markiert.

Um den Bausteinaufruf zu aktualisieren, klicken Sie mit der rechten Maustaste auf den Baustein und wählen Sie im anschließend sich öffnenden Kontextmenü die Funktion "Aufruf aktualisieren...".


Bild 03

5 Führen Sie im nachfolgenden Dialog den Schnittstellenabgleich durch, indem Sie mit OK bestätigen.


Bild 04

Hinweis zu STEP 7 V5.3:
Bei der Aktualisierung des Bausteinaufrufes mit der Funktion "Datei > Zugriffe prüfen und aktualisieren" kann die STEP 7 V5.3 keine eindeutige Zuordnung zwischen den Variablen finden und der Aufruf bleibt rot. Auch eine Korrektur über die Aktualisierung des Aufrufes über "Bearbeiten > Aufruf > Aktualisieren" ist dann nicht mehr möglich. Die einzige Möglichkeit den Aufruf zu aktualisieren besteht darin, den Aufruf zu löschen, die Schnittstelle in der Deklaration zu aktualisieren und den Baustein erneut als Multiinstanz aufzurufen. Falls Sie bei einem FB in der Schnittstelle Variablen gelöscht haben, sollten Sie alle Multiinstanzaufrufe über die Funktion "Bearbeiten > Aufruf > Aktualisieren" korrigieren, ohne vorher die Funktion "Zugriffe prüfen und aktualisieren" anzuwenden. Nachdem Sie diese Multiinstanzaufrufe aktualisiert haben, können Sie wieder wie gewohnt die Funktion "Zugriffe prüfen und aktualisieren" verwenden.

6 Wir empfehlen Ihnen, nach der Aufruf-Aktualisierung die Bausteinkonsistenzprüfung durchzuführen. Markieren Sie im SIMATIC Manager den Bausteinordner im S7-Programm und wählen Sie über die rechte Maustaste die Funktion "Bausteinkonsistenz prüfen...". Es wird Ihnen nun die Programmstruktur Ihres S7-Programms dargestellt.

Übersetzen Sie das Programm über die Funktion "Programm > Alles übersetzen" oder über den zweiten Button in der Symbolleiste. Nach der Übersetzung ist Ihr STEP 7 Programm konsistent.


Bild 05

Wenn Sie einen Funktionsbaustein neu erzeugen, so ist in den Bausteineigenschaften standardmäßig die Multiinstanzfähigkeit (Bild 06) eingestellt, die Sie auch ändern können.


Bild 06

Nach dem Erzeugen des Bausteins ist eine nachträgliche Änderung der Multiinstanzfähigkeit nur über Umwege möglich, da Sie den Baustein in den Objekteigenschaften nicht umstellen können. Sie bekommen dort lediglich angezeigt, ob Ihr Baustein multiinstanzfähig ist oder nicht.

In der Tabelle 2 ist die Vorgehensweise beschrieben, wie Sie vorhandene FBs nachträglich als multiinstanzfähig oder als nicht multiinstanzfähig deklarieren können:
 
Nr. Vorgehensweise:
1 Um einen Funktionsbaustein nachträglich als multiinstanzfähig oder als nicht multiinstanzfähig zu deklarieren, öffnen Sie den KOP/FUP/AWL Editor des entsprechenden Bausteins und generieren Sie eine Quelle für den FB über die Funktion "Datei > Quelle generieren...".

Wählen Sie im nachfolgenden Dialog Ihr Projekt aus und speichern Sie die Quelle in Ihrem Quell-Ordner, der sich im S7-Programm befindet.

2 Im Dialog "Quelle <Name_Baustein> generieren" (Bild 07) wählen Sie den Baustein aus der linken Liste, den Sie multiinstanzfähig bzw. nicht multiinstanzfähig machen wollen und fügen ihn mit der Pfeiltaste in die rechte Liste ein. Schließen Sie das Dialogfenster mit "OK".


Bild 07

3 Schließen Sie den KOP/FUP/AWL Editor und öffnen Sie Ihre erstellte Quelle im Quellordner des SIMATIC Managers. Die Multiinstanzfähigkeit ist abhängig vom Eintrag eines Attributes unterhalb der Code Zeile "Version : 0.1".


Bild 08

  • Wenn Sie Ihren FB als multiinstanzfähig deklarieren möchten, löschen Sie das Attribut "CODE_VERSION1"
  • Wenn Sie Ihren FB als nicht multiinstanzfähig deklarieren möchten, geben Sie wie im Bild 08 das Attribut "CODE_VERSION1" ein.

Speichern und übersetzen Sie die Quelle. Ihr Baustein ist nun nachträglich multiinstanzfähig bzw. nicht multiinstanzfähig deklariert.

4 Sie müssen nun alle Bausteine neu übersetzen, die Sie in ihrem gerade multiinstanzfähig bzw. nicht multiinstanzfähig gemachten Baustein aufrufen. Hierzu empfehlen wir Ihnen die Bausteinkonsistenzprüfung durchzuführen (beschrieben in Tabelle 1, Nr. 6).

Download:
Der Download enthält die drei Systemfunktionsbausteine SFB3 "TP", die als Multiinstanzen im FB1 aufgerufen werden. Der Aufruf des FB1 mit seinem Instanz-DB erfolgt im OB 1. Kopieren Sie die Datei "Multiins.exe" in ein separates Verzeichnis auf Ihrer Festplatte und starten Sie die Datei anschließend per Doppelklick. Das Programm wird automatisch entpackt. Anschließend können Sie das Programm mit STEP 7 bearbeiten.

Multiins.exe ( 96 KB )

Ablauffähigkeit und Testumgebung:
Das Beispiel ist einsetzbar auf allen CPU Varianten der SIMATIC S7-300, S7-400, C7 und WinAC. In folgender Tabelle sind die Komponenten aufgeführt, mit denen dieser Beitrag erstellt und die beschriebene Funktionsweise verifiziert wurde:
 
Testumgebung Version
PC-Plattform Intel(R) Pentium(R) M processor 1,73GHz
PC-Betriebssystem Windows XP
STEP 7 V5.4
S7-PLCSIM V5.3

 Beitrags-ID:18723826   Datum:2007-06-22 
Dieser Artikel...hat mir geholfenhat mir nicht geholfen                                 
mySupport
My Documentation Manager 
Newsletter 
CAx-Download-Manager 
Support Request
Zu diesem Beitrag
Drucken
PDF erstellen 
Beitrag versenden
QuickLinks
Kompatibilitäts-Tool 
Hilfe
Online Hilfe
Guided Tour