Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: WinCC flexible/Rezeptur/Eingabe

  1. #1
    Registriert seit
    06.10.2009
    Ort
    Hessen
    Beiträge
    560
    Danke
    24
    Erhielt 43 Danke für 40 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebste Community,

    ich hab eine einfache aufgabe.. und komm nicht auf die Lösung

    Wir haben eine Rezepturverwaltung...
    Allerdings möchte ich die Rezeptur nicht mit einem Dropdown Menu anwählen.. und dann ein Button zum übertragen in die Steuerung anwählen

    Sondern einfach die Artikelnummer eingeben, enter drücken.. und das wars =)

    Habt ihr eine Idee?
    Das, was man weiß, hat doppelten Wert, wenn man zugleich das, was man nicht weiß, nicht zu wissen eingesteht.
    Zitieren Zitieren WinCC flexible/Rezeptur/Eingabe  

  2. #2
    Registriert seit
    13.10.2007
    Beiträge
    12.033
    Danke
    2.788
    Erhielt 3.269 Danke für 2.157 Beiträge

    Standard

    du könntest eine Variabel nehmen wo der Bediener die Artikel Nr eingibt,
    dann bei Wertänderung die Funktionen ausführen "Schreibe Datensatz in
    Steuerung" wo dann als Datensatznummer deine Variabel mit der Artikel Nr
    eingestellt ist.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  3. #3
    Avatar von c.wehn
    c.wehn ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.10.2009
    Ort
    Hessen
    Beiträge
    560
    Danke
    24
    Erhielt 43 Danke für 40 Beiträge

    Standard

    Das wäre natürlich eine Möglichkeit, aber sehr unflexibel wenn ich neue Rezepturen anlegen möchte.. oder hab ich das flasch aufgefasst?
    Das, was man weiß, hat doppelten Wert, wenn man zugleich das, was man nicht weiß, nicht zu wissen eingesteht.

  4. #4
    Registriert seit
    13.10.2007
    Beiträge
    12.033
    Danke
    2.788
    Erhielt 3.269 Danke für 2.157 Beiträge

    Standard

    Ich habe es so verstanden da du einen Datensatz laden möchtest
    wenn du deine Artikel Nr eingibst, aber anderson sollte es auch
    funktionieren. Du kannst diese Funktionen auch ausführen wenn
    bei ein bestimmten Eingabefeld, für die Variabel die Aktion
    "Eingabe abgeschlossen" die gewünschte Funktionen ausführen.

    Wenn dein Panel Scriptfähig ist kannst du noch ganz andere ablâufe
    für deinen Rezepturverwaltung ausführen.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Neue Rezepturen lege ich ganz normal im Rezepteditor von WinCCFlex an.
    Von Step7 aus bebeschreibe ich die nötigen Variablen und setzen dann eine Triggervariable. Diese Triggervariable (Ausführen bei Wertänderung) lädt dann ein Rezept an Hand des Datensatznamens (Funktion in WinCCFlex), der die Arteikelnummer bekommen hat.

    Aber Achtung, die Triggervariable darf erst ca. 500ms nachdem man alle anderen Variablen eingetragen hat gesetzt werden. Ansonsten ist nicht sicher, dass WinCCFlex nicht noch alte Daten in den Variablen hat und diese dann zur Ausführung nutzt.

    Hier mal ein SCL-Script, dass ich dazu nutze:


    Code:
    FUNCTION_BLOCK FB41
    
    Title = 'Rezept'
    //
    // Rezeptur von HMI über Variable im HMI 
    // anfordern
    // die Variable ist auf "Ausführen bei Wertänderung" eingestellt
    // und arbeitet mit den an sie übergebenen Variablen
    // Rezeptnummer und Datensatzname
    // Der Wert Status wird zurückgegeben
    // Status = 2 --> Daten werden geholt
    // Status = 4 --> Daten holen erfolgreih beendet
    // Status = 12 -> Daten holen Fehler
    //
    Version : '1.0'
    author  : Ralle
    name    : RZ01
    family  : REZEPT
    
    VAR_INPUT
      // Eingangsparameter
      Ack: BOOL;
      Rezept: INT;
      Datensatzname: STRING[16];
    END_VAR
    
    VAR_IN_OUT 
      // IN_OUT_Parameter
    Auftrag:    STRUCT            
                    Rezeptnummer:    INT;       
                    Datensatznummer:    INT;     
                    Datensatzname:    STRING[16];       
                    Status:    INT;       
                    Startvar:    INT;     
                    Toggelvar:    INT;        
                END_STRUCT;            
      bStart: BOOL;
      bBusy: BOOL;
      bEnd: Bool;
      bErr: Bool;
    END_VAR
    
    VAR_TEMP
      // temporäre Variablen
      Timeout_bit : BOOL ; 
      Auftrag_Wait: BOOL ;
    END_VAR
    VAR
        // statische Variablen
      bHM_StartFlanke: BOOL;
      Wait_Timer : TON;   
      Timeout_Timer : TON;   
      Timeout_stat : BOOL ;  
    END_VAR
    
        // Anweisungsteil
    IF bStart THEN
        bEnd := False;
    END_IF;
        
    //Der Auftrag wird gestartet, Rezeptnummr und Datensatzname an das HMI übergeben    
    IF (Auftrag.StartVar = 0) AND bStart AND NOT bHM_Startflanke THEN
        Auftrag.Rezeptnummer := Rezept;
        Auftrag.Datensatzname := Datensatzname;
        Auftrag.Status := 0;
        bEnd := False;
        bErr := False;
        bHM_Startflanke := True;
        Auftrag.StartVar := 1;
    END_IF;
    
    //Wartezeit bis zum Start der Funktion im HMI
    //da sonst Rezeptnummer und Datensatzname u.U. noch die alten Werte haben
    Auftrag_Wait := (Auftrag.Startvar = 1);
    
    Wait_Timer(IN := Auftrag_Wait // IN: BOOL
              ,PT := T#500ms // IN: TIME
              ); 
       
    //Start der Funktion im HMI nach Wartezeit   
    IF Wait_Timer.Q THEN
        IF Auftrag.Toggelvar > 1000 THEN
            Auftrag.Toggelvar := 0;
        ELSE
            Auftrag.Toggelvar := Auftrag.Toggelvar + 1;
        END_IF;
        Auftrag.Startvar := 2;
    END_IF;
    
    //Auftrag ist korrekt beendet, Meldung nach außen
    IF (Auftrag.Startvar = 2) AND (Auftrag.Status = 4) AND bStart AND bHM_Startflanke THEN
        bStart := False;
        bHM_Startflanke := False;
        bEnd := True;
        Auftrag.Startvar := 0;
    END_IF;
    
    //Ausgabe Busy
    bBusy := bHM_Startflanke;
    
    //Timeout nach 5 Sekunden Busy
    Timeout_Timer(IN := bBusy // IN: BOOL
              ,PT := T#5s // IN: TIME
              ); 
    Timeout_bit := Timeout_Timer.Q; // OUT: BOOL
    //   := Timeout_Timer.ET; // OUT: TIME
    
    IF Timeout_bit THEN
        Timeout_stat := True;
    END_IF;
    
    //Reset mit Ack
    IF ACK AND Timeout_stat THEN
        Timeout_stat := False;
        bStart := False;
        Auftrag.Startvar := 0;
        bHM_Startflanke := False;
    END_IF;
    
    //Ausgabe Error
    bErr := Timeout_stat;
    
        ;
    END_FUNCTION_BLOCK
    Wird der Fehler gesetzt, dann ist kein Rezept mit der entsprechenden Artikelnummer im Panel gefunden worden und man muß es erst anlegen.

    Angehängte Grafiken Angehängte Grafiken
    Geändert von Ralle (16.05.2011 um 17:56 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  6. #6
    Registriert seit
    09.03.2013
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo zusammen,

    ich habe ein Problem, ich möchte wie oben beschrieben dieses Script verwenden
    um mit einer Artikelnummer ein Datensatz (vom Rezept1) aufzurufen.
    Aber ich kann den in den Aufruf des FB41 nicht den Datensatznamen (als String) eingeben.
    Der S7 Editor sagt immer das der erwartete Parameter ein String(16) sein muss und die zeile bleibt ROT.
    Ich habe schon alles versucht. Ich sehe nur ROT.

    Hat jemand einen Tipp ??

    Gruss
    Zitieren Zitieren Fb41  

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.184
    Danke
    923
    Erhielt 3.290 Danke für 2.659 Beiträge

    Standard

    Du mußt in einem DB oder in TEMP einen STRING[16] anlegen und symbolisch an den FB41-Eingang ranschreiben. Wichtig: die deklarierte Länge muß genau 16 sein.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    Registriert seit
    09.03.2013
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    vielen dank, jetzt gehts !!

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 19.04.2010, 15:06
  2. WinCC flexible Rezeptur erstellen
    Von iPDI im Forum HMI
    Antworten: 7
    Letzter Beitrag: 09.04.2010, 14:10
  3. Antworten: 4
    Letzter Beitrag: 18.01.2008, 17:29
  4. Antworten: 1
    Letzter Beitrag: 02.10.2007, 18:35
  5. WINCC Eingabefeld Eingabe Eingrenzen
    Von Bender25 im Forum HMI
    Antworten: 7
    Letzter Beitrag: 10.03.2005, 09:31

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •