flexible Grenzwerte mit Rezepturdaten

Zuviel Werbung?
-> Hier kostenlos registrieren
Edit: Ich denke irgendwi, dass diese 2 Ausgaben nicht als Ausgaben deklariert sind/werden...Aber weiss nicht wie ich dies definieren kann bzw ob meine Befehle so richtig sind...

Ich kann dir gerade nicht folgen ... :confused:

Die Variablen stehen erstmal für sich - was sie dann tun bestimmt das Element, an dem sie verwendet werden ... (also Eingabe oder Ausgabe) ...
 
Ich kann dir gerade nicht folgen ... :confused:

Die Variablen stehen erstmal für sich - was sie dann tun bestimmt das Element, an dem sie verwendet werden ... (also Eingabe oder Ausgabe) ...

Das tun sie auch...

Rezepturzwischenwert = Eingabefeld
Grenzwert = Ausgabefeld
Rezepturparameter = Ausgabefeld
Grenzwert_Eingabe = fester Wert

Funktioniert denn mein Script so einfach wie ich mir das vorstellen:

Beispiel:

Rezepturzwischenwert = Rezepturparameter

soll wie folgt funktionieren:

L Rezepturzwischenwert
T Rezepturparameter
 
stimmt, ist eigentlich logisch...

danke für deine geduld erstmal...verliere nächstens meine...funktioniert immer noch nicht :(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin mir jetzt nicht ganz sicher ...

Werden die Parameter an eine SUB ByVal oder ByRef übergeben?
Wenn ByVal bedeutet das, dass nicht die Adressen auf die Variablen übergeben werden, sondern nur die Werte.

Soll heißen: Du kannst die im Script berechneten Werte nicht an die Parameter zurück geben.
In diesem Fall müsstest Du im Script direkt in die Variablen (SmartTags) schreiben.

Bin mir aber wie gesagt nicht sicher.
Vielleicht weiß das jemand anders besser.
 
"Geduld" ist mein 2. Nickname ... :rolleyes:

Was funktioniert denn nicht ? Beschreib mal näher ... ich kann dir (leider) nicht beim Arbeiten "über die Schulter schauen" ...

ich kann bei meiner eingabe "Rezepturzwischenspeicher" 500 eingeben. Dann müsste ja in der Ausgabe "Rezepturparameter" sofort auch 500 stehen. In der Ausgabe "Grenzwert " müsste dann 600 stehen, da "Grenzwert_Eingabe" = 100 ist...

bleiben jedoch immer sämtliche Ausgaben auf 0...
 
@ssound1de:
Deine Erinnerung täuscht dich da nicht ...
Ich bin allerdings davon ausgegangen, dass wir hier nicht von script-internen Variablen sondern von Variablen aus der Flex-Variablenliste sprechen ...

Gruß
LL

Nachsatz @iPDI:
in Anlehnung an den obigen Beitrag : wo sind die genannten Variablen deklariert ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ssound1de:
Deine Erinnerung täuscht dich da nicht ...
Ich bin allerdings davon ausgegangen, dass wir hier nicht von script-internen Variablen sondern von Variablen aus der Flex-Variablenliste sprechen ...

Gruß
LL

Das ist auch der Fall...ihr seht das an meinen Bildern auf Seite 2...

Was ist den mit Script Typ? Der ist momentan auf "sub"...das müsst schon richtig sein? bei der Funtion bekommer ich noch nen Rückgabewert, welcher ich nicht benötige...
 
Sub ist OK ...

Wo und wie die Variablen deklariert sind habe ich nicht gefunden.
Sind es Flex-interne Variable oder welche mit SPS-Anbindung ?
Wenn Flex-intern, dann bitte das ändern ...
 
... dann wird das Script nicht ausgeführt ...
Das Script muß gestartet werden bei Wertänderung der Variablen des Eingabefeldes. Diese Variable (damit Flex das Ereignis erkennt) darf auch kein Flex-interne Variable sein. Bei den anderen ist es eigentlich egal ...

...
 
... dann wird das Script nicht ausgeführt ...
Das Script muß gestartet werden bei Wertänderung der Variablen des Eingabefeldes. Diese Variable (damit Flex das Ereignis erkennt) darf auch kein Flex-interne Variable sein. Bei den anderen ist es eigentlich egal ...

...

Das ist sie auch nicht mehr...ich habe jetzt alle 4 werte in einem test db...das Script wird bei "Wertänderung" ausgeführt in der Variabel Db2.Rezepturzwischenspeicher (ist im Script der "Rezepturzwischenwert")
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...das Script wird bei "Wertänderung" ausgeführt in der Variabel Db2.Rezepturzwischenspeicher (ist im Script der "Rezepturzwischenwert")

Warum hast du da 2 verschiedene Namen - es sollte schon beide Male die gleiche Bezeichnung (und somit die gleiche Variable) sein ...
 
Warum hast du da 2 verschiedene Namen - es sollte schon beide Male die gleiche Bezeichnung (und somit die gleiche Variable) sein ...

Das sind nich 2 Namen. Der erste Name sind die Paramter im den Scripteinstellungen. Der 2. Name ist die Variabel, welche sich im db befindet...Das sollte schon ok sein...wenn ich das script 5x aufrufen würde, hätte ich dann 6 verschiedene Bezeichnungen....
 
:confused: ... wenn es sich um die selbe Variable handelt dann muss es auch der selbe Name sein. In deinem Fall würde das Script über die Wertänderung einer Variablen aufgerufen werden. Dieses kann natürlich nur die Variable des Eingabefeldes sein. Wenn du auf Basis dieser Eingabe eine Berechnung ausführen möchtest, dann muss diese Berechnung natürlich auch den Inhalt zur Verfügung haben.

Bitte überprüfe doch noch einmal das, was du da gemacht hast ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@iPDI
Nochmal zum Script-Typ SUB.
Die Parameter, die Du an die SUB übergibst, werden nur als Zahlenwerte übergeben. D.h. das Script erstellt scriptinterne Kopien der äusseren Variablen.
Wenn Du also schreibst ...

Code:
Grenzwert = Rezepturzwischenwert + Grenzwert_Eingabe

dann wird das Rechenergebnis in die scriptinterne Variable 'Grenzwert' geschrieben. Dieser Wert wird nicht nach aussen zurückgegeben, und geht nach beenden der SUB einfach verloren.

Du müsstest sowas schreiben wie (ich hoffe beim MP277 ist das wie bei der PC-Runtime) ...
Code:
Ich nehm jetzt mal den Var-Namen von mir ...
SmartTags("MASK-M-PROG.Schaummenge") = Rezepturzwischenwert + Grenzwert_Eingabe

Damit schreibst Du das Rechenergebnis in die echte Variable (die in der Variablenliste steht) und nicht in die Kopie.

Recht viel mehr kann ich Dir im Moment nicht helfen, da ich schon zuhause bin. :ROFLMAO:
 
@iPDI
Nochmal zum Script-Typ SUB.
Die Parameter, die Du an die SUB übergibst, werden nur als Zahlenwerte übergeben. D.h. das Script erstellt scriptinterne Kopien der äusseren Variablen.
Wenn Du also schreibst ...

Code:
Grenzwert = Rezepturzwischenwert + Grenzwert_Eingabe
dann wird das Rechenergebnis in die scriptinterne Variable 'Grenzwert' geschrieben. Dieser Wert wird nicht nach aussen zurückgegeben, und geht nach beenden der SUB einfach verloren.

Du müsstest sowas schreiben wie (ich hoffe beim MP277 ist das wie bei der PC-Runtime) ...
Code:
Ich nehm jetzt mal den Var-Namen von mir ...
SmartTags("MASK-M-PROG.Schaummenge") = Rezepturzwischenwert + Grenzwert_Eingabe
Damit schreibst Du das Rechenergebnis in die echte Variable (die in der Variablenliste steht) und nicht in die Kopie.

Recht viel mehr kann ich Dir im Moment nicht helfen, da ich schon zuhause bin. :ROFLMAO:

werde mich am Dienstag wider melden, da ich mittlerweile auch entnervt und erfolglos zu Hause befinde :)

Schönes Wochenende euch vorübergehend :O
 
man glaubt es kaum, doch ich habs (zusammen mit einem Arbeitskollegen) heute in 10min hinbekommen :)

Variante 1 (indirekte Variabelauswahl mit Rückgabewert - Typ Function):

Code:
If Rezepturwert > 0  Then
    If HmiRuntime.BaseScreenName="Bild_1" Or HmiRuntime.BaseScreenName="Bild_2" Then 'wird nur aufgerufen, wenn Rezeptureingabe aktiv


Skript_1 = Rezepturwert + Grenzwert_Eingabe 'Grenzwert wird berechnet



    End If

End If
Das Skrpt_1 ist der Name des Scriptes - und wird so im flexible als Rückgabewert definiert...

Variante 2 (direkter Variabelzugriff Typ Sub):

Code:
If SmartTags("MP277 Rezepturdaten.Spritzkabiene1.SK1_f_Startposition") > 0  Then
    If HmiRuntime.BaseScreenName="Bild_1" Or HmiRuntime.BaseScreenName="Bild_2" Then 'wird nur aufgerufen, wenn Rezeptureingabe aktiv


  SmartTags("grenzwert_xxx") = SmartTags("MP277 Rezepturdaten.Spritzkabiene1.SK1_f_Startposition") + SmartTags("Grenzwert_Fahren") 'Grenzwert wird berechnet



    End If

End If
Es spielt dabei auch keine Rolle, ob es interne Variabeln oder externe von meinem DB sind (habs extra getestet). Die Variabel "MP277 Rezepturdaten.Spritzkabiene1.SK1_f_Startposition" ist meine Rezepturvariabel. Diese wird erst beim "senden" in die Steuerung geschriebn. Der Zugriff darauf funktioniert auch einwandfrei (wird nich aus dem DB geholt, sondern aus dem "Rezepturspeicher")

Danke trozdem nochmals für eure Hilfe. Vielleicht kann auch sonst noch jemand von meinen Erkentnissen provitieren :)
 
Zurück
Oben