TIA Fehler bei der Temperaturanzeige beim HMI-Display

Rainör

Level-1
Beiträge
20
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen,

ich soll an einem HMI-Display (KTP 700 Basic PN; SPS: S7 1200, CPU 1214C) die Temperatur, gemessen mit einem PT100, anzeigen lassen. Mein Problem war, dass die Temperatur nur unregelmäßig angezeigt wurde. Es wechselte immer zwischen der aktuellen Temperatur und 0. Als ich den Erfassungszyklus in dem HMI-Variablen von 1s auf 100ms einstellte, verschnellerte sich der Wechselvorgang merklich.

Mittlerweile konnte ich das Problem lösen, indem ich die HMI-Variable nicht mehr mit einer PLC-Variable (Datentyp Real) verbunden habe, sondern mit einer Output-Variable (ebenfalls REAL) aus dem Datenbaustein. Meine Frage ist jetzt warum es nun funktioniert und vorher nicht?

Ich hatte keine Clock im Programm verbaut. Weiterhin konnte ich ein Problem mit dem Analogsensor und der Analog-Digital-Umwandlung ausschießen, da ich eine BCD-Anzeige verbaut habe, die ebenfalls über den Sensor und der SPS einwandfrei die Temperatur anzeigt.

Beste Grüße
Rainer
 
Das Panel liest azyklisch zum SPS-Zyklus.
Wird deine Variable irgendwo im SPS-Zyklus zu 0 (z.B. beim Bausteineintritt oder während der Berechnung) kommt es zu diesen Problemen.
Oft ist es sinnvoll für das HMI eigene Variablen zu verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mittlerweile konnte ich das Problem lösen, indem ich die HMI-Variable nicht mehr mit einer PLC-Variable (Datentyp Real) verbunden habe, sondern mit einer Output-Variable (ebenfalls REAL) aus dem Datenbaustein. Meine Frage ist jetzt warum es nun funktioniert und vorher nicht?
Was meinst du mit PLC Variable? Direkt dein Eingangswort?
 
Was meinst du mit PLC Variable? Direkt dein Eingangswort?
Ja, genau. Ich kann ja sowohl HMI-Variablen anlegen als auch direkt die Variablen der SPS (PLC Variablen). Das sind zwei verschiedene Variablentabellen. Ich muss die HMI-Variablen dann mit den PLC-Variablen verknüpfen.

Oft ist es sinnvoll für das HMI eigene Variablen zu verwenden.
Ich hatte eine eigene Merker-Variable in der PLC-Variablentabelle angelegt, die ich dann mit der HMI-Variable verknüpft habe. Das hatte ja nicht funktioniert. Als ich die HMI-Variable jedoch mit einer Output-Variable aus einem Datenbaustein verknüpft hatte, ging es. Am Programm habe ich nichts verändert, außer die PLC-Merker-Variable mit der Output Variable aus dem Datenbaustein zu tauschen.
 
Ich nehme an dass du die Variable mehrfach beschreibst.

im FB zum Beispiel

Wert := 0

Wert := Tempwert

und am Ende
Out := Wert;


Wenn das HMI direkt auf "Wert" schaut kann es sein dass die 0 gelesen wird, wegen dem Azyklischen lesen.
Wenn du auf "Out" schaust, dieser wird einmal im Programm gesetzt und hat so den ganzen Zyklus nur diesen Wert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich nehme an dass du die Variable mehrfach beschreibst.
Ich muss dazu sagen, dass ich in FUP programmiere. Ich hatte die PLC-Variable nur einmal benutzt, also zugewiesen. Sonst hätte es ja wirklich passieren können, dass die Variable im weiteren Zyklusverlauf überschrieben wird und es dann immer vom Zyklusbearbeitungsstand und der Erfassungszeit abhängt, welcher Variablenwert gerade gelesen wird. Also gehe ich nicht davon aus, dass der Fehler dort lag. Oder verstehe ich dich hier falsch?
 
Ich muss dazu sagen, dass ich in FUP programmiere. Ich hatte die PLC-Variable nur einmal benutzt, also zugewiesen. Sonst hätte es ja wirklich passieren können, dass die Variable im weiteren Zyklusverlauf überschrieben wird und es dann immer vom Zyklusbearbeitungsstand und der Erfassungszeit abhängt, welcher Variablenwert gerade gelesen wird. Also gehe ich nicht davon aus, dass der Fehler dort lag. Oder verstehe ich dich hier falsch?
Du kannst ja mal die Verwendungsstellen der Variable zeigen. Dann kann man vielleicht mehr dazu sagen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit TEMP-Variablen habe ich bisher noch gar nicht gearbeitet. Dort sind bei mir keine Variablen erstellt, habe ich gerade nochmal kontrolliert.

Unbenannt.JPG
Nur dort, wo jetzt #Temperaturanzeige drauf ist, hatte ich die Variable verwendet.

Wenn der Grund nicht herausgefunden wird, ist dies jetzt auch nicht so tragisch, weil es jetzt ja funktioniert.
 
Wo und wie ist #Temperaturanzeige deklariert? In was für einem Baustein (FC, FB, OB?) ist der Programmcode? Wie kommt das HMI an den Wert?
Warum soll der Temperaturwert des PT100 nur eingelesen werden, wenn %I0.0 oder %I9.0 TRUE ist?? Wird der Code immer aufgerufen/bearbeitet?

Üblicherweise werden Analogwerte immer eingelesen und skaliert, und nicht nur manchmal. Dann wäre in #Temperaturanzeige auch immer ein gültiger aktueller Wert und man kann das ganze auch immer beobachten. Ob man den Wert nur manchmal braucht und nur manchmal verarbeitet, das ist dem Programm dann freigestellt. Es muß dann auch nicht prüfen, ob da der Wert überhaupt aktuell und gültig ist, weil ja immer eingelesen wird. Die SPS liest auch immer in jedem Zyklus alle Baugruppeneingänge ins Prozessabbild ein (wenn deren Adressen im Prozessabbild PAE liegen) - auch die Eingänge, die im Programm gar nicht verwendet werden.

Harald
 
Wo und wie ist #Temperaturanzeige deklariert? In was für einem Baustein (FC, FB, OB?) ist der Programmcode? Wie kommt das HMI an den Wert?
Warum soll der Temperaturwert des PT100 nur eingelesen werden, wenn %I0.0 oder %I9.0 TRUE ist?? Wird der Code immer aufgerufen/bearbeitet?
Das Programm ist im FB "BCD-Anzeige". #Temperaturanzeige ist eine Output-Variable in dem Instanz-DB vom FB "BCD Anzeige". Mit #Temperaturanzeige funktioniert es ja jetzt unterbrechungsfrei. In den HMI-Variablen habe ich die Output-Variable #Temperaturanzeige mit meiner HMI-Variable verknüpft. Die SPS kommuniziert über eine LAN-Leitung mit dem HMI-Panel. Bei %I0.0 und %.I9.0 handelt es sich nur um einen Wahlschalter, der ein durchgehendes Signal gibt. Die Temperaturübertragung soll nur stattfinden, wenn die Anlage eingeschaltet, also Automatik- oder Handbetrieb TRUE ist. Der %IW80 ist einfach das verarbeitete analoge Signal vom PT100, welches in der Beobachtungsfunktion auch immer durchgehend ein Wert herausgegeben hat.

Vorher als nicht funktionierte habe ich mir in den PLC-Variablen einen Merker erstellt, den ich vorher auf dem Ausgang des DIV-Bausteins gesetzt hatte. Auch hier war in der Beobachtung immer unterbrechungsfrei ein Wert zu sehen. Nur auf dem HMI Display kam das Signal ja nur unregelmäßig an. Als ich den Erfassungszyklus in den HMI-Variablen auf 100ms verkürzt hatte, wechselte die Temperaturanzeige wesentlich schneller zwischen dem Temperaturwert und 0°C.
Wird der Code immer aufgerufen/bearbeitet?
Hier bin ich nicht ganz sicher, was gemeint ist. Ich hatte im Programm nichts programmiert, was den Output des DIV-Bausteins nur teilweise abgreift, zumal es von dort ja direkt auf die HMI-Variable geht.

Gruß
Rainer
 
Zurück
Oben