WinCC TIA 13 Advanced symbolisches EA-Feld Verständnisproblem

steve01

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

bin relativ neu im TIA-Portal und habe ein Verständnisproblem. Habe ein symbolisches EA-Feld angelegt mit einer Textliste 0-59. Will damit einer Variablen in der Steuerung die Minuten vorgeben. Anschließend soll im EA-Feld dieser Wert stehen. Ist dies der Standard oder muss ich über ein Ereignis nach abgeschlossener Eingabe noch etwas zuweisen? Habe leider noch keine Steuerung da zum Testen und wenn ich nur die Visualisierung teste, dann stehen-egal bei welcher Eingabe-immer die Nullen.

Vielen Dank.
 
Kommt drauf an wann Du die Eingabe auswerten willst. Du könntest z.B. mehrere EA-Felder zum Einstellen der Eingaben haben und eine Schaltfläche "Übernehmen", und erst diese Schaltfläche löst eine Verarbeitung der Eingabewerte aus.

Zum Testen könntest Du als Prozessvariable für das symbolische EA-Feld eine Panel-interne Variable nehmen und ein zweites numerisches EA-Feld auf die selbe Variable zum Anzeigen/Ändern der Wertes des symbolischen EA-Feldes.

Hat Dein TIA-Portal auch PLCSIM? Damit könntest Du Deine nicht vorhandene CPU simulieren und Deine Panel-Simulation (bzw. die Runtime) könnte mit der simulierten CPU arbeiten.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,
wenn ich es im TP als interne Variable anlege, wird der ausgewählte Wert in die Variable gespeichert und bleibt auch im EA-Feld angezeigt, so wie es sein soll. Wenn ich jedoch eine externe Variable der SPS auswähle, sehe ich im PLC-Sim, dass der Wert bei 0 bleibt. Es wird also nicht in der SPS gespeichert. Habe schon mit verschiedenen Ereignissen probiert, aber ich kriege den Wert des symbolischen EA-Feldes nicht in die SPS-Variable.
 
Dann ist vermutlich die PLC-Variable (oder "HMI"-Variable?) oder die Verbindung zur PLC nicht korrekt angelegt - da kenne ich mich mit TIA allerdings nicht aus.

Vermutlich wird von der HMI-Runtime die Verbindung zur PLC (bzw. PLCSIM) garnicht aufgebaut. Mache Dir mal in das "Globale Bild" ein Meldefenster für Systemmeldungen (oder alle Meldeklassen) und in irgendein Bild eine Meldeanzeige für Meldeereignisse der Systemmeldungen (oder alle Meldeklassen) rein, damit Du eventuelle Runtime-Meldungen auch sehen kannst.

Vielleicht wird auch die Variable in der PLC im PLC-Programm immer wieder mit 0 überschrieben? Was ist das für eine Variable/Adresse?
Setze mal die (simulierte) PLC in STOP - läßt sich die PLC-Variable dann ändern oder bleibt sie weiter auf 0?

Harald
 
Also ich habe heute getestet. Die Verbindung wird korrekt aufgebaut zwischen der simulierten SPS und dem simulierten Panel. Ich denke es ist irgendein banales Problem, aber ich stehe ziemlich auf dem Schlauch. Die Liste zur Zeiteingabe habe ich mal angehängt. Die Werte sollten gleich in die Variablen beim Klick geschrieben werden ohne extra Button. Die Werte sind INT. Das symbolische EA-Feld ist als Ein-/Ausgabe angelegt mit der Prozessvariablen in der SPS (INT). Im Programmbaustein ist die Variable ein In/Out. Wenn ich die beiden Sachen simuliere und die Variable in der Steuerung beobachte passiert folgendes. Wenn ich in der Liste eine Wert auswähle, sehe ich ihn 1 Sek im EA-Feld, vermutlich weil die Aktualisierung jede Sekunde passiert, dann springt er wieder auf 0.

Jetzt habe ich um alles andere ausschließen zu können, ein einfaches Test-EA-Feld angelegt ohne Textliste und eine Testvariable in der Steuerung vom Typ INT. Das Feld ist wieder Eingabe/Ausgabe und die Variable der Steuerung hat die Adresse %EW0. Wenn ich einen Wert ins Feld eingebe, bleibt die Variable in der Steuerung 0, im EA-Feld nach 1 sek auch wieder 0. Wenn ich das Feld nur als Eingabe einstelle, bleibt der Wert im Feld angezeigt die Variable 0. Wenn ich jedoch die Adresse der Variable zu %AW0 ändere, und das Feld als Eingabe lasse, kann ich einen Wert eingeben, der im Feld stehen bleibt und in der Variablen gespeichert ist. Wieso geht das mit %AW und nicht mit %MW und %EW? Ich möchte doch den Wert als Eingabe haben? Wenn ich das Ganze mit Bool als Variable mache, funktioniert es problemlos.Zeitliste.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es macht normalerweise keinen Sinn, Eingänge bzw. die Prozessabbilder der Eingänge %E... vom HMI zu beschreiben, weil diese Variablen alle paar Millisekunden von der CPU mit dem Wert der realen Baugruppe überschrieben werden. Mit etwas Glück kann man vielleicht den einmaligen Schreibzugriff der HMI kurzzeitig sehen, doch ein paar ms später ist der Wert schon wieder überschrieben. Deshalb hatte ich Dir auch empfohlen, die CPU in STOP zu setzen, dann hättest Du gesehen, daß bei CPU-Stop der Wert in %EW.. erhalten bleibt.

Man sollte sich angewöhnen, vom HMI grundsätzlich nur über Variablen in Datenbausteinen mit der CPU zu kommunizieren. Das ist auch besser für die Übersicht und die Dokumentation, wenn die HMI-Variablen schön zusammengefasst in sogenannten Koppel-DB stehen, als wenn die HMI kreuz und quer überall in den PLC-Variablen 'rumschmiert.

Harald
 
Da gebe ich PN/DP recht. Man sollte zwischen SPS und HMI bzw. Leitwarte immer DB Adressen nehmen. In deinem Fall wird das wie eine Doppelte Variablenbelegung sein. D.h. Das Panel und die SPS beschreiben die Variable gleichzeitig. Wenn du sozusagen einen Wert vor gibst dann überschreibt die SPS n paar ms später wieder den Wert mit dem Aktualwert.

Sony Z3 über TapaTalk
 
@Harald: Sorry ich bin gestern immer bloß sporadisch dazu gekommen und da hatte ich den Hinweis mit dem auf Stop setzen inzwischen wieder verdrängt, weil ich erstmal die HMI-Verbindung getestet hatte. Du hattest recht. Bei Stop bleibt der Wert.
Also nochmal danke für die Hinweise. Meine letzen Steuerungen sind 15 Jahre her und deshalb klemmt es hier und da -mit HMI hatte ich noch nie etwas zu tun.
Euer Hinweis mit dem Koppel-DB war gut. Ich habe das jetzt so gelöst:
HMI-Variable <-> Koppel-DB <-> FB in der SPS
Ich kann das nur immer noch nicht nachvollziehen, warum das vorher nicht ging. Da hatte ich es so:
HMI-Variable <-> PLC-Variable <-> FB in der SPS wobei ich die PLC-Variable nur in dem FB als Eingang verwendet habe und dachte der Wert wird im Instanz-DB gespeichert. Einen weiteren Zugriff gab es nicht, dass vom Programm her eine 0 hätte geschrieben werden können.

Vielen Dank nochmal.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kann das nur immer noch nicht nachvollziehen, warum das vorher nicht ging. Da hatte ich es so:
HMI-Variable <-> PLC-Variable <-> FB in der SPS wobei ich die PLC-Variable nur in dem FB als Eingang verwendet habe und dachte der Wert wird im Instanz-DB gespeichert. Einen weiteren Zugriff gab es nicht, dass vom Programm her eine 0 hätte geschrieben werden können.
Wie PN/DP schon schrieb. Die Eingänge werden bei jedem OB1 Zyklus neu geladen. Da das HMI azyklisch auf die cpu zugreift steht manchmal wahrhaftig was für 1 OB1-Zyklus was in deinem EW.
 

Anhänge

  • Zwischenablage01.jpg
    Zwischenablage01.jpg
    178,9 KB · Aufrufe: 19
Ich kann das nur immer noch nicht nachvollziehen, warum das vorher nicht ging. Da hatte ich es so:
HMI-Variable <-> PLC-Variable <-> FB in der SPS
Das ging deshalb nicht, weil die PLC-Variable im Prozessabbild real existierender Eingänge lag - sprich: eine Adresse %E... hatte.
Diese %E... Variablen werden vor jedem OB1-Aufruf von der Firmware der CPU mit den Werten von den Eingangsbaugruppen überschrieben. Deshalb hat ein Schreiben in diese Variablen keinen Bestand.

Harald
 
Jetzt hab ich es verstanden. Ich war der Meinung eine Eingabe im HMI ist gleichwertig einem realen Eingang.
Ich danke allen die der Erkenntnis beigetragen haben :)
 
Zurück
Oben