Warnungen Grenzwerte WinCC flexible 2005

CrazyCat

Level-1
Beiträge
683
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe ein merkwürdiges Problem mit WinCC flexible:

Ein Wert soll innnerhalb bestimmter Grenzen eingegeben werden können.
Dazu wird aus dem Stammwert über einen Prozentsatz die Grenzwerte errechnet.

Das Problem ist das WinCC flexible das Skript vollständig ignoriert.

Es werden weder die Grenzwerte berechnet, noch wird ein Merker gsetzt oder gar eine Meldung ausgegeben.


Die Grenzwerte sollten aus Formeln wie z.B.

Grenzwert_oben = int (Stammwert * (1 + Toleranz/100)) errechnet werden.

Alle Werte sind interne Variablen, die in WinCC flexible erstellt wurden. Alle diese Werte sind vom Typ INT.

Selbst wenn ich die Werte manuell eingebe und auf die Berechnung verzichte, werden die nachfolgenden IF - Anweisungen nicht ausgeführt.


Kann mir jemand sagen wo das Problem liegt bzw. wo ich zu suchen beginnen soll?
Das Skript soll/muss beim deaktivieren des EA - Feldes ausgeführt werden.
 
wird das script denn aufgerufen (funktion: beim feld verlassen)?
ohne das script zu sehen, kann man nicht viel dazu sagen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das erste Problem das es zu lösen gilt ist die fehlende Berechnung.

Es werden 6 Berechnungen durchgeführt:

Grenzwert_oben1 = int (Stammwert1 * (1 + Toleranz/100))
Grenzwert_oben2 = int (Stammwert2 * (1 + Toleranz/100))
Grenzwert_oben3 = int (Stammwert3 * (1 + Toleranz/100))

Grenzwert_unten1 = int (Stammwert1 * (1 - Toleranz/100))
Grenzwert_unten2 = int (Stammwert2 * (1 - Toleranz/100))
Grenzwert_unten3 = int (Stammwert3 * (1 - Toleranz/100))


Dieses Skript wird ausgeführt (oder sollte ausgeführt werden), sobald das Bild aufgebaut ist.

Bei einer Berechnung mit Werten von Stammwert1 = 100, Stammwert2 = 200, Stammwert3 = 300 und einer Toleranz von 20% wird das Ergebnis 0 ausgegeben.


Das 2. Problem ist das auch andere Skripte in diesem Bild den Dienst verweigern.

Gebe ich die Grenzwerte über EA - Felder ein, wird diese Skript ebenfalls nicht ausgeführt oder liefert zumindest kein Ergebnis:

if SmartTags ("DB_Input.Eingabe1) > Grenzwert1_oben then
SetValue SmartTags ("DB_Input.Eingabe1"), SmartTags("Grenzwert1_oben")
warnung_ein = 1
warnungsnummer = 1
end if

if SmartTags ("DB_Input.Eingabe1) < Grenzwert1_unten then
SetValue SmartTags ("DB_Input.Eingabe1"), SmartTags ("Grenzwert1_unten")
warnung_ein = 1
warnungsnummer = 2
end if


Dieses Skript sollte eigentlich über das Ereignis "EA - Feld deaktivieren" ausgeführt werden, soll wohl aber nicht so sein.

Alle Werte sind INT - Werte bis auf warnung_ein (bool) und Toleranz (real).

Bis auf DB_INPUT-Eingabe1 sind alle Variablen interne WinCC flexible Variablen die auch außerhalb des Skriptes gültig sind.
 
1.if SmartTags ("DB_Input.Eingabe1")
" vergessen?

2. aus der hilfe
Syntax
SetzeWert (Variable, Wert)
Im Skript verwendbar: nein

schreib
SmartTags ("DB_Input.Eingabe1") = SmartTags("Grenzwert1_oben")
 
Das 2. Skript funktioniert jetzt, danke!

Das erste Skript verweigert weiterhin seinen Dienst.
Ich habe schon versucht dieses verdammte Skript auf die S7 auszulagern, nur habe ich die Ergebnisse jetzt als DINT und ich brauche sie unbedingt als INT!

So ein kleines Problem und es beschäftigt mich bereits den ganzen Tag! Das darf wohl nicht wahr sein!

Kannst du mir sagen warum das erste Skript nach wie vor nicht will?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
also bei mir gehts. alle 3 varianten.
funktion: aufgebaut das script aufrufen.

Code:
g_o1=stm * (1 + tol/100)
g_o2=Int( stm * (1 + tol/100))
SmartTags("g_o3")=SmartTags("stm") * (1 + SmartTags("tol")/200)
wobei alle vars intern vom typ int sind
 
Gerade das ist es ja was mich in den Wahnsinn treibt.

Es müßte/sollte/könnte funktionieren, aber genau das tut es nicht, ganz egal was ich ändere.:twisted:
 
@Volker:

Die Skripte laufen jetzt. Das Problem ist nur das sie lediglich einen Durchlauf überleben und danach offenbar nie mehr wieder gestartet werden können.

Hast du eine Ahnung woran das liegen könnte?
 
Das kleine Projekt scheint zu funktionieren.

Mir kommt da gerade ein Verdacht:

Wie viele PowerTags und Variablen sind in WinCC flexible 2005 advanced zulässig?

Was geschieht wenn ich diese Werte überschreite?
 
powertags brauchst du nur für die pc-runtime. auf den panels nicht.
was bei winccf passiert weiss ich gar nicht. wird wohl laufen und immer wieder meldung bringen. evtl läufts auch nur 10minuten.

anzahl der vars
das ist abhängig vom panel op270 zb 200/bild 2048 gesamt.
findest du unter technische daten im katalog/handbuch.
was setzt du denn ein?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich setze ein MP370 Panel ein.

Das Skript wird genau einmal ausgeführt und dann nie mehr wieder.

Umso mehr Variablen und alte Bilder ich lösche umso stabiler läuft das Panel und plötzlich kann das Skript 2 - 3x ausgeführt werden.


Zwischenzeitlich habe ich das ganze am PC getestet und prompt die Meldung erhalten das ich die Anzahl der zulässigen PowerTags überschreite und ich eine Zusatzlizenz installieren soll.

2048 Variablen? Ein Array wird wahrscheinlich mit seiner Größe gerechnet, oder? (Array[50] = 50 Variablen?).

Kann man irgendwo die Anzahl der benutzten Variablen feststellen, oder muss ich diese manuell zusammenzählen?

Oder wird ein Array nur als eine Variable gerechnet?


In ersterem Fall müßte ich auf die Kurvendarstellungen der letzten 50 Werte verzichten, da dies in Summe 450 Variablen wären.


Kann man irgendwo die Anzahl der verwendeten Variablen feststellen, oder muss ich diese manuell zusammenrechnen?


€dit: Im Benutzerhandbuch des MP370 steht die Anzahl der Variablen mit 2048, allerdings gibt es hierbei den Zusatzvermerk "max. Anzahl der internen Variablen + PowerTags".
Zählen Variablen von der Steuerung also nicht?
 
Zuletzt bearbeitet:
ein array sollte eigentlich einen powertag belegen.

powertags sind die variablen die an die steuerung angebunden sind.
 
Laut Siemens - Hanbuch hängt es von der Linzenz ab, wieviele Variablen benutzt werden können.

Wie finde ich heraus wieviele Variablen ich bereits benutze und wieviele ich laut Lizenz zur Verfügung habe?

Weiß jemand zufällig was ein Upgrade kosten würde?

Ein Array = ein Powertag ist schlecht, denn dann bringt mir das löschen der Kurvenanzeigen auch nicht viel.
 
OK. Danke!

Das Problem liegt nicht an der Anzahl der Variablen. Wie ich festgestellt habe, versuchte ich 2 Skripte zeitgleich auszuführen und irgendwie sind dann beide Skripte hängengeblieben.

Als ich feststellte das ein zweites Skript ebenfalls nicht mehr will, musste ich nur noch den Zusammenhang finden und dann ging's.
 
Zurück
Oben