Verwendung und Lesezyklus

Die QuickHMI-Laufzeit liest nicht alle Variablen eines Projekts, sondern nur die, die tatsächlich gebraucht werden. Das hält die Last auf Steuerung, Netz und Server klein: Ein Projekt kann Tausende Variablen enthalten, von denen nur ein Teil angezeigt, protokolliert oder ausgewertet wird.

Ob eine Variable dazugehört, entscheidet QuickHMI anhand fester Kriterien. Das Ergebnis zeigt die Variablenliste in der Spalte Wird gelesen.ab 14.15.2 Die Spalte lässt sich wie die übrigen filtern, und der Tooltip einer Zelle nennt alle Gründe, die auf diese Variable zutreffen.

Variablenliste mit der Spalte „Wird gelesen

Wann gilt eine Variable als verwendet?

Es genügt ein zutreffender Grund:

  • Hat einen Alarm – für die Variable ist ein Alarm konfiguriert.
  • Variable einer internen Datenquelle – Variablen interner Datenquellen werden immer gelesen.
  • Explizit referenziert (Seiten, Regeln usw.) – die Variable ist mit einem Steuerelement verknüpft oder wird in Regeln und Aktionen verwendet.
  • „Lesen erzwingen“ ist an der Variable aktiv.
  • „Lesen erzwingen“ ist an der Datenquelle aktiv – gilt dann für alle Variablen dieser Datenquelle.
  • Wird extern geloggt – Protokollierung in eine Datenbank oder ins Dateisystem.
  • Name kommt in einem Skript oder HTML-Block vor.
  • Passt auf einen Faceplate-Platzhalter.

Editor und Laufzeit bewerten nach denselben Kriterien: Was der Editor in der Spalte anzeigt, gilt auch für das exportierte Projekt.

Skripte und HTML-Blöcke

Für dieses Kriterium durchsucht QuickHMI den gesamten Skript- und HTML-Text nach dem Namen der Variablen. Der Vergleich achtet auf Groß- und Kleinschreibung, und er trifft auch dann, wenn der Name nur ein Teil eines längeren Wortes ist. Daraus folgen zwei Dinge für die Praxis:

  • Ein sehr kurzer oder allgemeiner Name wie Temp gilt schon dann als verwendet, wenn er zufällig in einem anderen Wort im Skript steckt. Die Variable wird dann gelesen, obwohl sie niemand braucht. Eindeutige, sprechende Namen vermeiden das.
  • Wird der Name im Skript zusammengesetzt, etwa aus einem festen Teil und einer Nummer, findet ihn die Suche nicht. Die Variable gilt dann nicht als verwendet. Aktivieren Sie in diesem Fall Lesen erzwingen.

Faceplate-Platzhalter

Ein Platzhalter kann auf mehrere Variablen passen, und alle davon gelten als verwendet. Verglichen wird dabei mit dem vollständigen Namen aus Datenquelle und Variable, also zum Beispiel SPS1.Motor_1_Temperatur. Wie weit ein Platzhalter greift, steuern Sie über die Spalte Zulässige Werte; Einzelheiten dazu stehen unter Platzhalter.

Lesen erzwingen

Mit Lesen erzwingen nehmen Sie eine Variable unabhängig von allen anderen Kriterien in den Lesezyklus auf. Den Schalter gibt es an zwei Stellen:

  • an der einzelnen Variablen, in den allgemeinen Variableneinstellungen,
  • an der Datenquelle, als Spalte Lesen erzwingen in der Datenquellenliste. Damit werden alle Variablen dieser Datenquelle gelesen.

Das ist der richtige Weg für alles, was QuickHMI nicht sehen kann: Variablennamen, die erst zur Laufzeit entstehen, oder Zugriffe von außen über eine Schnittstelle.

Zusammenhang mit der Datenbereitstellung

Stellt QuickHMI Variablen nach außen bereit, greift dieselbe Bewertung: Steht die Vorgabe einer Datenquelle auf Nur verwendete Variablen, werden genau die Variablen bereitgestellt, die nach den oben genannten Kriterien ohnehin gelesen werden. Es entsteht also keine zusätzliche Leselast. Mit Alle Variablen werden dagegen alle Variablen der Datenquelle bereitgestellt und damit auch gelesen. Siehe Datenbereitstellung im Überblick.

Wenn eine Variable keinen Wert zeigt

Zeigt eine Variable zur Laufzeit keinen Wert, lohnt der Blick auf die Spalte Wird gelesen. Steht dort nichts, wird die Variable nicht abgefragt, und die Ursache liegt nicht an der Verbindung zur Datenquelle. Der Tooltip der Zelle zeigt umgekehrt, warum eine Variable gelesen wird, und hilft damit auch beim Aufräumen: Wer die Leselast senken will, erkennt dort, welches Kriterium eine Variable im Lesezyklus hält.