-> Hier kostenlos registrieren
Servus,
habe ein Problem mit dem Verständniss was in meinem Programm genau passiert. Und zwar habe ich ein FC erstellt wo 3 Realwerte eingelesen werden, addiert und dann durch 3 dividiert und dann erfolgt die Ausgabe. Diese Ablaufstruktur ist abhängig von einem Wandlung-Start-Signal (ENABLE). Diese FCs werden im OB1 Aufgerufen.
http://img651.imageshack.us/i/fc1.png/
Zum Testen sind die Eingänge mit 1,2,3 bzw. 4,5,6 als REAL geladen. Somit sollte beim ersten FC Aufruf ein Mittelwert von 2 und beim zweiten ein Mittelwert von 5 rauskommen.
Wenn ich das Ergebniss auf ein MW Transferiere dann verhält sich das Programm so wie ich das erwarte. MD12 bzw MD 28 enthalten das Ergebniss.
ENABLE ist auf 1
http://img138.imageshack.us/i/mwaufrufe00ein.png/
ENABLE ist auf 0
http://img97.imageshack.us/img97/5797/mwaufrufe00aus.png
Bis jetzt ist alles Super und Verständlich. Nun habe ich zusätzlich ein DB10 als Globaldatenbaustein erstellt. Dort zwei Variablenfelder von Typ REAL erstellt und schreibe meine Ergebnisse dort rein.
ENABLE auf 1
http://img26.imageshack.us/img26/4743/db1dbd0aufrufe00ein.png
ENABLE auf 0
http://img202.imageshack.us/img202/9114/db1dbd0aufrufe00aus.png
Und genau da liegt mein Problem. ENABLE auf 1 -> FCs werden ständig durchlaufen - das Transferergebniss stimmt. Sobalt ich den ENABLE auf 0 setze schreibt mir die SPS auf DB10.DBD0 das Ergebniss von DB10.DBD4 (zweiter FC Aufruf) rein. Beim MD Transfer pasiert dies nicht - das Programm arbeitet so wie ich es erwarte.
Wo liegt der Unterschied zw Transfer auf ein MD und einen DBx.DBDx ? Was läuft hier schief?
P.S die Antwort von Siemens schreib ich hier besser nicht rein - könnte etwas peinlich sein
habe ein Problem mit dem Verständniss was in meinem Programm genau passiert. Und zwar habe ich ein FC erstellt wo 3 Realwerte eingelesen werden, addiert und dann durch 3 dividiert und dann erfolgt die Ausgabe. Diese Ablaufstruktur ist abhängig von einem Wandlung-Start-Signal (ENABLE). Diese FCs werden im OB1 Aufgerufen.
http://img651.imageshack.us/i/fc1.png/
Zum Testen sind die Eingänge mit 1,2,3 bzw. 4,5,6 als REAL geladen. Somit sollte beim ersten FC Aufruf ein Mittelwert von 2 und beim zweiten ein Mittelwert von 5 rauskommen.
Wenn ich das Ergebniss auf ein MW Transferiere dann verhält sich das Programm so wie ich das erwarte. MD12 bzw MD 28 enthalten das Ergebniss.
ENABLE ist auf 1
http://img138.imageshack.us/i/mwaufrufe00ein.png/
ENABLE ist auf 0
http://img97.imageshack.us/img97/5797/mwaufrufe00aus.png
Bis jetzt ist alles Super und Verständlich. Nun habe ich zusätzlich ein DB10 als Globaldatenbaustein erstellt. Dort zwei Variablenfelder von Typ REAL erstellt und schreibe meine Ergebnisse dort rein.
ENABLE auf 1
http://img26.imageshack.us/img26/4743/db1dbd0aufrufe00ein.png
ENABLE auf 0
http://img202.imageshack.us/img202/9114/db1dbd0aufrufe00aus.png
Und genau da liegt mein Problem. ENABLE auf 1 -> FCs werden ständig durchlaufen - das Transferergebniss stimmt. Sobalt ich den ENABLE auf 0 setze schreibt mir die SPS auf DB10.DBD0 das Ergebniss von DB10.DBD4 (zweiter FC Aufruf) rein. Beim MD Transfer pasiert dies nicht - das Programm arbeitet so wie ich es erwarte.
Wo liegt der Unterschied zw Transfer auf ein MD und einen DBx.DBDx ? Was läuft hier schief?
P.S die Antwort von Siemens schreib ich hier besser nicht rein - könnte etwas peinlich sein