Handbetrieb abfangen

  • Hallo
    ich bin zum ersten Mal hier und hätte folgende Frage.
    Ist es möglich das Signal ABB_Handbetieb abzufangen.
    d.h. wenn der ROB in Handbetrieb geschalten wird sollte z.b. eine Routine aufgerufen.
    Ich habe es mit einem Interrupt versucht, aber wenn der Handbetrieb eingeschaltet wird geht das wohl verloren bzw. wird nicht mehr gelesen.


    Gibt es hier eine Lösung


    Gruß Bruster

  • ANZEIGE
  • Hallo,


    die Robotersteuerung bietet leider keine Ereignisroutine für der Umschalten der Roboterbetriebsart an.


    Man könnte aber das Umschalten der Betriebsart über einen Interrupt in einer Hintergrundtask abfangen.


    Hierzu ist aber die Option "Multitasking" erforderlich.


    Gruß
    Micky

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

  • Am schönsten wäre tatsächlich die Software Option Multitasking, da kann man ständig den Schlüsselschalter bzw OpMode abfragen.
    Zweite Möglichkeit wie schon beschrieben über die Events Start, Restart und/oder Stop eine Routine starten, die den Zustand checkt.
    Wozu brauchst Dus denn?

  • Hy
    Wir schleifen Messing-Armaturen und haben dabei das Problem das einige Einrichter im Programm Punkte teachen und nicht wirklich wissen was sie dabei tun.
    jede Person ist schon mehrmals geschult wurden, brachte nichts. Leider sehen ein paar Personen nicht was geschehen kann.
    Zudem kann über einen externen PC mittels Taste das WOBJ in Stoßrichtung verschoben werden kann.
    Wenn nun dies auf dem PC verschoben wurde und später eine Person etwas teacht muss zuerst der verschobene Wert auf NULL gesetzt werden damit dies später nicht wieder aufgerechnet wird. Nur dies wird immer vergessen.


    Deshalb meine Überlegung:
    Den Handbetrieb abzufangen und diese Werte automatisch auf NULL zu stellen.


    Lösungsansatz:
    Ich habe soeben im Robot-Studio 2 EVENT-Routinen gemacht welche die Tasten STEP und START überwachen und wenn diese tasten dann im HANDBETRIEB gedrückt werden wird ja die Routine aufgerufen.


    Beispiel:
    PROC Hand_BETRIEB_START()
    IF DOutput(ABB_Handbetrieb) = 1 THEN
    TPWrite " START";
    ENDIF
    ENDPROC

    PROC Hand_BETRIEB_STEP()
    IF DOutput(ABB_Handbetrieb) = 1 THEN
    TPWrite " STEP ";
    ENDIF
    ENDPROC



    Dies scheint wohl zu funktionieren, zumindest im Studio


    Ich hoffe das ist verständlich.


    Gruß
    Bruster

  • Hallo
    Tschuldigung das ich mich jetzt erst melde, die Arbeit hat mal wieder gerufen.
    Benutzer wäre nicht schlecht, ist aber nicht gewollt.
    Mit den EVENT-Routinen funktioniert das glaub nicht schlecht.
    Habe es gestern mal testen können.


    Wie funktioniert das mit den TASKS, habe nichts gefunden wie ich einen Task erstellen kann.


    Gruß
    Bruster

  • Also teachen und von extern was verschieben ist natürlich eine gefährliche Kombonation, hast Du ja schon gemerkt.
    Aber ist ein einaches Auf-Null-Schreiben denn wirklich die Lösung? Wenn jemand von extern die Bahn bzw. das Werkobjekt verschiebt hat das ja sicherlich einen Grund.
    WENN es reicht, dann ist Deine Lösung mit den Eventroutinen eine gut Lösung. Ich würde allerdings die Auswertung direkt über die Sytemvariable machen:
    TEST OpMode()
    CASE OP_AUTO:
    ...
    CASE OP_MAN_PROG:
    ...
    CASE OP_MAN_TEST:
    ...
    DEFAULT:
    ...
    ENDTEST


    Ein weiterer Ansatz wäre die Positionen nur in einem Teachprogramm teachbar zu machen und im Arbeitsprogramm nur zuzuweisen. Ist allerdings je nach Umfang beliebig aufwändig.


    Multitasking spar ich mir jetzt erst mal, falls Du da noch was brauchst meld Dich nochmal. Die Doku findest Du in den Softwareoptionen.


    Gruß
    Stromer

  • Hy
    danke für die Info.
    Die Eventroutinen funktioinieren auf jedenfall.
    Werde das mit den Systemvariablen testen.


    Teachprogramm kapier ich nicht so richtig.
    Kanst du mir das im Ansatz erklären.
    Wie mache ich ein normalen MOVEL in ein Teachprogramm ?


    Gruß
    Bruster

  • Das mit dem Teachprogramm meine ich folgendermassen:
    Du machst eine neue Routine z.B. PROC Teachen
    Da drin programmierst Du die ganzen relevanten Positionen hinternander weg also sowas wie
    MoveL pSchleifen1_tch, v100,z5,tSchleifer;
    MoveL pSchleifen2_tch, v100,z5,tSchleifer;
    MoveL pSchleifen3_tch, v100,z5,tSchleifer;
    .
    .
    .
    MoveL pSchleifenn_tch, v100,z5,tSchleifer;


    Im Hauptprogramm oder einer Subroutine machst Du dann die Zuweisungen
    pSchleifen1:=pSchleifen1_tch;
    ...
    pSchleifenn:=pSchleifenn_tch;


    Und im Arbeitsprogramm verwendest Du dann die zugewiesenen Positionen pSchleifenx.


    Wenn da jetzt ein unwissender was überteacht ist die Änderung nach dem nächsten Start wieder rückgängig.


    Hoffe das war verständlich. Ist halt je nach Punktanzahl beliebig aufwändig.


    Gruß
    Stromer

  • Hallo
    Das hatte ich mir schon fast gedacht.
    So etwas hatten wir auch schon mal aber dabei ist das Teachpad sehr langsam und einige Mitarbeiter haben auch mit den Bezeichnungen ein Problem, so das ich das wieder zurücknehmen musste.


    Danke für die Info, ein sehr gutes Forum hier.


    Gruß
    Bruster

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