TIA WinCC Unified

Lawdy

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

ich arbeite mit TIA V17 Update 4. Ich möchte eine Variable die ich in einem DB schreibe in einem Ausgabefenster anzeigen lassen. Hierbei ist es so, das die Variable skaliert wird von PLC zu HMI in einem Faktor 10 zu 1. D.h. schreibe ich in den DB die Zahl 55 soll in der Visu der Wert 5,5 angezeigt werden. Stattdessen zeigt er mir auf der Visu den Wert 6 an. Dem zu Folge heißt das für mich, dass die Zahl gerundet wird. Als Ausgabeformat verwende ich Gleitkommazahl Automatisch {F}.

1671634955112.png

Wie kann ich nun dieses Problem umgehen dass die Zahl nicht mehr gerundet wird.. danke im Voraus
 
Hier ein ganz frisches FAQ dazu:
Wie stellen Sie in WinCC Unified einen Ganzzahligen Wert in einem E/A-Feld mit Dezimalstellen dar?
( Mein Gott, war das in Protool, WinCC flex & CO noch einfach )
Das folgende Bild zeigt den Integerwert 124, welcher mithilfe eines Skripts entsprechend dem tatsächlichen Wert 12,4 mit Dezimalstellen angezeigt wird.
109816808_Without_Script_with_Script_Overview_01.png

Bild 01

Vorgehensweise
Um einen Integerwert mit Dezimalstellen mithilfe eins Skripts in einem E/A-Feld anzuzeigen, erstellen Sie ein E/A-Feld. Markieren Sie das EA-Feld, klicken Sie auf “Eigenschaften” und befolgen Sie die Schritte 1-8, wie im folgenden Bild dargestellt:
Steps_02_final.png

Bild 02

  1. In der Zeile "Modus", Spalte "Statischer Wert" klicken Sie auf "Eingabe/Ausgabe" und wählen "Ausgabe”.
  2. In der Zeile" Ausgabeformat", Spalte "Statischer Wert" wählen Sie ein Ausgabeformat für einen Gleitkommawert -> z. B. "{F}" (für den Datentyp "Float"). Details dazu finden Sie im WinCC Unified Engineering Handbuch Ausgabeformat).
  3. In der Zeile "Prozesswert", Spalte "Dynamisierung" wählen Sie "Skript".
  4. Geben Sie folgendes Skript ein:
    01
    02
    03
    04
    05
    06
    export function EA_Feld_1_ProcessValue_Trigger(item) {
    var value;
    let tagl = Tags("Data_Integer_Value");
    value = tagl.Read() / 10;
    return value;
    }



  5. Dieses Skript wandelt den Integerwert durch Teilung mit dem Wert "10" implizit in einen Gleitkommawert um. Dadurch wird der Wert im E/A-Feld als Datentyp "Float" ausgegeben.
  6. Klicken Sie auf das "Alarm"-Symbol und fügen Sie einen Trigger hinzu.
  7. Im "Trigger"-Feld wählen Sie "Tags" als Trigger.
  8. Wählen Sie die Prozessvariabl0 "Data_Integer_Value" aus.
Damit stellt das E/A-Feld die entsprechenden Integerwerte in Runtime mit einer Dezimalstelle dar.



Rückgabe eines Eingabewertes über das E/A-Feld an die Integer-Variable
Wenn der Bediener den Wert über das gleiche E/A-Feld ändert, soll der Eingabewert in die Integervariable zurück geschrieben werden.
Um den Eingabewert vom Datentyp "Float" wieder zurück in einem Integerwert zu wandeln, befolgen Sie die Schritte 9-12, wie im folgenden Bild dargestellt:
Steps_03_final.png

Bild 03

9. In der Zeile "Modus", Spalte "Statischer Wert" wählen Sie den Modus "Eingabe/Ausgabe". Klicken Sie auf der linken Spalte, auf den kleinen Pfeil neben "Prozesswert".
10. In der Zeile "Änderung", Spalte "Dynamisierung wählen Sie "Skript".
11. Geben Sie folgendes Skript ein:
01
02
03
04
05
06
export function EA_Feld_1_ProcessValue_OnPropertyChanged(item, value) {

let tagl = Tags("Data_Integer_Value");
tagl.Write(value * 10);

}


Dieses Skript wandelt den eingegebenen Gleitkommawert durch Multiplikation mit dem Wert "10" implizit in einen Integer um. Durch den Befehl "Write" wird der Eingabewert als Integerwert zurückgeschrieben.


Weiterführende Informationen
Zum Erstellen und Verwalten von Code Snippets für WinCC Unified steht Ihnen das Tool “SnippetCreator zu Verfügung”.
Details zum Tool "SnippetCreator" finden Sie im Beitrag:109813399
 
Zuletzt bearbeitet:
Zurück
Oben