Auswertung der der Variablen die von der VISU kommen

Tmbiz

Level-2
Beiträge
583
Reaktionspunkte
15
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Leute, ich habe in meinem Projekt einen Effekt den ich so nicht richtig einschätzen kann. Ich habe eine Siemens SPS 1512 und eine VISU 9 Zoll TIA14 mit WinCC Advance. Ich habe in meiner Anwendung eine Alarm Handlin und eine ErrQuit das die Fehler zurück setzt. Aber ich musste immer 4 oder 5 mal auf die Quitt Teste drücken bis die Fehler zurück gesetzt werden. Der Taster befindet sich auf der VISU.

Das Fehler Handling ist bei mir ein FC und ganz am Ende des Programms gibt es ein Zyklus Ende FB in dem ich bestimmte Signale zurück setze. Ich habe dann einfach mal einen Zähler an den Anfang, in die Mitte und an das Ende meines Programms gesetzt und mir dem Taster verbunden. Das Ergebnis war, dass der Taster nicht alle Zähler ausgelöst hat. Denn ich setze den Taster im Zyklus Ende auf 0. Ich dachte aber immer, dass die Signale von den Ein und Ausgängen eingelesen werden und dann erst der nächste Zyklus startet. Aber jetzt sieht es so aus, als ob die Signale im Programm verändert werden auch wenn das Programm schon mitten in der Arbeit ist. Also ich dacht immer es der Zyklus startet, alle Eingänge und Ausgänge auswerten und Programm abarbeiten. Aber so wie ich meine, werden hier die Ein- Und Ausgänge verarbeitet und das Programm startet aber wenn ich sich ein Zustand auf der VISU ändert, wird das mit ins Programm geholt auch wenn es kurz vor Ende des Zyklus ist.

Kann das sein oder habe ich das Falsch verstanden?
 
Hallo Tmbiz,
bitte gehe zu den HMI Variablen und schau Dir an, was du für eine Erffassungszykluszeit eingestellt hast.
Als Standard wird glaube ich eine Sekunde angelegt. 100 ms kannst du ruhig nehmen.
Ich hoffe ich konnte Dir weiterhelfen.
Viel Erfolg
14-08-2017 08-27-09.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der SPS Zyklus wird wegen einer HMI Eingabe nicht unterbrochen.
Grundsätzlich wird ein Prozessabbild der EA Konfiguration erstellt und damit das Programm abgearbeitet.
Was sich währenddessen ändert, kann erst im nächsten Programmdurchlauf verarbeitet werden.
 
Hallo Tmbiz,
bitte gehe zu den HMI Variablen und schau Dir an, was du für eine Erffassungszykluszeit eingestellt hast.
Als Standard wird glaube ich eine Sekunde angelegt. 100 ms kannst du ruhig nehmen.
Ich hoffe ich konnte Dir weiterhelfen.
Viel Erfolg
Anhang anzeigen 38210

Ja das hilft mir auf jeden Fall den Effekt den ich hier habe zu verkleinern. Aber ich würde gerne wissen, ob die Var von Visu vor den Start des Zyklus gelesen werden und dann der Zyklus durch läuft oder ob die Var alle 100ms gelesen werden und gesetzt werden egal wo der Zyklus gerade ist.
 
Die Variable wird nur jede 100 ms an die CPU übertragen und behält solange den Wert, bis sie das nächste mal übertragen wird.
Vor dem Programmstart werden aber nicht alle HMI Variablen abgeholt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der SPS Zyklus wird wegen einer HMI Eingabe nicht unterbrochen.
Grundsätzlich wird ein Prozessabbild der EA Konfiguration erstellt und damit das Programm abgearbeitet.
Was sich währenddessen ändert, kann erst im nächsten Programmdurchlauf verarbeitet werden.

Dann ist es mir aber nicht erklärlich, warum am Anfang des Programms mein Zähler auf die nicht reagiert hat aber am Ende des Zyklus hat ein anderer Zähler den Schalter erkannt.
 
Die Variable wird nur jede 100 ms an die CPU übertragen und behält solange den Wert, bis sie das nächste mal übertragen wird.
Vor dem Programmstart werden aber nicht alle HMI Variablen abgeholt.

Man kann deutlich erkennen, wie die Änderung der Variable am Anfang des Programms nicht erkannt wird aber dann am Ende. Ich habe einen Zähler am Anfang in der Mitte und am Ende. Man kann dann sehen, wie der letzte eine "1" erkannt hat aber die beiden ersten nicht. Das kann doch nicht sein wenn das Prozessabbild verarbeitet wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bitte poste mal dein Code. Sonst kann dir keiner weiterhelfen.

Ok. ich werde die Teile mal raus nehmen, die entsprechend wichtig sind.


Das ist am Anfang:

OB main usw
OB 121
OB83

Das ist am Anfang:
FB Fehler Handling
SET
U "VonZuVisu".Err_Quit
ZV "Tag_4" // hier kann man sehen, das der Zähler die Taste nicht gesehen hat
SET
U "VonZuVisu".Err_Quit
SPBN nors
SET
// alle Fehlerbits löschen
L 0
T %DB3.DBB1
T %DB3.DBW2
T %DB3.DBW4
T %DB3.DBW6
// Dosierfehler löschen
R "AblDB_Dosierung".Fehler_x
L 0
T "AblDB_Dosierung".Fehler_w
// jetzt ist der Quittierwunsch erfüllt.
R "VonZuVisu".Err_Quit
S "Tag_3"



An dieser Position sind verschiedenen Programm Teile USW USW USW




// Das ist am Ende meines Zyklus
SET
U "VonZuVisu".Err_Quit
ZV "Tag_5" // aber hier wurde dann der Zähler um 1 hoch gesetzt.
SET
R "VonZuVisu".ResetAnlage
R "VonZuVisu".StartTaste
R "VonZuVisu".AbbruchTaste
R "VonZuVisu".StoppTaste
 
Man kann deutlich erkennen, wie die Änderung der Variable am Anfang des Programms nicht erkannt wird aber dann am Ende.
Das Problem ist, daß es in der S7-1500 keinen Zykluskontrollpunkt für S7-/HMI-Kommunikation gibt. Deshalb kann und wird sich eine Variable von der HMI mitten im OB1-Zyklus ändern - das muß Dein Programm beachten.
Das Thema und die sich daraus ergebenden Probleme wurde hier im Forum schon oft diskutiert, z.B. hier.


PS: Eine HMI-Variable wird nicht zyklisch in die SPS geschrieben sondern in der Regel nur bei Änderung. Der projektierte Erfassungszyklus hat keinen Einfluß auf das Variablen-Schreiben.

Harald
 
Das Problem ist, daß es in der S7-1500 keinen Zykluskontrollpunkt für S7-/HMI-Kommunikation gibt. Deshalb kann und wird sich eine Variable von der HMI mitten im OB1-Zyklus ändern - das muß Dein Programm beachten.
Das Thema und die sich daraus ergebenden Probleme wurde hier im Forum schon oft diskutiert, z.B. hier.


PS: Eine HMI-Variable wird nicht zyklisch in die SPS geschrieben sondern in der Regel nur bei Änderung. Der projektierte Erfassungszyklus hat keinen Einfluß auf das Variablen-Schreiben.

Harald


Lieber Harald, ich bin die mal wieder zu tiefstem Dank verpflichtet. Ich werde mir das mal anschauen. Hast du einen grundsätzlichen Tipp für mich was ich jetzt beachten muss wenn ich in einer 1500 Programmiere und Var von der HMI nutze?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Selbst einen Zykluskontrollpunkt für HMI-Variablen schaffen ("Prozessabbild HMI"): auf jede HMI-Variable nur 1x zugreifen und umkopieren und falls gesetzt war nur da zurücksetzen, dann nur mit der Kopie arbeiten. HMI-Variablen nie als IN_OUT von FB verwenden, ...

Verfolge mal den verlinkten Thread, da sind von RONIN weitere Threads verlinkt - da sind auch Hinweise und Codebeispiele zu finden. (ich weiß da sind viele Beiträge, Du mußt halt etwas suchen... es gibt keine Lösung für alles, jedes Problem ist anders zu lösen.)

Harald
 
Selbst einen Zykluskontrollpunkt für HMI-Variablen schaffen ("Prozessabbild HMI"): auf jede HMI-Variable nur 1x zugreifen und umkopieren und falls gesetzt war nur da zurücksetzen, dann nur mit der Kopie arbeiten. HMI-Variablen nie als IN_OUT von FB verwenden, ...

Verfolge mal den verlinkten Thread, da sind von RONIN weitere Threads verlinkt - da sind auch Hinweise und Codebeispiele zu finden. (ich weiß da sind viele Beiträge, Du mußt halt etwas suchen... es gibt keine Lösung für alles, jedes Problem ist anders zu lösen.)

Harald

Ok ich will es ja auch lernen und mein Wissen in dem Bereich aufbauen. Danke
 
Zurück
Oben