Frage bez. Graf 7 und Stat Variable?

J.BORGER

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

Wenn ich eine Stat Variabele in einem FBxxx (Graf 7 Baustein) erstelle (#Test) kann diese dann über den entsprechenden DBxxx von außen abgefragt werden?

z.B.

FB1 (Graf 7)
DB1 (Instandbaustein von FB1)
Aufgerufen im FC1

Meine Stat Variable ist im DB1 (DB1.DBX10.0) #Test
Diese könnte ich dann doch so in einem anderen Baustein als Verknüpfung verwenden.

Jetzt meine Frage:
Wenn ich in meinem FB1 Änderungen mache und sich die Adressen im DB1 neu Organisieren. Wäre das doch dann schlecht weil dann ja die ganzen Verknüpfungen nicht mehr die richtige Adresse hätten (DB1.DBX10.0)?

Allso wäre dieses eine Schlechte Programmierlösung? Wie sollte man es richtig machen ohne einen Merker zu benutzen?

Wie gesagt bin ich anfänger :)

Gruß
BORGER
 
Hallo,

Wenn ich eine Stat Variabele in einem FBxxx (Graf 7 Baustein) erstelle (#Test) kann diese dann über den entsprechenden DBxxx von außen abgefragt werden?

ja, vorzugsweise nur lesend

Jetzt meine Frage:
Wenn ich in meinem FB1 Änderungen mache und sich die Adressen im DB1 neu Organisieren. Wäre das doch dann schlecht weil dann ja die ganzen Verknüpfungen nicht mehr die richtige Adresse hätten (DB1.DBX10.0)?

Allso wäre dieses eine Schlechte Programmierlösung? Wie sollte man es richtig machen ohne einen Merker zu benutzen?BORGER

Stelle auf symbolische Programmierung um, dann werden die Adressen "nachgezogen".

Symbol "Test.Start (alt db1.dbx0.0)
Symbol "Test.Start (neu db1.dbx2.0)
 

Anhänge

  • sym.jpg
    sym.jpg
    31,9 KB · Aufrufe: 10
Zuviel Werbung?
-> Hier kostenlos registrieren
ja, vorzugsweise nur lesend



Stelle auf symbolische Programmierung um, dann werden die Adressen "nachgezogen".

Symbol "Test.Start (alt db1.dbx0.0)
Symbol "Test.Start (neu db1.dbx2.0)

Ich weiß was du meinst. Aber ich kann die Datenadresse nur symbolisch innerhalb des FB1 sehen. Wenn ich jetzt zum Beispiel meinen FC2 aufmache kann ich die Adresse nicht symbolisch finden. Evt. mache ich auch etwas falsch??? Deswegen habe ich mir die Adresse direkt aus dem DB1 hollen wollen.?

Wobei ich da die gefahr sehe das wenn der Baustein wegen änderungen an der Kette neu generiert wird sich die Adressierung der Variabele ändern könnte und ich dann eine Fehlerhafte verknüpfung innerhalb meines FC2 hätte?
 
Kleiner nachtrag:

Innerhalb meines FC2 habe ich überhaubt keine möglichkeit an Stat Variabeln zu kommen. Evt. habe ich etwas im Simatic Manager falsch eingestellt? Version 5.3 SP2.
 
Gib deinem DB1 einen Namen in der Symboltabelle.

PS: im FB gibts auch Out In/Out-Bereiche (Variablen)

dort könntest die benötigten Variablen nach aussen führen, ohne Instanzdatenzugriff von aussen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gib deinem DB1 einen Namen in der Symboltabelle.

Das hat wunderbar geklapt :)

Jetzt bekomme ich es Symbolisch angezeigt:
Beispiel: statt DB1.DBX10.0 angezeigt als "DB1".Test wobei sich Test wohl auf meine Stat Variable #Test bezieht.

Muß ich dann keine bedenken mehr haben sollte sich innerhalb meines FB1 die Adresse von DB1.DBX10.0 auf z.B. DB.DBX33.7 ändern? Und wird dann ebenso im FC3 übernommen aufgrund der Symbolik?

War allso eigentlich ein ganz leichter fehler bis jetzt und bedanke mich noch mal für die so schnelle Hilfe :)
 
Muß ich dann keine bedenken mehr haben sollte sich innerhalb meines FB1 die Adresse von DB1.DBX10.0 auf z.B. DB.DBX33.7 ändern? Und wird dann ebenso im FC3 übernommen aufgrund der Symbolik?

Symbolik Vorrang eingestellt? Sollte keine Probleme machen.

ABER: (und da scheiden sich die Geister)

Auf Instanzdaten von "aussen" zuzugreifen (lesend) --> kann man machen
Auf Instanzdaten von "aussen" zuzugreifen (schreibend) --> nicht gut

Deshalb meinte ich ja, deine Variablen im FB (DB1) nach aussen führen

VAR_OUT: Test --Integer/Word whatever

Dann kannst im FC direkt den Wert am FB abholen (weitere Variable nötig, aber kein IDB-Zugriff)
 
Symbolik Vorrang eingestellt? Sollte keine Probleme machen.

ABER: (und da scheiden sich die Geister)

Auf Instanzdaten von "aussen" zuzugreifen (lesend) --> kann man machen
Auf Instanzdaten von "aussen" zuzugreifen (schreibend) --> nicht gut

Deshalb meinte ich ja, deine Variablen im FB (DB1) nach aussen führen

VAR_OUT: Test --Integer/Word whatever

Dann kannst im FC direkt den Wert am FB abholen (weitere Variable nötig, aber kein IDB-Zugriff)

Ok Danke.

Noch mal ganz kurz: Wenn ich es so mache wie du sagst müßte ich das wie beschrieben als VAR_OUT machen. Diese müßte ich dann aber innerhalb des FC mit einer neuen Variabele verknüpfen. Kann ich dieses dann mit einer Temporäre Variable machen? Weil im FC kann ich ja keine Stat Variabeln nutzen. Desweiteren habe ich mal gehört bei Temp Variabeln soll man Vorsichtig sein. Weiß nur nicht mehr wo da die gefahr liegen soll.

Soory wenn meine Fragen langsame nervem sollten ;)

Gruß
BORGER
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok Danke.

Noch mal ganz kurz: Wenn ich es so mache wie du sagst müßte ich das wie beschrieben als VAR_OUT machen. Diese müßte ich dann aber innerhalb des FC mit einer neuen Variabele verknüpfen. Kann ich dieses dann mit einer Temporäre Variable machen? Weil im FC kann ich ja keine Stat Variabeln nutzen. Desweiteren habe ich mal gehört bei Temp Variabeln soll man Vorsichtig sein. Weiß nur nicht mehr wo da die gefahr liegen soll.

Soory wenn meine Fragen langsame nervem sollten ;)

Gruß
BORGER

Im FC -->Aufruf FB --->Variable aktualisiert--->zurück zum FC--->Variable dort auf Temp. Jetzt ist diese im restlichen (nur da) FC-Ablauf aktuell.

Springst wieder in den FC (2.zyklus) kann die Variable irgendeinen Zustand aufweisen. springst jetzt wieder in den FB --Variable aktualisiert--->zurück zum FC.

Soll heißen. Brauchst du diese Var nur im FC nach dem FB-Aufruf, dann temp ok

Brauchts du die var global, also woanderst im Prog, dann "globaleVar" daraus machen. (Merker,Datenbaustein(bit)...)
 
Zurück
Oben