Programmierung, Programmstar nur nach checkhome

  • Moin zusammen,


    erstmal großes Lob für die Supporter dieses Forums, bin seit Wochen hier unterwegs und es hat mir sehr geholfen bei der Inbetriebnahme von Devnet und Profibus, nun habe ich ein Problem wodrauf ich noch keine Lösung gefunden habe.


    Wir haben in der Firma ein Fabrikneuen KUKA K6-2 mit KRC2 ed05, aufdem die Software V 5.6.7 läuft.
    Der Roboter wird mit einer übergeordneten S7 im Aut-ext betrieben, soweit sogut, das funktioniert auch alles.
    Nun binich dabei den Roboter zu Programmieren bzw. mir Gedanken über die Sicherheit zumachen.
    Da der Roboter in seiner Umhausung sehr eingeengt ist, habe ich mir folgendes überlegt:
    Nach einem Crash (Crashschutz mit Sensor montiert) oder Auslösen von Not-halt/Schutzeinrichtung möchte ich, dass der Roboter stehenbleibt und es nicht möglich ist, das laufende Programm fortzusetzten, der Bediener soll gezwungen sein, den Robi in T1 auf Home zuverfahren. Dann soll beim umschalten auf Aut_ex das Programm von vorne beginnen.


    In der Cell.src binich auf eine Routine gestoßen, die genau das macht, bei Programmstart.
    also habe ich dardrüber im Code mein Interrupt declariert, welches mit Resume beendet wird.
    Komischerweise läuft das Programm aber direkt weiter wenn der Interrupt abgearbeitet ist, obwohl sich der Robi nicht in Home befindet..
    Packe mal alle Datein in den Anhang, wäre super wenn mir jmd weiterhelfen würde.
    In der SPS.sub rufe ich die Cell.src auf. Da nur ein Programm verwendet wird, habe ich dort die gesamte Programmwahl-prozedur entfernt. Unten im Loop wird dann mit test() mein eigentliches Programm aufgerufen
    "stop_prog" ist mein Interrupt.



    Ansonsten hättich noch ein paar Fragen die im Laufe der Zeit aufgekommen sind.
    in der SPS.sub wird die Cell ja bereits im INI-teil aufgerufen, passiert das nur bei Kaltstart wenn der Wahlschalter schon auf Aut_ex steht?
    Ist es ratsam den kompleten Eintrag rauszunehmen, da ich ja dafür selber was programmiert habe?


    Kann ich Selber Meldungen fürs KCP erstellen die Quitiert werden müssen?
    edit: hat sich erledigt, doku auf der CD gefunden.. warum verstecken die auch alles so ^^


    Das wärs erstmal, kommt bestimmt nochmal was dazu -.-

  • Schritt für Schritt zum Roboterprofi!
  • Im Hauptprogramm gehört das LOOP vor den Check der Grundstellung, dann klappt's.


    Der Teil vor dem LOOP im SPS.SUB wird nur beim Einschalten der Steuerung ausgeführt,
    Ob Du den rausnimmst oder nicht ist Geschmackssache.

    Einmal editiert, zuletzt von Hermann ()

  • Danke, das funktioniert aufjedenfall schonmal besser..


    Irgendwie scheint diese checkhome-funktion etwas buggy zusein, passiert öfters mal, dass mir das KCP meldet "SAK erreicht", der Robi aber abseits seiner Homeposi steht und das Programm nicht weitermacht bevor in T1 in home verfahren wurde.
    Um die Funktion in einem anderen Programm aufzurufen, brauche ich doch nur folgendes kopieren oder nicht?



    Ansonsten würdich noch gerne wissen ob es möglich ist Bewegungen zu verriegeln, z.b. Ich möchte nach einen "Crash", dass der Robi in T1 freigefahren wird, wie realisiert man soetwas?


    Ist es möglich die Ereignis-Log zurückzusetzten?


    Hat jmd evtl ne Doku, wie man ein Programm Sinnvoll Strukturiert? Was ich meine, z.B. bei meinem Interlock, da habe ich ein neues Modul erstellt indem der Code steht.. Ist das Üblich oder würde man eher eine Funktion nehmen?


    Fragen über Fragen :/

  • Die Meldung SAK erreicht bedeutet nicht, dass der Roboter in der Home steht.
    Die besagt nur, dass er sich auf dem geteachten Punkt/der geteachten Bahn befindet.
    Insofern ist die Routine da nicht buggy.


    Wie man seine Programme aufbaut ist Geschmackssache. Da gibt es keine allgemeingültigen Richtlinien.
    Bei manchen Kunden (die meisten Automobilisten) gibt es kundenspezifische Richtlinien.


    Mein Grundprinzip: So einfach wie möglich, nur so kompliziert wie unbedingt nötig, keine GOTO's verwenden.


    Das Erzwingen der Fahrt nach HOME in T1 ist doch mit dem Aufruf von P00(#CHK_HOME.....) gegeben.
    Könnte höchsten sein, dass die Variable CHECK_HOME nicht true ist. Da kann man einfach die
    IF-Abfrage rauswerfen.

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