Probleme mit eingebundenem Programm // Timern und Interrupts

  • Hallo :)


    Auch ich zuerst muss sagen ich bin echt begeistert von diesem Forum!
    Ich schreibe gerade meine Bachelorarbeit und habe hier schon viel in Erfahrung bringen können.
    Aber nun komme ich auch nicht drum rum selbst um Hilfe zu fragen.


    Erst einmal das Grundlegende.
    Es handelt sich um einen Kuka KR C2 der mit einem alten S/W Vision System gekoppelt ist. Die Kamera erkennt Schmiedeteile und der Roboter greift diese dann von einem Förderband. Anschließend führt er diese einer nachfolgenden Anlage zu.


    Die Anlage ist sehr fehleranfällig und um eine Aussage darüber treffen zu können, wo es harkt möchte ich gewisse Zeiten messen können. Welche Zeiten das sind und auf welche Signale reagiert werden soll steht bereits fest.


    Auf diese Signale soll mittels Interrupts reagiert werden. Diese starten bzw stoppen dann den entsprechenden Timer. Auch soll es nachher möglich sein, diese Werte auszugeben und später auswerten zu können. Ausgabe der Werte mit Swrite in Infobox. Nachher Analyse des Logbuches.


    Soweit so gut. Ich habe die Anlage von einem vorherigen Bacheloranten übernommen. Dieser hatte diese Programme bereits soweit geschrieben. Allerdings ist das eine Zeit lang her und leider kam es zu einem Defekt der Systemfestplatte des Roboters und der SPS(Kontaktaufnahme mit dem alten Bacheloranten ist nicht möglich leider exestieren auch keine Sicherungen von ihm). Mit Ghost konnte ich eine altes Abbild des Systems aufspielen auch eine recht alte Sicherung der Programme konnte ich wieder herstellen.


    Das Problem: Alles ist jetzt dureinander gewürfelt. Die Handhabungsfunktion des Roboters konnte ich nach 2 Wochen Kalibrierung wiederherstellen. Die Bestückung der Folgemaschine funktioniert also. Allerdings ist es mir nicht möglich die angesprochenden Zeiten zu messen.
    Die Timer laufen zwar richtig. Allerdings erschließt sich mir nicht warum. Die Datei messprogramme.src (vom alten Bacheloranten. startet und stoppt die Timer) ist in keins der vorhandenen Programme eingebunden. Auch finde ich nirgends entsprechende Interrupts welche die Timer starten könnten.
    Die Ausgabe der Messwerte des Timers gehschieht allerdings nicht. (Auch in Datei messprogramme verankert)


    Zur Struktur: Es gibt ein Cell Programm, welches jeh nach entsprechendem Bauteil welches von der Kamera erkannt werden soll, das passende Unterprogramm aufruft. In diesem sollten (meiner Meinung nach) die Aufrufe zu den Timern passieren. Bzw die Interrups ausgelöst werden.


    Nun wollte ich die Datei messprogramme erst einmal komplett löschen um Stück für Stück eine Lösung zu erarbeiten oder die Programme selber neu zu schreiben.
    Allerdings kann ich dieses Programm nicht löschen, da sich ein kleines "Kettensybol" an der Datei befindet. Wo kommt das her? Die Datei ist wie gesagt in keinem Programm aufgerufen.


    Kann mir nun vlt wer sagen warum die Timer trotzdem laufen, wie ich das Programm löschen kann, wo ich die Interrupts deklarieren sollte und ob ich unterprogramme () einmal im Cell Programm aufrufen muss?


    Über Themen Interrupts, Timer und swrite zur Ausgabe habe ich mich bereits soweit es ging informiert.

    Einmal editiert, zuletzt von BobRob ()

  • Schritt für Schritt zum Roboterprofi!

  • Hier übrigens der messprogramme code.
    Achja und auch alle anderen Methoden werden nicht außerhalb dieser Datei aufgerufen

  • Dass du das Programm nicht löschen kannst liegt wohl daran, dass es gebunden ist.
    Entweder hast du noch ein Programm aktiv, welches einen Aufruf des zu löschenden Programmes enthält
    dann Menü Bearbeiten>Programm abwählen
    oder
    oder es wird vom Submit Interpreter aufgerufen.
    Dann Menü Konfiguration->SUBMIT Interpreter->Abwählen. Dann müsste auch das "Kettensymbol" verschwinden bzw. Submit öffnen und Aufruf entfernen.


    Die Timer laufen weiter, wenn sie gestartet aber nicht gestoppt werden, z.B. bei Programmabbruch.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Stimmt das Kettensymbol verschwindet, wenn ich den Submint Interpreter abwähle.
    Allerdings kann ich das Programm immer noch nicht löschen. :denk:


    Und das komische an den Timern ist, dass sie genauso funktionieren, wie sie sollten. Also die passenden Stillstandszeiten wenn auf ein erkanntes Bauteil gewartet wird werden gemessen und der Timer dann an entsprechender Stelle neu gestartet.


  • Allerdings kann ich das Programm immer noch nicht löschen. :denk:


    Entferne den Eintrag aus dem Submit und versuche es nocheinmal. Ansonsten Kaltstart ausführen...



    Und das komische an den Timern ist, dass sie genauso funktionieren, wie sie sollten. Also die passenden Stillstandszeiten wenn auf ein erkanntes Bauteil gewartet wird werden gemessen und der Timer dann an entsprechender Stelle neu gestartet.


    Wenn die Timer mit $TIMER_STOP[nummer] = TRUE gestoppt werden, sollten Sie auch nicht weiterlaufen, es sei denn sie werden noch irgendwo anderswieder gestartet. Ein Archiv könnte hier Licht ins Dunkel bringen.


    Noch mal als kleine Überblick:


    Code
    $TIMER_STOP[1]=FALSE     ;Startet Timer 1
    $TIMER_STOP[1]=TRUE      ;Stoppt Timer 1
    $TIMER[1]=0                      ;Weist Timer 1 den Wert 0 zu
    $TIMER[1]=-500                 ;weist Timer 1 den Wert -500 zu
    $TIMER[1]                          ;enthält den aktuellen Wert von Timer 1
    $TIMER_FLAG[1]                ;enthält ein Bit, ob der Timer 1 einen positiven enthält

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • So wie es aus deinem Code hervorgeht, sind wohl Interrupt 1 - 6 am Aufruf deiner Messroutinen beteiligt. Obwohl die Verwendung von Interrupt 3 eigentlich für den $Stopmess reserviert sein sollte (siehe Init im cell.src)

  • Ah ich habs! :supi:
    Es lag wirklich daran, dass die Unterprogramme der messungen Datei aus dem Submint aufgerufen wurden.
    Ich hatte mir vorher ein Archiv gezogen und nur alle .src und .dat Datein durchsucht.


    Vielen Dank für die Idee mit dem Submint. Wäre ich so nicht drauf gekommen.
    Werde mich da jetzt mal weiter mit auseinander setzen.


    :danke:


  • So wie es aus deinem Code hervorgeht, sind wohl Interrupt 1 - 6 am Aufruf deiner Messroutinen beteiligt. Obwohl die Verwendung von Interrupt 3 eigentlich für den $Stopmess reserviert sein sollte (siehe Init im cell.src)


    Ja über dieses $Stopmess bin ich jetzt heute schon etliche Male gestolpert. Das taucht in jedem Programm auf.
    Das scheint ja sowas wie ein Standart Interrupt um Fehler zu bewältigen zu sein.


    Wo wir jetzt schon bei Interrupts sind. Macht es Sinn, diese wirklich im Submint zu definieren oder kann ich das auch genauso gut im Cell Programm machen?
    Wenn ich das richtig verstanden habe, müssen die Definitionen doch nur einmal richtig durchlaufen werden und dann wird direkt, wenn das entsprechende Signal anliegt, in die Methode gesprungen, die hinter DO steht?!


    So sind sie jetzt im Submint definiert:


    Und den Interrupt 3 werde ich dann vorsichtshalber mal durch einen anderen ersetzen.

  • Guten Morgen,


    das kannst du genauso gut im Cell machen.
    Ziemlich hoch priorisiert das ganze, muss das sein? Ich hab da immer Bauchweh (auch wenn ich noch keine schlechten Erfahrungen gemacht hab)


    Gruß,
    Robotermann
    ps: "Wenn das entsprechende Signal anliegt" ist nicht ganz korrekt, korrekter wäre "Wenn ein Wechsel auf den angegebenen Signalzustand erfolgt" - der Interrupt braucht die Flanke.

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