# flexible Grenzwerte mit Rezepturdaten



## iPDI (19 Mai 2010)

Hallo

Ich habe wieder einmal ein Problem mit meiner Rezeptur. Es handelt sich um eine Lineareinheit, welche vor und zurück fährt. Über die Rezeptur kann der Start und der Endpunkt eingegeben werden.

Nun möchte ich Grenzwerte in Abhängigkeit zum Start bzw. Endpunkt in der SPS berechnen. Nur ist das Problem, wie ich diese Eingaben in die SPS bringe...Die Daten werden erst nach dem Befehl "schreibe in Steuerung" in der entsprechenden DB geladen. Die Grenzwerte benötige ich jedoch, sobald der erste Punkt eingegeben wurde.

Hat irgendeiner eine Idee?!?


----------



## Larry Laffer (19 Mai 2010)

Hallo,
Rezepte bei Flex ist nicht so mein Thema - aber vielleicht ist mein Ansatz trotzdem brauchbar :
Du stößt in dem Bediengerät bei Wertänderung der Eingabe die benötigte Berechnung mit den intergrierten Rechen-Funktionen (sofern das Panel das kann) an und bringst das Ergebnis dann in die entsprechende Ziel-Variable.

Gruß
LL


----------



## ssound1de (19 Mai 2010)

Hi,

wenn Du in der Rezeptur ...
1. unter Datenübertragung 'Synchronisation' aktivierst

und 
2. unter Einstellungen 'Variablen synchronisieren' aktivierst und 'Variablen offline' deaktivierst

dann werden Werteingaben normalerweise sofort in die Steuerung geschrieben.

Das bedeutet aber auch, wenn du einen Datensatz in der Rezepturanzeige auswählst, werden diese
Werte sofort in die Steuerung geschrieben.

vlg
s


----------



## iPDI (19 Mai 2010)

ssound1de schrieb:


> Hi,
> 
> wenn Du in der Rezeptur ...
> 1. unter Datenübertragung 'Synchronisation' aktivierst
> ...



Danke für die ersten Tips...doch das direkte Synchronisieren will ich nicht...die Werte sollen erst in die Steuerung, wenn ich das will  sonst würde ich mir direkt im Programm eine Rezepturverwaltung selbst erstellen.

Die Lösung von LL wäre ein Ansatz (Script erstellen)...doch ich will, wenn irgendwie möglich, diese Grenzen in der SPS lösen... 

Sonst noch jemand eine Lösung auf Lager?

PS: Ist en neues MP277


----------



## ssound1de (20 Mai 2010)

Guten Morgen,

ich dachte ich verstehe was Du vor hast - aber scheinbar doch nicht. 
Erklär doch bitte mal etwas genauer.

Arbeitest Du mit einer Rezepturanzeige?


----------



## iPDI (20 Mai 2010)

ssound1de schrieb:


> Guten Morgen,
> 
> ich dachte ich verstehe was Du vor hast - aber scheinbar doch nicht.
> Erklär doch bitte mal etwas genauer.
> ...



doch du verstehst schon, was ich vorhabe. Nur ist das Problem, wenn ich die Daten die ganze Zeit synchronisiere und jemand während dem Betrieb eine neue Rezeptur erstellen will, überschreibt es die aktuell laufende Rezeptur. Die Rezepturdaten werden auf dem Panel gespeichert (Standart flexible Rezepturverwaltung) - nun will ich irgendwie an diese Daten kommen, wenn ich eine neue Rezeptur erstelle...

Schwierig zu erklären...

Edit: Das mit dem Script ist auch nicht so einfach...irgendwie muss ich auch an diese Daten kommen...weiss jedoch nicht wie...


----------



## ssound1de (20 Mai 2010)

Ein (vielleicht letzter) Versuch 

Wenn Du eine Rezepturanzeige verwendest, könntest Du ja auch die Schaltflächen 'Schreiben in Steuerung' und 'Lesen aus Steuerung' verwenden.
Dann musst Du nur in der Rezeptur 'Variablen offline' aktivieren.

Du kannst dann irgendein Rezept aufrufen - die Werte werden nicht in die Steuerung übertragen - erst mit betätigen der Schaltfläche 'Schreiben in Steuerung'.
Du kannst auch einen Wert ändern und dann mit der Schreiben Schaltfläche abschicken.


----------



## Larry Laffer (20 Mai 2010)

iPDI schrieb:


> Edit: Das mit dem Script ist auch nicht so einfach...irgendwie muss ich auch an diese Daten kommen...weiss jedoch nicht wie...


 
Naja ... die Idee war eigentlich, die Berechnung, die du in der SPS (mit den gleichen daten) machst in das MP zu holen damit du deine Zwischenwerte bekommst (wie von der SPS).
Woran hängt es da jetzt konkret ?

Gruß
LL


----------



## iPDI (20 Mai 2010)

nicht einfach zu erlären, was ich will.....

Bei der Rezepturerstellung  habe ich ein eingabefeld, in welches ich den Startpunkt eingebe. Nun soll die Grenze für den Endpunkt in der Steuerung berechnet werden. Dafür benötige ich jedoch den Startpunktwert aus dem Eingabefeld. Diesen direkt in die Steuerung laden will ich nicht, sondern erst wenn die Rezeptur ausgewählt wird und der Button "schreibe in Steuerung" angewählt wurde. Irgendwie benötige ich jetzt jedoch diesen Wert in einer anderen Variabel in der Steuerung...

Ich hab jedoch langsam das Gefühl, dass dies nicht wirklich funktioniert....


----------



## Larry Laffer (20 Mai 2010)

... und die Berechnung des Endpunktes, den die Steuerung macht kannst du in dem MP nicht mit einem Script (das z.B. bei Wertänderung der Eingabe des Start-punktes aufgerufen wird) nachstellen um somit den Endpunkt schon vor Anwahl des Rezeptes zu bekommen ...?

Gruß
LL


----------



## iPDI (20 Mai 2010)

Larry Laffer schrieb:


> ... und die Berechnung des Endpunktes, den die Steuerung macht kannst du in dem MP nicht mit einem Script (das z.B. bei Wertänderung der Eingabe des Start-punktes aufgerufen wird) nachstellen um somit den Endpunkt schon vor Anwahl des Rezeptes zu bekommen ...?
> 
> Gruß
> LL




das ist ja genau mein Problem...ich weiss nich wo auf dem Panel dieser Eingaberwert für die Rezeptur gespeichert wird bzw wie ich diesen bearbeiten kann...Das Eingabefeld verweist auf einen DB in meiner SPS. Doch die Rezepturdaten werden erst in die Steuerung geschrieben, wenn ich dann die Rezeptur auswähle und in die Steuerung schreibe (was eigentlich auch so sein soll). Das heisst, die Daten werden irgendwo auf dem Panel in der Rezeptur gespeichert.

Hatte jedoch vorhin eine Blitzidee  Schreibe den Startpunkt via einer normalen Variabel direkt in einen Zwischenspeicher in meinem DB (nicht Rezepturabhängig) danach führe ich in der SPS meine Berechnung für den Grenzwert durch und schreibe diesen über einen 2. Zwischenspeicher wieder auf das Panel zurück (wird nur ausgeführt, wenn Rezeptureingabe aktiv). So sollte ich dann diesen Wert via Script oder wie auch immer im Panel in meine Rezeptureingabe kriegen. Hat jemand eine Ahnung ob das funktioniert? Werde dies Morgen testen...


----------



## rostiger Nagel (20 Mai 2010)

kann es sein das du deinen Startpunkt in der Standard-Rezepturanzeige
eingibst, ich meine das Listenfeld. An der stelle kannst du keine Funktion
aufrufen die durch Werktänderung etwas berrechnet.
Da würde ich Eingabefelder auf einer Seite machen und dann es so lösen
wie es LL beschreibt, ein Script aufrufen und darin die berechnung machen.


----------



## iPDI (20 Mai 2010)

Helmut_von_der_Reparatur schrieb:


> kann es sein das du deinen Startpunkt in der Standard-Rezepturanzeige
> eingibst, ich meine das Listenfeld. An der stelle kannst du keine Funktion
> aufrufen die durch Werktänderung etwas berrechnet.
> Da würde ich Eingabefelder auf einer Seite machen und dann es so lösen
> wie es LL beschreibt, ein Script aufrufen und darin die berechnung machen.




ich habe für die Rezeptur eigene Eingabefelder erstellt, welche die Werte in die Rezeptur schreiben. Werde dann wie oben in meinem Beitrag geschrieben den Startpunkt via normalem Eingabefeld in eine Zwischenspeichervariabel auf dem Panel schreiben, dann via Script den Grenzwert berechnen und gleichzeitig auch die Startpunkt Zwischenvariabel in die richtige Rezepturvariabel schreiben. Habe noch keine Ahnung, wie das Script aussehen soll (hab da nicht grosse Erfahrung damit)...doch werde es Morgen im Geschäft versuchen...

Danke für eure Gedankeanstösse


----------



## ssound1de (21 Mai 2010)

:!: Zur Info (bzgl. Offline-Rezepturen und Variablenzugriff) ...



iPDI schrieb:


> das ist ja genau mein Problem...ich weiss nich wo auf dem Panel dieser Eingaberwert für die Rezeptur gespeichert wird bzw wie ich diesen bearbeiten kann...Das Eingabefeld verweist auf einen DB in meiner SPS.


 
Du hast eine 'Offline-Rezeptur' (Variablen Offline ist aktiviert) mit dem Eingabefeld 'Startpunkt' - das verweist z.B. auf DB100.DBW10.
Wenn Du jetzt in das Feld 'Startpunkt' einen Wert eingibst, ändert sich die Variable 'Startpunkt' (DB100.DBW10) im Panel, nicht aber in der Steuerung (das passiert ja erst mit dem Button 'Schreibe in Steuerung').
D.h. Du kannst im Panel die Variable 'Startpunkt' auf Wertänderung abfragen.

Ich hab in meinem aktuellen Projekt eine Offline-Rezeptur mit 32 Prozent-Werten. Damit bei Änderungen nicht immer von Hand die Summe (möglichst 100%) berechnet werden muss, hab ich an jede der Variablen (bei Wertänderung) einen Scriptaufruf gehängt, und dieses Script rechnet alle Werte zusammen und zeigt die Summe in einem extra Feld an. 

Du könntest also mit Wertänderung von 'Startpunkt' ein Script aufrufen, das den Wert aus 'Startpunkt' nimmt (das ist automatisch der Offline-Wert im Panel-Speicher), und in eine andere Variable (rezeptunabhängig) der Steuerung schreiben (kannst natürlich auch vorher nach Wunsch im Script berechnen).

vlg
s

EDIT: Du musst bei Wertänderung natürlich nicht unbedingt ein Script aufrufen. Du kannst ja auch über z.B. 'Lineare Skalierung' gleich umrechnen und in eine Steuerungsvariable schreiben.


----------



## iPDI (21 Mai 2010)

ssound1de schrieb:


> :!: Zur Info (bzgl. Offline-Rezepturen und Variablenzugriff) ...
> 
> 
> 
> ...


 
Das heisst ich kann mit dem Script direkt auf DB100.DBW10 verweisen...Dann findet er diesen Wert im Panel?


----------



## Larry Laffer (21 Mai 2010)

iPDI schrieb:


> Das heisst ich kann mit dem Script direkt auf DB100.DBW10 verweisen...Dann findet er diesen Wert im Panel?


 
Hallo,
heißt deine Variable in der Visu so : *DB100.DBW10* ? Oder heißt die Variable vielleicht *Sollgewicht* (oder so) ?
Du mußt dich auf jeden Fall mit dem vorgeschlagenen Weg an den Namen der Variablen hängen und nicht an die Adresse in der SPS (da der SPS-Speicher sich ja durch die Eingabe nicht unmittelbar ändert).

Wie sieht denn die nachfolgende Berechnung aus ?

Gruß
LL


----------



## ssound1de (21 Mai 2010)

iPDI schrieb:


> Das heisst ich kann mit dem Script direkt auf DB100.DBW10 verweisen...Dann findet er diesen Wert im Panel?


 
Wie LL schreibt ...
Du musst den *Namen* der Rezeptvariablen nehmen.
Keine neue Variable mit Verweis auf DB100.DBW10 aufmachen.

Hier eine kleine Bilderserie. Meine Offline-Variable heißt hier 'Schaummenge'.
1. Rezeptur 'Mischprogramme' -> Variablen offline
2. In der Rezeptur das Rezepturelement -> Variable MASK-M-PROG.Schaummenge
3. Die Variable in der Variablenliste mit dem Verweis (bei mir) auf DB509.DBD0
4. Die Eigenschaften der Variable 'Schaummenge'

Unter Ereignisse der Variable ist Wertänderung aktiviert mit Scriptaufruf o.ä.


----------



## iPDI (21 Mai 2010)

Danke für eure Hilfe...nun happerts bei mit am schreiben des Scripts...bin da ziemlicher Anfänger...

Habe folgendes erstellt:


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

Rezepturparameter = Rezepturzwischenwert 'Rezepturzwischenwert wird in Rezepturparameter übernommen

Grenzwert= Rezepturzwischenwert + Grenzwert_Eingabe 'Grenzwert wird berechnet



    End If

End If
```
Nun scheiterts meiner Meinung nach an der Ausgabe...

Rezepturzwischenwert = Eingabe INT (hier wird via dem Eingabefeld der Startpunkt definiert)
Grenzwert_Eingabe = Eingabe INT (hier der Grenzwert Eingegeben)

Grenzwert = Ausgabe INT (dies wird der Grenzwert für meine nächste Eingabe - Rezepturzwischenwert + Grenzwert_Eingabe)
Rezepturparameter = Ausgabe INT (Dies wird dann der eigentliche Rezepturparameter - gleicher Wert wie Rezepturzwischenwert muss dort stehen)

Die Eigenschaften des Scriptes und der Variabeln seht ihr in den angehängten Bildern


----------



## Larry Laffer (21 Mai 2010)

Die Bildabfrage muss etwas anders (falls das so richtig ist) :
	
	



```
If HmiRuntime.BaseScreenName="Bild_1" Or HmiRuntime.BaseScreenName="Bild_2" Then ...
```
 
Die Wertänderung von "Rezept_Zwischenwert" muss dann dieses Script aufrufen ...

Gruß
LL

Nachsatz:
Und ...? Geht es nun ?


----------



## iPDI (21 Mai 2010)

Larry Laffer schrieb:


> Die Bildabfrage muss etwas anders (falls das so richtig ist) :
> 
> 
> 
> ...



Das mit der Bildabfrage funktioniert so wie ich es habe. Habe ich in einem anderen Script auch verwendet. Habe es auch versucht, ohne die Bildabfrage... Muss als an etwas anderem liegen... 

Der Rezeptzwischenwert ruft auch das Script auf (siehe Bild von vorigem Post)

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...

Edit2: Ah jetzt hab ich begriffen, was du mit der Bildabfrage meinst...das Bild_2 funktioniert so natürlich nicht...ist jedoch leider nicht die Lösung des Problemes


----------



## Larry Laffer (21 Mai 2010)

iPDI schrieb:


> 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 ... 

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


----------



## iPDI (21 Mai 2010)

Larry Laffer schrieb:


> Ich kann dir gerade nicht folgen ...
> 
> 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


----------



## Larry Laffer (21 Mai 2010)

Nein ... umgekehrt :

Ziel_Variable = Quell_Variable

Die Frage erstaunt mich, da du bei der Berechnung den Fehler nicht gemacht hast.


----------



## iPDI (21 Mai 2010)

stimmt, ist eigentlich logisch...

danke für deine geduld erstmal...verliere nächstens meine...funktioniert immer noch nicht


----------



## Larry Laffer (21 Mai 2010)

iPDI schrieb:


> danke für deine geduld erstmal...verliere nächstens meine...funktioniert immer noch nicht


 
"Geduld" ist mein 2. Nickname ... 

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


----------



## ssound1de (21 Mai 2010)

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.


----------



## iPDI (21 Mai 2010)

Larry Laffer schrieb:


> "Geduld" ist mein 2. Nickname ...
> 
> 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...


----------



## Larry Laffer (21 Mai 2010)

@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 ?


----------



## iPDI (21 Mai 2010)

Larry Laffer schrieb:


> @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 ...
> 
> ...



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...


----------



## Larry Laffer (21 Mai 2010)

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 ...


----------



## iPDI (21 Mai 2010)

Larry Laffer schrieb:


> 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 ...




sind flex interne...du meinst ich muss dies in einem db speichern?


----------



## iPDI (21 Mai 2010)

iPDI schrieb:


> sind flex interne...du meinst ich muss dies in einem db speichern?




funtkioniert leider auch so nicht...die vebindung sps --> panel ist i.O. 

Meide Eingaben werden in den db geschrieben. Doch die Script Berechnung wird noch immer nicht ausgeführt...


----------



## Larry Laffer (21 Mai 2010)

... 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 ...

...


----------



## iPDI (21 Mai 2010)

Larry Laffer schrieb:


> ... 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")


----------



## Larry Laffer (21 Mai 2010)

iPDI schrieb:


> ...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 ...


----------



## iPDI (21 Mai 2010)

Larry Laffer schrieb:


> 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....


----------



## Larry Laffer (21 Mai 2010)

... 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 ...


----------



## ssound1de (21 Mai 2010)

@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 ...


```
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) ...

```
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.


----------



## iPDI (21 Mai 2010)

ssound1de schrieb:


> @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 ...
> ...



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

Schönes Wochenende euch vorübergehend :O


----------



## iPDI (25 Mai 2010)

man glaubt es kaum, doch ich habs (zusammen mit einem Arbeitskollegen) heute in 10min hinbekommen 

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


```
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):


```
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


----------

