TPReadFK nach Restart nicht mehr sichtbar

  • Hallo,


    ich habe vor kurzem gerade meinen ersten ABB-Robbi in Betrieb genommen - nach kurzer Einarbeitung mit einem erfahrenen Kollegen hat dies recht gut geklappt, obwohl die Aufgabenstellung recht komplex war.


    Allerdings bin ich auf folgendes Problem gestossen, bei dem mir auch der ABB Service-Center nicht weiterhelfen konnte:


    Im Automatikbetrieb wird Situationsabhängig an mehreren Stellen im Programm die Funktion "TPReadFK" in Verbindung mit einer "WHILE"-Anweisung genutzt, um den Bediener durch Textinformationen aufzuforden eine bestimmte Entscheidung zu treffen. Diese wird durch betätigen eines Function-Keys am unteren Bildrand der Touchscreen ausgelöst.


    Dabei kann folgendes Problem auftreten: Steht der Robbi an genau dieser Stelle im Programm und der Bediener betätigt die "Stop"-Taste, wechselt die Ansicht am Touchpanel von der Textansicht in die Ansicht Programmeditor (z.B., wenn jemand in den Schutzgitterbereich der Roboter-Zelle muss). Nach Betätigen der "Start"-Taste (Restart) wird zwar wieder die Textansicht angezeigt, allerdings fehlen die zur Auswahl stehenden Function-Keys. Dies bedeutet, der Bediener kann das Programm nicht weiterlaufen lassen, da es sich ja immernoch in der WHILE-Schleife befindet.
    Merkwürdigerweise kann durch mehrmaliges Betätigen der "Stop" und anschließend wieder der "Start"-Taste manchmal der Fehler behoben werden. Ansonsten muss der Bediener auf Einrichtbetrieb und danach wieder auf Automatikbetrieb wechseln (Schlüsselschalter) um dann durch erneutes Betätigen der "Start"-Taste in die korrekte Textansicht zu gelangen.


    Ich hoffe ich konnte das Problem einigermaßen verständlich formulieren.
    Ich füge hier noch ein Beispiel aus dem Programm ein:


    WHILE (nFK2<>2)AND(nFK2<>4)AND(nFK2<>5) DO
    IF diFtGrGeoeff=1 THEN
    bSensFtGrAuf:=TRUE;
    ELSE
    bSensFtGrAuf:=FALSE;
    ENDIF
    IF diFtGrGesch=1 THEN
    bSensFtGrZu:=TRUE;
    ELSE
    bSensFtGrZu:=FALSE;
    ENDIF
    IF diFtGrTeil=1 THEN
    bSensTeilFtGr:=TRUE;
    ELSE
    bSensTeilFtGr:=FALSE;
    ENDIF
    TPErase;
    TPWrite " ";
    TPWrite " Sensor FT-Greifer geschlossen "\bool:=bSensFtGrZu;
    TPWrite " Sensor FT-Greifer geoeffnet "\bool:=bSensFtGrAuf;
    TPWrite " Sensor Teil in FT-Greifer: "\bool:=bSensTeilFtGr;
    TPWrite " Merker Teil in FT-Greifer: "\bool:=bTeilFtGr;
    TPWrite " ";
    TPWrite " Ist ein Teil im FT-Greifer? ";
    TPReadFK nFK2,""," erneut pruefen ","Abfrage ignorieren",""," ja "," nein ";
    TPErase;
    IF nFK2=2 GOTO EndPruefGr;
    IF nFK2=4 bTeilFtGr:=TRUE;
    IF nFK2=5 bTeilFtGr:=FALSE;bChFtNIO:=FALSE;
    ENDWHILE



    Für hilfsreiche Tips wäre ich sehr dankbar. :huh:

    Einmal editiert, zuletzt von H. Dreher ()

  • ANZEIGE
  • Hi,


    wie ich das sehe, sollte das Programm schon funktionieren wie gewünscht...


    Um welche Steuerung handelt es sich ? Ich vermute mal IRC5, von wegen Touchpanel (?)
    Laufen noch andere Tasks parallel ?


    Wo befindet sich der Programmzeiger, wenn nach dem ersten Restart wieder Stop gedrückt wird ?
    Immer noch auf dem TPReadFK ?


    Ändert sich das Verhalten wenn die Ausgabe des letzten TPWrite in das TPReadFK übernommen wird ?
    also z.B. so:

    Code
    TPReadFK nFK2," Ist ein Teil im FT-Greifer?"," Erneut pruefen ","Abfrage ignorieren",""," Ja "," Nein ";


    Könnte möglicherweise ja auch ein Fehler im ABB-System sein, wer weiß...


    Wenn alles nichts hilft, dann könnte man auch (als Workaround) das Programm auf Benutzeranforderung an dieser Stelle unterbrechen, wenn der Anwender in die Rob-Zelle muß, also z.B. so:

    Code
    TPReadFK nFK2," Ist ein Teil im FT-Greifer?"," Erneut pruefen ","Abfrage ignorieren"," Prog. anhalten "," Ja "," Nein ";
    ...
    IF nFK2=3 Stop;


    Damit wird zumindest nicht das TPReadFK unterbrochen...



    Was noch zu sagen wäre.... :ks:
    Man könnte diesen Programmteil insgesamt noch etwas schlanker/eleganter gestalten, also z.B. so:


    Sorry, ist zwar leider keine direkte Problemlösung, aber vielleicht bringts dir ja trotzdem was.... :denk:


    Gruß
    rmac

  • Hallo AbFaKuMo,


    da du ja schon in einer Schleife bist, kannst du deinen TPRead-Screen ganz einfach refreshen, indem du den Zusatz "\MaxTime" dazunimmst.


    Nach Ablauf dieser MaxTime ohne Aktion der Function-Keys wird das TPRead übersprungen. Damit die Fehlerbehandlung nicht aufgerufen wird, mußt du den Zusatz "\BreakFlag" auch mit verwenden.
    Du mußt dazu eine errnum definieren (global), in die dann das System den Fehler "ERR_TP_MAXTIME" schreiben kann.
    Beispiel:

    Zitat

    VAR errnum errnoMaxtime:=0;


    Deine TPReadFK Zeile sieht dann so aus:

    Zitat

    TPReadFK nFK2,""," erneut pruefen ","Abfrage ignorieren",""," ja "," nein "\MaxTime:=3\BreakFlag:=errnoMaxtime;


    Damit überspringt das Programm nach 3 Sekunden ohne Eingabe die Zeile und arbeitet das Programm weiter ab. Da ja die Variable nFK2 nicht beschrieben wurde, beginnt die While Schleife von vorne und der gesamte Screen wird nochmals beschrieben.
    Damit hast du auf jeden Fall immer, auch nach Stop o.ä. nach 3 Sekunden den kompletten Screen wieder auf dem Panel.


    Auf jeden Fall die Variable "nFK2" vor Eintritt in die While Schleife initialisieren.

    Zitat

    nFK2:=0;


    Probiers mal aus....


    Gruß Maddin









    \MaxTime:=7\BreakFlag:=errnoMaxtime;

  • Hallo AbFaKuMo,


    ich hatte auch schon mal Probleme mit TP-Befehlen bei der IRC5. Plötzlich hat der TPWrite nicht mehr gewritet.
    ABB hat dazu gemeint man sollte sowieso nur noch die UIMessageBox benutzen. Dieser Befehl eignet sich hervorragend um Bedienereingaben abzufragen. Gibt auch sowas schönes wie UIListView, bei dem man eine Liste zur Auswahl anzeigen kann. Was ähnliches gibts auch für Zahlen usw. Schau Dir mal die Doku zu den ganzen UI-Dingern an, da ist für Dich bestimmt auch was schickes dabei und verschwunden sind mir die Meldungen damit auch nicht mehr.


    Gruß
    Stromer

  • Hallo AbFaKuMo,


    wenn Du eine Ereignisroutine für das Ereignis "RESTART" anlegst und in dieser den Befehl
    "TPShow TP_LATEST;"


    aufruftst, wird das zuletzt verwendete Fenster wieder angezeigt wenn das Programm gestartet wird.


    Vielleicht hilft das bei Deinem Problem.



    Gruß


    Micky

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • Hallo und vielen Dank erst einmal für die vielen Antworten :)


    Ich bin allerdings momentan nicht auf der Baustelle, so das ich die gemachten Vorschläge erst nächste Woche testen kann. Denke aber da ist bestimmt eine Lösung dabei.
    Melde mich dann wieder.


    Also nochmals :danke: und noch ein schönes Wochende!

  • Hallo an Alle!
    Bei mir ist passiert das die Logs beim TP ausgeschaltet waren und kam keine Info!
    Meine Info menü schaut so aus
    PROC Info_IRS()
    TPErase;
    TPWrite "Ausgewählte Type :"\Num:=AktFormat;
    TPWrite "Durchmesser :"\num:=nLagerdurchmesser;
    TPWrite "Planbreite :"\num:=nLagerbreite;
    TPWrite "Deckelhöhe :"\num:=nDeckelhoehe;
    TPWrite "Übergänge Hauptseite :"\num:=nAnz_Seite;
    TPWrite "Übergänge Oben :"\num:=nAnz_Oben;
    TPWrite "Bearbeitung Start :"+Time;
    TPWrite "Taktzeit (in sec.) :"\num:=nTaktzeit;
    ENDPROC
    Ich lösche die anzeige nur beim nächsten write.
    UIMSGBOX wäre viel "schöner".

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