TIA Rezeptureingaben dynamisch überwachen

blimaa

Level-3
Beiträge
1.011
Reaktionspunkte
114
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

PC Runtime Wincc Advance V14 Sp1

Ich habe mir ein Eingabefenster (Popup) für die Eingabe von Rezepturdaten gebaut (https://www.sps-forum.de/hmi/87425-scrollbares-bild-wincc-tia-advance-runtime.html). Nun müsste ich noch ein paar Werte bei der Eingabe dynamisch überwachen. Das heisst, je nach Eingaben von 3 verschiedenen Feldern auf dieser Seite, müsste dann das Hintergrundbild Rot oder Grün werden. Da die Rezepturvariablen erst nach dem runterladen in die SPS, in der SPS verwendbar sind, müsste ich das wohl per Skript (Eingabe abgeschlossen--> Start Skript) machen. Allerdings finde ich nicht heraus, wie ich EA-Felder von einem Popup auslesen kann. Weiss da jemand bescheid?

Gruss blimaa
 
Hallo blimaa,
wenn ich dich richtig verstehe, hast du doch normale Eingabefelder, in deinem PopUp.

Könntest du nicht, bei den Eingabefeldern mit der Funktion "Eingabe Abgeschlossen",
ein Ereignis aufrufen. Das könntest du z.b. eine interne Variable hochzählen, die dann
ab einen Wert (bei dir jetzt 3) die Animation deines Hintergrundes verändert.

Grundsätzlich müsste doch dein EA-Feld an einer Variablen gebunden sein die du dann
in der HMI irgendwie auswerten kannst, gleich ob dein PopUp aktiv ist oder nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

Du hast es fast richtig verstanden.
Die EA Felder sind im Popup und sind als Rezepturvariablen. Also nicht direkt in der SPS verwendbar. Nun wenn ich ins Feld 1 "100" eingebe und im Feld 2 " 200" eingebe muss ch im Feld 3 überwachen, dass der Wert nicht grösser als Feld 1 und 2 zusammen ist (Rot hinterlegen wenn Feld 1 + Feld 2 > Feld 3 ist)

Gruss blimaa
 
Hallo blimaa,

ich behandle solche HMI-internen Logiken immer mithilfe von Scripten im HMI. Zwei Gründe:
1. Meine Philosophie -> Die SPS steuert die Maschine (und sollte demzufolge auch nur Code hierfür enthalten), HMI-bezogene Logiken etc. (Dazu gehört für mich auch eine Rezepturverwaltung) haben in der Steuerung nichts verloren.
2. Da man nie weiß, in welcher Reihenfolge ein Bediener seine Eingaben vornimmt, kann ich nur mit einem Script alle Eventualitäten sinnvoll abdecken.

Zu deinem Problem:
Ich würde an jedes Eingabefeld eine HMI-interne Variable hängen, ein Script mit deiner Logik (unter Verwendung der zuvor genannten HMI-internen Variablen) erstellen und dies bei jedem Eingabefeld an das Ereignis "Eingabe abgeschlossen" projektieren. Im Script müsste dann auch das Umkopieren in die Rezeptvariablen behandelt werden.
Wenn das Herunterladen der Rezeptvariablen auf Kommando geschieht, kannst du sogar auf die Hilfsvariablen verzichten.


Gruß, Fred
 
Da fahren wir eine andere Philosophie:

Wenn die Werte "Kritisch" sind, dann wird nach dem Schreiben auf einen Übergabe DB in der SPS die Gültigkeit geprüft (und das kannst du dann natürlich an die HMI Rückmelden).
Erst wenn in der SPS die Werte gültig sind werden sie in den entsprechenden DB geschrieben.

Es wir damit wirksam verhindert dass ungültige Werte aus irgendwelchen HMI in die CPU gelangen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hi

Habs nu so gelöst:
bei Eingabe abgeschlossen, schreibe ich den jeweiligen eingegebenen Wert noch zusätzlich in einen DB.
Die 3 Werte überprüfe ich miteinander in einem FC auf plausibilität. Sind die eingegebenen Werte quatsch, blinken die 3 EA Felder Rot, bis die Werte gültig sind.

Habs zuerst mit internen Variablen versucht, scheiterte aber wieder mal am Skript... :-/

Besten Dank für die Ideen

Gruss blimaa


Gesendet von meinem BLN-L21 mit Tapatalk
 
Zurück
Oben