Problem mit Lokalvariable

Zuviel Werbung?
-> Hier kostenlos registrieren
So, ich fürchte es ist ein Problem in meiner Entwicklungsumgebung.
Ich habe jetzt einen neuen FB erstellt, dort nur einen SFB5 deklariert und im Code aufgerufen. Dann im OB1 den FB mit neuer Instanz eingefügt.
Nach schließen dem wieder öffnen des FBs ist die Deklarationszeile ROT.
 
@
Wenn du in der Deklaration deines FB's etwas änderst dann MUSST du die Instanz aktualisieren :
Klar, sonst ist auch beim Aufruf im OB die Instanz "ROT".
Du kannst in die Deklaration keine SFC's einfügen sondern nur FB's und/oder SFB's - das ist vermutlich ein Schreibfehler von dir ... aber ich erwähne es hier trotzdem weil deine Angaben teilweise "etwas" konfus sind.
Ja, ist ein Schreibfehler und ja, ich bin bin konfus. Hab den Fehler schon bemerkt.
Ich leite den Baustein mal einem Kollegen weiter ob der mit seinem S7 das gleiche Problem hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist auch nicht normal, daß in der Deklaration im FB der Datentyp "SFB 5" steht. Da sollte "TOF" stehen (und ebenso "TON" anstatt "SFB 4").
Hast Du keine Symbole für SFB4 und SFB5? Sind SFB4 und SFB5 im Bausteine-Ordner?
Wie ist der Symbol/Operanden-Vorrang in den Eigenschaften des Bausteine-Ordners eingestellt?
 
Hast du aus das Standardbilbliotek die SFB4 und SFB5 kopiert und in dein Projekt eingefügt ?
Wie ist der Symbol/Operanden-Vorrang in den Eigenschaften des Bausteine-Ordners eingestellt?
Gute Frage.
Nach Installation von STEP7 ist die Einstellung 'Absolut'.
Das muss man selber auf Symbolisch wechseln.
Absolut verwende ich eigentlich nie.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Ansicht kann man im Editor mit <Crt-Q> zwischen symbolisch und absolut umschalten. Das hat nichts mit dem Vorrang zu tun.

Versuche mal, das Projekt mit "Speichern unter" + Option "mit Reorganisieren" zu speichern. Oder auch einfach nur "Reorganisieren" ausführen.
 
Wenn es in die FB Deklaration Variabeln gibts die mit rot markiert sind, kann ich mir nicht vorstellen dass du auf diese FB online gehen kannst.
Es ist aber so (siehe Bild 5). Deshalb stört es auch eigentlich nicht wirklich. Ich muss lediglich beim Speichern (also wenn Programmcode geändert wurde) Die Deklaration aktualisieren.
Wie ist der Symbol/Operanden-Vorrang in den Eigenschaften des Bausteine-Ordners eingestellt?
links oben Symbole werden bei allen Zugriffen ....
Hast du aus das Standardbilbliotek die SFB4 und SFB5 kopiert und in dein Projekt eingefügt ?
Ich füge eine neue Deklarationszeile ein. dann wähle ich im Dropdown als Datentyp FB aus. Den Einrag <Nr> ersetze ich mit 5 oder 4.
Daraufhin wird die neu deklarierte Variable im Ordner Multiinstanzen angezeigt und ich kann im Code eingefügt werden.
Versuche mal, das Projekt mit "Speichern unter" + Option "mit Reorganisieren" zu speichern. Oder auch einfach nur "Reorganisieren" ausführen.
Hab auch reorganisiert. Keine Besserung.


Ich hab das Projekt mit einemr anderen Step7-Installaion geöffnet. Dort ist das Gleiche.
 

Anhänge

  • Deklarationsfehler5.JPG
    Deklarationsfehler5.JPG
    237 KB · Aufrufe: 23
Es ist aber so (siehe Bild 5). Deshalb stört es auch eigentlich nicht wirklich. Ich muss lediglich beim Speichern (also wenn Programmcode geändert wurde) Die Deklaration aktualisieren.
Vielleicht hat das mit die Adressenpriorität zu tun.

links oben Symbole werden bei allen Zugriffen ....
Das ist nicht was gemeint ist.
Was PN/DP fragt ist ob Projektweit Absolut oder Symbolisch Addresspriorität gewählt ist.
In den Bausteinordner, rechtsklicken .. Eigenschaften öffnen, Reiter Addresspriorität öffnen. Dort kann man zwischen absoluten und symbolischen Priotität wählen. Ich habe immer symbolische Priorität.
edit: Bevor du die Adressenpriorität änderst, speichere dein STEP7 Projekt unter eine neue Name !

Ich füge eine neue Deklarationszeile ein. dann wähle ich im Dropdown als Datentyp FB aus. Den Einrag <Nr> ersetze ich mit 5 oder 4.
Probier bitte die SFBs von das Standardbibliotek in dein Projekt kopieren. Dann erneut die SFBs einzufügen. STEP7 sollte dann die symbolische Namen (TON, TOF, ..) anbieten und anzeigen. Und die untegeordnete Variabeln sollen wie gesagt .IN .PV .ET heissen, nicht IN0, usw..
 
Wenn die SFBs korrekt importiert sind, und die Adresspriorität auf symbolisch eingestellt ist, probier ein Bausteinskonsistenzüberprüfung durchzuführen.
Sei nicht erschreckt wenn es eine grosse Menge von Warnungen erscheint. Einfach die Bausteine in Reihenfolge kompilieren. Nach ein paar durchlaufe kommt es keine Warnungen mehr, und dein Projekt ist konsistent.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mir gibt zu denken, daß nur einige der SFB4/SFB5-Instanzen in der Deklaration rot sind und einige nicht. Da muß einiges im Projekt nicht konsistent sein. Anscheinend wurde auch der FB-Baustein ein oder mehrmals von online aus der CPU (unfachmännisch) ins Projekt zurückgeladen und danach nicht sauber aufgeräumt, möglicherweise gibt es deshalb "solche" und "solche" SFB4/SFB5-Instanzen? Hier muß erstmal solange übersetzt werden bis alle roten Deklarationen weg sind. Möglicherweise müssen dazu auch einzelne Deklarationszeilen zeitweise gelöscht werden und nach einer erfolgreichen Übersetzung wieder neu eingefügt werden. Danach unterscheiden sich die Zeitstempel der offline-Bausteine gegenüber den online-Bausteinen.

Vorsicht: bei dem Reparatur-Übersetzen werden die Instanzen initialisiert (verlieren Aktualwerte!) und das SPS-Programm funktioniert womöglich nicht mehr, wenn die neu initialisierten Instanz-DB einfach in die SPS geladen werden. Daher: vor allen Änderungen mindestens alle Instanz-DB von online sichern (am besten kompletten AG-Abzug), damit man nach den Änderungen noch alle Aktualwerte/Einstellwerte zur Verfügung hat.

Harald
 
Das ist nicht was gemeint ist.
Ich denke schon, dass ich das richtig beantwortet habe. In den Einstellmöglichkeiten gibt es 4 Optionen. Bei mir ist die links oben" Symbole werden bei allen Zugriffen aus der Symboltabelle und den DB aktuell übernommen"(Bild6). Ich hab es nur abgekürzt. Und auch gestern nichts daran verändert.
Aber
Ich hab gestern noch die SFB3, 4 und 5 aus der Bibliothek in meinen Bausteincontainer kopiert. Auffällig war, dass die neuen Bausteine eine Symbolik hatten während sie bei den überschriebenen und restlichen SFBs fehlen (Bild7) .
Heute Morgen wollte ich dann die SFBs nochmal neu in den Programmcode einfügen, musste aber zu meiner Überraschung feststellen, dass beim öffnen meines FBs keine Fehler mehr angezeigt wurden. Das bedeutet eigentlich wäre das Problem gelöst. Ist es schlimm wenn ich nicht auf "Symbol hat Vorrang" umstelle? Ich hab da noch nie was dran verändert. Ich werde jetzt die FBs nochmal aus einer Datensicherung zurück kopieren. Wenn dann der Fehler wieder da ist, lag es zu 100% an diesen "schlechten" FBs. Jetzt schon mal allen Die mir geholfen haben oder es zumindest versucht haben : Danke für eure Zeit!
 

Anhänge

  • Deklarationsfehler6.JPG
    Deklarationsfehler6.JPG
    39 KB · Aufrufe: 10
  • Deklarationsfehler7.JPG
    Deklarationsfehler7.JPG
    75 KB · Aufrufe: 10
Noch ein Nachtrag,
bei der Konsistenzprüfung werden die neu eingefügten SFBs 4,5 u 6 nicht mehr als inkonsistent angezeigt. Die restlichen immer noch (Bild4)
Dann wurde mein Problem eindeutig von den verwendeten inkonsistenten SFBs verursacht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Anscheinend wurde auch der FB-Baustein ein oder mehrmals von online aus der CPU (unfachmännisch) ins Projekt zurückgeladen
Das Projekt habe ich nicht erstellt, sondern übernommen und erweitert. Ich kann daher deine Vermutung weder bestätigen noch verneinen. Bausteine aus dem AG ins Projekt ziehen mach ich im Simatic Step7 (classic) nur wenn sonst nix mehr geht.
 
Ich denke schon, dass ich das richtig beantwortet habe. In den Einstellmöglichkeiten gibt es 4 Optionen. Bei mir ist die links oben" Symbole werden bei allen Zugriffen aus der Symboltabelle und den DB aktuell übernommen"(Bild6). Ich hab es nur abgekürzt. Und auch gestern nichts daran verändert.
Links oben ist Absolut Adressenpriorität. Den Hinweis über STEP7 <V5.2 kapiere ich nicht. Aber es ist definitv so dass wenn man eine bestehende DB Deklaration ändert, werden die verwendete Absolut Adressen behalten. Die Symbole sind nur 'zusätzliche Information'.

Ist es schlimm wenn ich nicht auf "Symbol hat Vorrang" umstelle?
Wenn du eine Variabeldeklaration umänderst, d.h. einfügen oder entfernen von Elemente, dann werden mit Symbolische Priorität die Addressen automatisch nachgezogen. Meiner Meinung nach ist die Programmierung ohne dies gefährlich, weil man erkennt nicht wenn die Adressen verschieben.
Absolut Adressenpriorität verwende ich nur (und dann vorübergehend) wenn ich die Namen von bestehende Variabeln ändern will (warum auch immer). Dann werden die Adressen behalten und die Namen übernommen. Wenn ich damit fertig bin wechsle ich zurück auf symbolische Adressenpriorität.
 
Absolut Adressenpriorität verwende ich nur (und dann vorübergehend) wenn ich die Namen von bestehende Variabeln ändern will (warum auch immer). Dann werden die Adressen behalten und die Namen übernommen. Wenn ich damit fertig bin wechsle ich zurück auf symbolische Adressenpriorität.
Ich mache das genau anders herum. Wenn ich bei der Programmerstellung bin, habe ich die Einstellung auf symbolisch, da ich dann noch Symbole verschieben kann, ohne dass ich mich um Adressen kümmern muss. Wenn alles fertig ist, stelle ich auf Absolutadressierung um, weil damit keine Gefahr mehr besteht, dass sich Bausteincode ändert rein durch öffnen eines Bausteins (Symbol wurde aktualisiert).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab gestern noch die SFB3, 4 und 5 aus der Bibliothek in meinen Bausteincontainer kopiert. Auffällig war, dass die neuen Bausteine eine Symbolik hatten während sie bei den überschriebenen und restlichen SFBs fehlen (Bild7) .
Heute Morgen wollte ich dann die SFBs nochmal neu in den Programmcode einfügen, musste aber zu meiner Überraschung feststellen, dass beim öffnen meines FBs keine Fehler mehr angezeigt wurden.
Dachte ich es mir doch, daß die SFB im Bausteine-Ordner fehlen oder zumindest keine Symbolik haben. Im Bausteine-Ordner fehlende SFB/SFC werden automatisch eingefügt, wenn man die Referenzdaten neu generiert (das mache ich bei fremden Programmen sowieso immer). SFB/SFC mit fehlender oder unklarer/falscher Symbolik lösche ich vorher - die werden dann wieder korrekt neu erstellt.

Ist es schlimm wenn ich nicht auf "Symbol hat Vorrang" umstelle?
Ich würde die Einstellung so stehen lassen wie sie ist. Besonders bei fremden Programmen. Bei Step7 classic arbeite ich bei bestehenden Programmen lieber mit der Absolutadressierung (so wie es bei Dir eingestellt ist).

Harald
 
Zuletzt bearbeitet:
Ich mache das genau anders herum. Wenn ich bei der Programmerstellung bin, habe ich die Einstellung auf symbolisch, da ich dann noch Symbole verschieben kann, ohne dass ich mich um Adressen kümmern muss. Wenn alles fertig ist, stelle ich auf Absolutadressierung um, weil damit keine Gefahr mehr besteht, dass sich Bausteincode ändert rein durch öffnen eines Bausteins (Symbol wurde aktualisiert).
Ich meinte vorher/nachher die Änderung nur von die Namen in eine bestehende Datenstruktur.
Du meinst vorher/nachher die Inbetriebnahme. Das stimmt, es ist eine gute Aufteilung.

Ich finde dass die Anzeige ganz unten in Editor Fenster, welchen Adressenpriorität eingestellt ist, ist viel zu diskret. Da kann man von versehen vergessen wenn man die Adressenpriorität umgestellt hat.
 
Ich denke ich hab verstanden worum es bei diesen Einstellmöglichkeiten geht. Auch hier ist die Hilfefunktion ganz nützlich (hab dazugelernt). Man muss halt nur bei einer entsprechenden Änderung darauf achten was dort eingestellt ist. Da hab ich vorher nie drauf geachtet.
 
Zurück
Oben