Beckhoff TwinCat Visualisierung, REAL Wert mit nur einer Kommastelle anzeigen

Parallax

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

ich habe mit TwinCat PLC Control eine Visualisierung erstellt. Dabei wird ein RealWert angezeigt, diesen kann man auch per Eingabe verändern. Allerdings ist es nun möglich, dass der Benutzer über die Tastatur einen Wert wie 25,4567 eingibt. Allerdings soll nur eine Kommastelle angezeigt werden, also bei genannter Eingabe entweder 24,4 oder gleich gerundet auf 25,5. Im Feld für Text habe ich %s eingetragen. Ich habe gehört, dass man diesen Platzhalter irgendwie modifizieren kann, dass er nur eine Kommastelle anzeigt. Weiß jemand wie das geht?

Grüße,

Parallax
 
%.1f würde dir nur eine Stelle nach dem Komma anzeigen. Orientiert sich an der C-Notation

Unbenannt.png
 
Zuletzt bearbeitet:
Ok, verstanden....

Nun bin ich jedoch gerade auf ein zweites Problem gestoßen.
Ich setze bei einem Klick auf einen Button einen Nullpunkt Offset, dieser soll natürlich bei Stromausfall erhalten bleiben. Also habe ich die intVariable die den Offsetwert enthält in VAR RETAIN geschrieben. Auch VAR PERSISTENT habe ich schon probiert. Allerdings ist die Variable nach Stromausfall immer wieder 0. Die angeschlossene Hardware ist ein CP6606. Mach ich da irgendetwas falsch? Die RETAIN bzw PERSISTENT Variablen stehen im MAIN Baustein. Soweit ich gesehen habe, wird RETAIN als remanent gespeichert, allerdings bei Download wieder auf 0 gesetzt. PERSISTENT sollte nur durch Urlöschen wieder auf 0 wechseln. Allerdings funktioniert das irgendwie scheinbar nicht. Muss man dafür noch irgendetwas einstellen?

Grüße,
Parallax
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, verstanden....

Nun bin ich jedoch gerade auf ein zweites Problem gestoßen.
Ich setze bei einem Klick auf einen Button einen Nullpunkt Offset, dieser soll natürlich bei Stromausfall erhalten bleiben. Also habe ich die intVariable die den Offsetwert enthält in VAR RETAIN geschrieben. Auch VAR PERSISTENT habe ich schon probiert. Allerdings ist die Variable nach Stromausfall immer wieder 0. Die angeschlossene Hardware ist ein CP6606. Mach ich da irgendetwas falsch? Die RETAIN bzw PERSISTENT Variablen stehen im MAIN Baustein. Soweit ich gesehen habe, wird RETAIN als remanent gespeichert, allerdings bei Download wieder auf 0 gesetzt. PERSISTENT sollte nur durch Urlöschen wieder auf 0 wechseln. Allerdings funktioniert das irgendwie scheinbar nicht. Muss man dafür noch irgendetwas einstellen?

Grüße,
Parallax
 
Für den CP gibts als Option 128KByte NOVRAM. Dahin kann Mann solche Variablen gut speichern. Dazu werden einfach die remanent gewünschten Variablen als Ausgangsvariablen gemappt und dem NOVRAM zugewiesen.
Sollte die Option nicht verbaut sein: Da gibt es auch eine NOVRAM-Klemme.
 
Hi, hab das Problem gefunden... Das CP6606 hat keine eingebaute 1 Sekunden USV, somit kann bei Stromausfall der Wert nicht auf die SD Karte geschrieben werden. Allerdings kann ich mit einem Funktionsbaustein beim Nullpunktabgleich die Daten manuell auf die SD Karte schreiben.
Daraus resultiert natürlich (wie immer) ein neues Problem: Ich müsste auch noch eine Werteingabe in der Visualisierung remanent setzen. Allerdings gibt es ja scheinbar keine Option wie var.onChange... Somit weiß ich nicht bei welchem Ereignis ich den Funktionsbaustein zum Schreiben der persistenten Daten aufrufen soll. Hat da jemand eine Idee?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man könnte sich in einer zweiten Variable merken welchen Wert der Visu-Eingabewert hat und die beiden Werte vergleichen. Wenn unterschiedlich und nicht im ersten Run-Zyklus dann die Schreibfunktion aufrufen.

Harald
 
Mit der NOVRAM-Klemme sollte das einfach gehen: Die Variable wird zyklisch in den NOVRAM übertragen und beim Systemstart automatisch wieder initialisiert. Dafür brauchts die 1s USV nicht.
 
Auf die Lösung mit den zwei Variablen kam ich auch.... Das funktioniert insoweit ganz gut...

Allerdings hab ich nun daraus wieder ein seltsames Verhalten:

die Variable bMan kontrolliert ob eine Automatik aktiv ist, oder manuelle Steuerung.
Diese ist als Toggle mit einem Schalter in der Visu verknüpft. Ist sie True läuft ein Programmzweig auf Automatik, bei False auf Manuell. Steht diese Variable im normalen Deklarationsteil funktioniert alles wunderbar. Stell ich diese Variable in den persistenten Teil, funktioniert die Umschaltung beim Programm Load auch noch. Trenne ich dann den Strom und starte die Steuerung wieder, werden alle persistenten Variablen geladen, nur die bMan wird nach jedem Zyklus auf FALSE gesetzt. Schiebe ich die Variable wieder zurück in den normalen Deklarationsteil, funktioniert alles wieder.

Im Button ist steht die Variable unter Toggle mit
MAIN.bMan
drin...

Beim klicken wird sie mit

IF bMan_save <> bMan THEN
fPersistent_Write;
bMan_save:=bMan;
END_IF

geschrieben.

Da ist alles noch kein Problem, nur beim nächsten Zyklus wird sie wieder auf FALSE gesetzt. Beim ersten Start des Systems funktioniert die Funktion jedoch noch einwandfrei... Erst nach Neuanlauf nach Stromausfall kommt dieses Verhalten.

Grüße,
Parallax
 
Zurück
Oben