Multiinzanzdaten in DB

Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe das jetzt so verstanden:

Du schaust Dir in der Variablentabelle bestimmte Werte aus dem DB3 an. Dort siehst Du dann bei der gleichen Adresse andere Werte, als wenn Du das im Baustein (FB12 ?) online beobachtest.
Falls das so ist spricht das mit sehr großer Sicherheit für eine Mehrfachverwendung der Variablen. In der VAT wird der Status je nach Einstellung der Triggerbedingung am Zyklusanfang oder am Zyklusende aktualisiert. In der online-Ansicht des Bausteins siehst Du den Wert bei Aufruf des Bausteins. Das würde die Unterschiede erklären.
Sind in dem FB160 wirklich keine Globaldaten? Ich betone noch einmal, dass in einem mehrfach aufgerufenen Baustein (ob Multiinstanz oder nicht) auf keinen Fall globale Variablen adressiert werden dürfen.
Ansonsten lass Dir doch mal die Verwendungsstellen der fraglichen Variablen anzeigen. Dabei auch das Häkchen "Überlappender Zugriff auf Speicherbereiche" setzen.
 
Hallo Ninja2602,
sag mal was meinste, wäre es nicht einfacher für alle du stellst dein Code des FB160 (BT_BHKW) hier rein ?
Was hindert dich ? So ist das etwas für das Orakel von Delphi.
Mir ist nicht klar, hast du nur den BHKW2 als Multiinstanz im Stat bereich des FB12 eingebaut oder auch den BHKW ??

Und würde die Anmerkung von Tigerente1974 nur noch erweitern, dass auch Merker,Timer,Zähler in der
Multiinstanz tötlich sind ( ...der letzte gewinnt).

Und zu guter Letzt, step noch mal durch dein Program im Singel-Mode durch und seh dir die Daten an.
Das ist immer meine letzte Rettung.

Aber immer wieder lerne ich dabei: Ausdruck machen, Kaffee kochen,
weg vom PC(AG) und dann in Ruhe mit dem Bleistift durchs Program....das klappt.

mit Gruß
Michi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber immer wieder lerne ich dabei: Ausdruck machen, Kaffee kochen,
weg vom PC(AG) und dann in Ruhe mit dem Bleistift durchs Program....das klappt.

*ACK*

Hat mir mein Meister in der Ausbildung auch schon gepredigt. Das wirkt auf die Verantwortlichen zwar immer sehr befremdlich, wenn man bei stehender Maschine erst mal in Ruhe einen Kaffee trinken geht, hilft aber meistens wenn man den Wald vor Bäumen nicht mehr sieht.
 
Moin, zuerst einmal den Code von den Bausteinen habe ich doch schon bereitgestellt.
Als zweites muss ich mich kurz entschuldigen da ich eine wichtige Info Zwecks VAT und DB3 vergessen habe.
In der VAT schau ich mir die PEWs an, also die Eingänge die ich an die Multiinstanz lege. Für BHKW und BHKW2 natürlich unterschiedliche.
Im STAT Bereich sind BHKW und BHKW2 als Multiinstanz eingebaut.
 
Wir drehen uns jetzt etwas im Kreis.

Soweit ich sehen konnte, gibt es 2 identische FB (FB160)
Beide verarbeiten PEW am Eingang und geben das Ergebnis als UDT raus. Der DB3 beinhaltet dieses UDT quasi 2x und Du hast die Adressen an die FB angebunden. Die Anbindung sieht übrigens so aus, als würde sie stimmen.

Angenommen der FB160 verarbeitet die PEW auf jeden Fall richtig, muss er das auch mehr als einmal so machen. Daran kann es also nicht liegen. Ohne Code (ganzer FB160) wird das wohl kaum noch zu beurteilen sein.
Ein letzter Tip noch: Tausche doch einmal die Reihenfolge, in der die Bausteine aufgerufen werden. Wenn es doch Globalzugriffe gibt, muss der Fehler mitwandern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

also ich muss Michi da zustimmen - bezüglich des Codes und kann mich auch nicht entsinnen hier außer ein paar (nach meiner Ansicht unvollständigen) Screenshots etwas gesehen zu haben.
Was ich toll fände wäre eine AWL-Quelle von zunächst einmal dem FB160 - dann sehen wir weiter.
Erstellt wird die : mit dem Editor in den Baustein gehen, unter dem Reiter "Datei" die Funktion "Quelle generieren" auswählen, dann unter Objektname einen Namen vergeben, dann den Baustein auswählen (hier FB160) und dann "OK". Die Quelle findest du dann im Projekt unter "S7-Programm\Quellen" unter dem Namen, den du gewählt hast. Den Inhalt davon hier mal einstellen.
Wie sieht es damit aus ?

Gruß
Larry
 
Moin,
ich glaube ich habe die Fehler gefunden.
Die BHKW Adressen sind nicht wie mir mitgeteilt genauso aufgebaut wie beim ersten BHKW. Die High und Low Bytes die von der Profibusschnittstelle kommen sind bei den vier Werten, die mir
nicht wirklich realisitisch vorkamen, andersherum angeordnet. Dadurch wird der Wert dort falsch in den DB3 geschrieben.
Nachdem ich die PEW Adressen getauscht habe habe ich realistische Werte.
 
@ninja2602

Was die Beiden meinen sieht im Schema etwa so aus:

OB1
|
FB1,db1
|
|----------|
BHKW1 BHKW2

der FB 160 wird im FB1 in den Stats als Multiinstanz eingehängt, und bekommt einmal den Namen BHKW1 und einmal BHKW2
Somit brauchst du für dein Programm zusätzlich zum OB1 zwei FBs und einen DB.

Einen FB machst du zur Multiinstanz inden du im aufrufenden FB in den Stats eine Variable deklarierst (BHKW1 / BHKW2).
und als Datentyp FB <nr> auswählst. die <nr> ersetzt du durch deine 160 (FB160 ;) ).

nun rufst du mit call BHKW1 bzw BHKW2 die Multiinstanzen auf.

That's it.


Gruß madvario
 
Zuletzt bearbeitet:
Moin,
ich glaube ich habe die Fehler gefunden.
Die BHKW Adressen sind nicht wie mir mitgeteilt genauso aufgebaut wie beim ersten BHKW. Die High und Low Bytes die von der Profibusschnittstelle kommen sind bei den vier Werten, die mir
nicht wirklich realisitisch vorkamen, andersherum angeordnet. Dadurch wird der Wert dort falsch in den DB3 geschrieben.
Nachdem ich die PEW Adressen getauscht habe habe ich realistische Werte.

Und am Ende sind es doch die Details, die einen schon mal zur Verzweiflung treiben :cool:

Naja, Fehler gefunden und dabei noch was gelernt...
 
Zurück
Oben