WinCC Unified Bitbearbeitung HMI Unified <-> DB IN/Out Schnittstelle

schutti04

Level-2
Beiträge
32
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe seit neuestem folgendes "Problem" :

Ich habe ein Unified HMI (Windows 10 Runtime) , angeschlossen ist eine CPU 1510

Ich habe einen DB , der liegt bei einem FB in der IN/OUT Schnittstelle

Gleichzeitig möchte ich bestimmte Bits aus diesem DB auch im HMI bearbeiten

Kleines Beispiel: Wenn ich im HMI einen gewissen Knopf drücke wird ein Bit gesetzt, damit wird dann ein "Befehl" im FB ausgeführt und in der CPU Werte kopiert, wenn der Kopiervorgang fertig ist wird das Bit von der CPU wieder auf 0 gesetzt

Jetzt ist mir aufgefallen, wenn ich den Knopf betätige, wird das BIT sporadisch vom HMI nicht gesetzt ( bzw. vermutlich von der CPU überschrieben??)
Ich hab dann im FB das rücksetzen in der CPU rausgenommen, sprich das BIT liegt noch in der IN/OUT Schnittstelle , wird aber in der CPU nicht mehr bearbeitet (nur gelesen) , Problem bleibt
Nun habe ich Bits genommen, die zwar in der Schnittstelle liegen aber weder gelesen noch geschrieben werden vom FB, gleiches Problem
Bei ca 10 Betätigungen wird das Bit 6 mal korrekt gesetzt, 4 mal nicht....
Jetzt habe ich den DB einfach aus der IN/OUT Schnittstelle genommen und schon funktioniert es einwandfrei, sobald er wieder in der Schnittstelle liegt , funktioniert es nur sporadisch (obwohl die Bits im FB nicht beschrieben, gelesen werden)

Ich hab jetzt das ganze jetzt erst einmal anders aufgebaut , mich würde jedoch interessieren woran das liegen kann? Mach ich ein Fehler oder ist das ganze ein Siemens Problem?

Vielen Dank für eure Hilfe
 
Naja, ist halt nen Timing-Problem. Die Kommunikation zw. HMI und SPS erfolgt bei S7-400 und S7-1500 (bei S7-300 auch wenn der entspr. Haken gesetzt ist) nicht im Zykluskontrollpunkt sondern "parallel" zur Bearbeitung des SPS-Programms im OB1.

Also je nachdem, wann jetzt das SPS-Programm bzw. das HMI die Variablen gearde liest bzw. schreibt, kann da schon was verloren gehen. Bei IN/OUT natürlich nochmal warscheinlicher als bei IN oder STAT. Selbst bei Global DBs hast Du das Problem u.U. ...

Ganz böse, wenn das jetzt noch keine Einzelbitvariablen sind sondern Bits aus nem WORD. Dann muss das HMI ja erstmal das Wort aus der SPS lesen -> ein Bit verändern -> wieder in die SPS zurückschreiben. Da ist die "Gefahr" nochmal höher, dass da die SPS in der Zwischenzeit die VAriable auch verändert hat...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Okay vielen Dank für deine Nachricht,

Sobald das nicht mehr in der IO Schnittstelle liegt scheint es aufjedenfall besser zu funktionieren, haben jetzt den FB umgebaut und die "Steuerdaten" in den Static Bereich verschoben , es scheint damit aufjedenfall zu funktionieren

Hatten vorher an den anderen Anlagen noch ne 300 am laufen, daher ist das Problem dort wohl nicht aufgefallen

Hatte schon irgendwie erwartet, dass Siemens dort sicherstellt, dass die Infos nicht einfach verloren gehen
 
Es hat auch noch Einfluss, ob der IN/OUT-Parameter als Wert oder als Referenz übergeben wird, und ob "optimiert" oder Standard-Zugriff. Das Thema gab es hier schon sehr oft. suche: Zykluskontrollpunkt HMI
Durch diese unkoordinierten und unkooperativen Zugriffe der HMI Kommunikation bekommt man halt alle so üblichen Probleme der Interprozesskommunikation bei Multitasking. Für Schreibzugriffe muss man eigentlich ein Handshake programmieren.
Und Achtung: nicht auf die Idee kommen, dass irgendwas "sehr unwahrscheinlich" wäre - wegen der sehr häufigen zyklischen Programmabarbeitung der SPS wird alles, was eine Wahrscheinlichkeit > 0 hat, in erlebbarer Zeit auch passieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sobald das nicht mehr in der IO Schnittstelle liegt scheint es aufjedenfall besser zu funktionieren, haben jetzt den FB umgebaut und die "Steuerdaten" in den Static Bereich verschoben , es scheint damit aufjedenfall zu funktionieren
Naja, IN wäre wahrscheinlich schöner, aber das ist Geschmackssache. Auf jeden Fall musst Du sicherstellen, dass auf die entsprechenden Variablen nur vom HMI geschrieben wird und nicht vom SPS-Programm (Ausnahme, rücksetzen von Bits für Buttons nach Bearbeitung oder sowas...)

PS,
Ich habe einen DB , der liegt bei einem FB in der IN/OUT Schnittstelle
schreibt das HMI bei Dir in die INOUT-Variable des Instanz-DB oder hast Du an den INOUT eine Global-DB-Variable drangehangen, wo das HMI draufschreibt?
 
Zuletzt bearbeitet:
schreibt das HMI bei Dir in die INOUT-Variable des Instanz-DB oder hast Du an den INOUT eine Global-DB-Variable drangehangen, wo das HMI draufschreibt?

Moin, hab nen Glob-DB genommen der liegt in der IN/OUT Schnittstelle, in diesem GLobal-DB liegen Daten , die von mehrere FBs bearbeitet werden daher hab ich die in die IN/OUT Schnittstelle gelegt...

Da sich in der Zwischenzeit die FBs geändert haben, waren da noch Daten im Glob-DB im In/Out , die dort eigentlich nicht mehr benötigt werden, habe diese jetzt erst einmal in den Stat-Bereich vom FB gelegt...

werde jetzt schauen wie ich das ganze abändern kann, sodass die Probleme vermindert werden.

Vielen Dank für eure Nachrichten bzw. für Eure Hilfe !!
 
Zurück
Oben