flexible Grenzwerte mit Rezepturdaten

iPDI

Level-1
Beiträge
185
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
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?!?
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zuletzt bearbeitet:
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

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
 
Guten Morgen,

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

Arbeitest Du mit einer Rezepturanzeige?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

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

Arbeitest Du mit einer Rezepturanzeige?

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...
 
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.
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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....
 
:confused: ... 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
 
:confused: ... 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...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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 :)
 
:!: Zur Info (bzgl. Offline-Rezepturen und Variablenzugriff) ...

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

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.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
:!: Zur Info (bzgl. Offline-Rezepturen und Variablenzugriff) ...



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

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

Das heisst ich kann mit dem Script direkt auf DB100.DBW10 verweisen...Dann findet er diesen Wert im Panel?
 
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
 
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.ä.
 

Anhänge

  • B0.JPG
    B0.JPG
    12,5 KB · Aufrufe: 8
  • B1.JPG
    B1.JPG
    27,5 KB · Aufrufe: 5
  • B2.JPG
    B2.JPG
    18,4 KB · Aufrufe: 5
  • B3.JPG
    B3.JPG
    22,1 KB · Aufrufe: 5
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für eure Hilfe...nun happerts bei mit am schreiben des Scripts...bin da ziemlicher Anfänger...

Habe folgendes erstellt:

Code:
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
 

Anhänge

  • Script_aufrufen.JPG
    Script_aufrufen.JPG
    40,5 KB · Aufrufe: 7
  • Script_eigenschaften.JPG
    Script_eigenschaften.JPG
    20,8 KB · Aufrufe: 5
Die Bildabfrage muss etwas anders (falls das so richtig ist) :
Code:
 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 ?
 
Zuletzt bearbeitet:
Die Bildabfrage muss etwas anders (falls das so richtig ist) :
Code:
 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 ?

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
 
Zuletzt bearbeitet:
Zurück
Oben