TIA Zeit eines Zeitglieds über HMI ändern

Maxibinter

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

ich habe folgendes Problem:

Ich möchte bei einem Zeitglied die abzulaufende Zeit immer verändern. Das sollte aber über das HMI also über das Display verstellt werden. Wie kann ich hier eine Zeit-Variable setzen, die ich dann über das HMI immer verändern kann?
1635511672438.png
Also es geht um die hier eingegebenen 20s.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
TON erwartet aber nicht S5Time (S5t#20s) sondern Time (T#20s). Funktioniert das so?

Ich habe in einem DB immer alle HMI-Übergaben, soweit möglich. Dort sind auch Variablen mit "Time" als Datentyp. Diese werden an PT angeschrieben.
In der HMI wird nun diese DB-Variable verlinkt mit einem Feld und dann die lineare Skalierung der Variable eingestellt.
Dabei ist zu beachten das die Steuerung immer im ms-Bereich die Eingabe erwartet. Sende ich also eine 1, dann habe ich T#1ms als Zeit. Soll der Bediener nur Sekunden einstellen können, dann würde die Steuerung 1000 und die HMI 1 als Wert bekommen. Somit wird jede Eingabe 1...20 mit 1000 multipliziert und daher dann auch als T#1s bis T#20s interpretiert.
Dementsprechend kann auch 60000 in der Steuerung und 1 in der HMI bei der linearen Skalierung angegeben werden damit nur im Minutentakt eingestellt werden kann.

Gleichzeitig kann in der HMI an der Variable dann sowohl Ober- als auch Untergrenze angegeben werden damit nur gültige Werte in der HMI eingestellt werden können.
 
Und wie übergebe ich einem DB richtig?
Ich habe jetzt Variablen angelegt mit Typ Time und lese die über eine Eingabe am HMI ein und habe die an das Zeitglied gehängt. Doch irgendwie funktioniert das nicht so wirklich.
1635513500318.png
Hat noch jemand eine Idee was ich falsch mache?
 
Was genau funktioniert denn nicht? Escride hatte eigentlich schon alles zusammengefasst was du machen musst:
- Variable vom Typ Time anlegen
- Die Variable am HMI in einer Variablentabelle einfügen
- In der Variablentabelle in den Eigenschaften der Variable die Lineare Skalierung auf 1000 zu 1 stellen um eine Eingabe in Sekunden zu bekommen
- Am HMi ein EA Feld mit der Variable anlegen und als Time deklarieren


Merker sind da vielleicht nicht optimal, nimm lieber eine Variable in einem Global-DB
 
Du verwedest doppelwörter und den offset ist 4 byte nicht 2 byte. da findet einen überschneitung statt.
Sind die auch als Time deklariert?
In prinzip hast du schon die Variable im Instanz DB. Die kannst du direkt beschreiben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich glaube darin liegt das Problem.
Wie kann ich eine Variable in einem Global-DB erstellen habe das noch nie benötigt 😄
Entweder einen neuen Global DB so wie jeden anderen Baustein auch über die "neuen Baustein einfügen" Funktion einfügen und in dem neuen Baustein dann einen Eintrag machen oder einfach einen bestehenden DB (nicht IDB) öffnen dort einen zusätzlichen Eintrag machen.
 
Hallo.

Mir ist nicht bekannt, welche TIA-Version hier verwendet wird (auch nicht, ob das wichtig ist). Ich möchte jedoch darauf hinweisen, dass die IEC-Timer (jedenfalls die in TIA 13) den Datentyp DInt am Eingang PT akzeptieren und diesen implizit als einen Wert mit der Einheit Millisekunden interpretieren. Lineare Skalierung auf dem HMI könnte somit wegfallen. Stattdessen könnte man dann für die Darstellung des Wertes die Einstellung "Dezimalstellen" verwenden. Ein Wert von 1000 ms würde dann auf dem HMI als 1.000 dargestellt. Vielleicht hilft das ja jemandem.

Mit freundlichen Grüßen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Mir ist nicht bekannt, welche TIA-Version hier verwendet wird (auch nicht, ob das wichtig ist). Ich möchte jedoch darauf hinweisen, dass die IEC-Timer (jedenfalls die in TIA 13) den Datentyp DInt am Eingang PT akzeptieren und diesen implizit als einen Wert mit der Einheit Millisekunden interpretieren. Lineare Skalierung auf dem HMI könnte somit wegfallen. Stattdessen könnte man dann für die Darstellung des Wertes die Einstellung "Dezimalstellen" verwenden. Ein Wert von 1000 ms würde dann auf dem HMI als 1.000 dargestellt. Vielleicht hilft das ja jemandem.

Mit freundlichen Grüßen
Als 1000 , ohne Punkt wird er dargestellt. Es sind Ganzzahlen
 
Hallo.

Mir ist nicht bekannt, welche TIA-Version hier verwendet wird (auch nicht, ob das wichtig ist). Ich möchte jedoch darauf hinweisen, dass die IEC-Timer (jedenfalls die in TIA 13) den Datentyp DInt am Eingang PT akzeptieren und diesen implizit als einen Wert mit der Einheit Millisekunden interpretieren. Lineare Skalierung auf dem HMI könnte somit wegfallen. Stattdessen könnte man dann für die Darstellung des Wertes die Einstellung "Dezimalstellen" verwenden. Ein Wert von 1000 ms würde dann auf dem HMI als 1.000 dargestellt. Vielleicht hilft das ja jemandem.

Mit freundlichen Grüßen

Es geht ja darum, dem Bediener es möglichst einfach zu machen und dabei ist es bis zu einer Zeit von <= 32s noch irrelevant, ob INT oder DINT. Ich skalieren zum Beispiel immer in der CPU, da dieses schneller zu finden ist.
 
Hallo.

Die Darstellung des DInt-Wertes 1000 würde unter Anwendung der Einstellung "Dezimalstellen" = 3 auf dem HMI-Gerät als 1,000 angezeigt werden. Es ist bloß eine Darstellung.

Mit freundlichen Grüßen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Auf einer 300er CPU hab ich da mal so gemacht. Werte auf Unter Obergrenze begrenzen. und unten auf ein Format wandeln, das die 300 versteht.
Der Bediener gibt einen INT-Wert ein. DB1.DBW164 liegt dann auf dem Zeitbaustein. Vermutlich ist es aber viel zu kompliziert.1638889847367.png
 
In Deinem Netzwerk 10 die zwei Anweisungen
Code:
L W#16#FFF
UW
sind sinnfrei und völlig überflüssig. Die kannst Du weglassen.
Vor dem ITB müsstest Du prüfen und ggf. limitieren, daß der Wert im Bereich 0...999 ist. Nach dem ITB brauchst Du nicht mehr mit 16#FFF die höchsten 4 Bits ausblenden, weil da dann sowieso nur max 16#999 rauskommt.

Harald
 
Zurück
Oben