Stueckzaehler, abfrage, Fehlermeldung?

  • Hey, verfolge dieses Forum schon etwas laenger, nun aber Registriert um meine Fragen zu stellen und eventuell auch anderen zu helfen.


    Hier meine Frage:


    ich habe an einer Schleifzelle einen Bandzaehler, dieser laeuft aber durch (bis 999).

    nun moechte ich dass jeder Mitarbeiter seine eigenen Stueckzahlen in einer abfrage angeben kann sodass er z.B. nach 250 gefertigten teilen das Band wechseln soll und eine Fehlermeldung bekommt.

    Die Abfrage klappt soweit schon, nur wenn er seinen soll erreicht hat fragt er einfach erneut wieviele Teile gefertigt werden sollen, aber ohne Fehlermeldung?

    Kann mir eventuell jemand behilflich sein? hier meine Routine:


    PROC Anzahl()

    VAR string stTeilesoll;

    PERS num nTeileSoll:=200;

    VAR num nTeileIst;

    VAR btnres resAntwort;



    WHILE resAntwort<>resYes DO


    nTeileSoll:=UINumEntry(

    \Header:="Sollteilezahl"

    \Message:="Wieviele Teile sollen gefertigt werden?"

    \Icon:=iconInfo

    \InitValue:=200

    \MinValue:=1

    \MaxValue:=200

    \AsInteger);


    UIMsgBox


    \Header:="Bestätigungsabfrage",

    "Sollen wirklich "+NumToStr(nTeileSoll,0)+" gefertigt werden?"

    \Buttons:=btnYesNoCancel

    \Icon:=iconWarning

    \Result:=resAntwort;


    IF nTeileist>nTeilesoll THEN

    Set DO_StoerungProgAbl;

    Stop;


    ELSE

    nTeileist:=nTeileist+1;

    ENDIF



    ENDWHILE


    ENDPROC




    Vielen Dank schonmal fuers anschauen!

    (hoffe habe mich verstaendlich ausgedrueckt:D)

    Gruß

  • ANZEIGE
  • Ist doch eigentlich klar warum er das tut.


    Prüfe einmal bitte selbst folgenden Sachverhalt:

    1. Wann prüfst du auf einen Fehler der Stückzahl!

    2. Wann zählst du deinen Zähler hoch!


    Dann solltest du selbst auf die Lösung kommen. ;)


    Befehl "Incr" geht übrigens ebenfalls. ;)


    Gruß

    Sven


    P.S.: nicht schlimm wenn nicht, dann bitte noch einmal melden.

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • hier noch mal die aktuelle Prozedur, habe viele andere Projekte gehabt, nun wieder zeit mich daran zu setzen. eventuell kann mir ja noch jemand helfen



    PROC Anzahl()

    VAR string stTeilesoll;

    PERS num nTeileSoll:=200;

    VAR num nTeileIst;

    VAR btnres resAntwort;



    WHILE resAntwort<>resYes DO


    nTeileSoll:=UINumEntry(

    \Header:="Sollteilezahl"

    \Message:="Wieviele Teile sollen gefertigt werden?"

    \Icon:=iconInfo

    \InitValue:=200

    \MinValue:=1

    \MaxValue:=200

    \AsInteger);


    UIMsgBox


    \Header:="Bestätigungsabfrage",

    "Sollen wirklich "+NumToStr(nTeileSoll,0)+" gefertigt werden?"

    \Buttons:=btnYesNoCancel

    \Icon:=iconWarning

    \Result:=resAntwort;


    IF nTeileist>nTeilesoll THEN

    Set DO_StoerungProgAbl;

    Stop;


    ELSE

    nTeileist:=nTeileist+1;

    ENDIF



    ENDWHILE


    ENDPROC



    ENDMODULE


    CONST listitem list{1}:=[["",Mit Teilezaehler Produzieren?""]];

    VAR btnres button_answer;

    list_item:=UIListView(

    \Header:="Auswahl !",list

    \Buttons:=btnOK

    \Icon:=iconInfo\

    BreakFlag:=err_var);


    MaxTime 10


    IF list_item=1 THEN

    Anzahl;

    EndIF

    • Hilfreich

    Ich hoffe ich hab die Aufgabenstellung richtig verstanden.


    Für mich liegt dein Fehler darin das du im ELSE zweig hochzählst


    Du müsstest aber bevor du abfrägst wieviele Teile produziert werden sollen hochzählen sonst machst du immer eins mehr als angegeben.

    So sollte das dann aussehen:

    Code
    nTeileist:=nTeileist+1;
    
    IF nTeileist>nTeilesoll THEN
    
    Set DO_StoerungProgAbl;
    
    Stop;
    
    ENDIF
  • danke!

    werde es am Montag ausprobieren und mich melden.

    aber danke erstmal für die Hilfe.

    Allen ein schönes Wochenende!

  • Moin hoppemensch,

    deine Variante würde ebenfalls funktionieren wenn deine Variable nTeileSoll um "1" grösser ist wie deine gewünschte Menge an Teil.

    Ist aber programmiertechnisch und aus logischer Sicht her nicht ganz so schick, gehen würde das aber schlussendlich auch.

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden