Programmstart im AutoExt für nicht Cell-Programme verhindern.

  • Hallo


    Ich habe ein Hilfsprogramm, damit der Bediener einige Punkte teachen kann. Die Punkte werden im $config gespeichert. Das Programm ist nicht kollisionsfrei, also muss der Bediener immer von Hand anfahren und dann ein Touch-Up machen.


    Nachher sollte erst das Programm beenden und das Cell starten. Dieses wird von der SPS gesteuert, welche auch die Kollisionen mit anderen Roboter und Pneumatik Geräte verhindert.


    Diese Woche hat der Bediener das Hilfs-Programm nicht beendet und hat die Lichtschranke quittiert. Darauf hin wurde das Hilfs-Programm fortgesetzt und ist kollidiert.


    Wie kann ich verhindern, dass ein Programm, welches nicht von Cell aufgerufen wurde, ausgeführt wird?


    Vielen Dank für eure Ideen.

  • Schritt für Schritt zum Roboterprofi!
  • servus,


    so auf die schnelle wäre dies meine idee:
    wie wäre es, wenn du bei start des hilfprogramms ein signal an die sps ausgibst. solange dieses anliegt, darf die sps den roboter über autoext nicht starten.
    dieses signal lässt du durch die sps.sub wieder zurücksetzen, sobald das programm abewählt wird.

    „Welten, regiert von künstlichen Intelligenzen,<br />mußten oftmals ihre schmerzlichen Erfahrungen machen.<br />Logik kennt keine Gefühle.“

  • Hallo,


    wenn es nicht so viele Punkte sind, und das Hilfsprogramm nie im Automatik-Betrieb laufen soll, würde ich zwischen jeden Punkt


    LOOP
    HALT
    ENDLOOP


    einfügen.


    MfG Peter

    Wer Rechtschreibfehler findet, darf sie behalten!!!&nbsp; :lol:

  • Hallo mlusti,



    Dein erster Beitrag heute? Dann herzlich willkommen!


    Habe ich das richtig verstanden. Du hast ein Hilfsprogramm, welches dazu dient, Positionen zu teachen? Etwa so:


    Code
    PTP p1		
    PTP p2 
    


    Und wenn es nicht abgewählt wird und es ausgeführt hat, dann kann es einen Crash geben?


    Also, da würde ich es zum einen wie Anubis machen. Einen Ausgang am Anfang setzen, der das Starten verhindert, und dann einen am Ende, der den Ausgang zurücksetzt.


    Außerdem würde ich kein Bewegungsprogramm schreiben und Touch Up benutzten, sondern eine Funktion "teachen" schreiben, bei der der Benutzer mit einer Meldung aufgefordert wird, den Roboter an einen bestimmten Ort zu fahren, und teachen (nach Zustimmungstaste) mit px=$POS_ACT.


    Dann würde Dein Hilfsprogramm etwa so aussehen:
    teachen p1 "Position Getränkeautomat"
    teachen p2 "Postion Förderband"
    teachen p3 "Position ..."
    ...


    Diese Programm birgt nicht die genannte Gefahr, da es keinen Bewegungsbefehl enthält.



    Viele Grüße,
    Tilman/Süd-Frankreich



    Hier regnet es immer noch :angry: :angry: :angry:!


  • Oder mit Hilfe eines Interrupts bei nicht T1 das Programm automatisch abwählen.


    ha, da hätt ich doch auch gleich selbst drauf kommen können. naja, wieso einfach, wenns auch kompliziert geht... :uglyhammer_2:

    „Welten, regiert von künstlichen Intelligenzen,<br />mußten oftmals ihre schmerzlichen Erfahrungen machen.<br />Logik kennt keine Gefühle.“

  • Kleine Frage: Darf sich ein Programm selber abwählen?

  • Vielen Dank für den Input.


    Die Idee mit dem Teachen ohne Bewegungsprogramm gefällt mir. Das wäre eigentlich das richtige Lösung, also keine Symptom-Bekämpfung.


    Habe anderweitig nach gefragt und die Idee mit der Variable $PRO_STATE1 aufgegriffen.


    Im INI vom Cell setzte ich einen Ausgang. Diesen kann ich von der SPS überwachen.


    Im Sumitinterpreter überwache ich die Variable $PRO_STATE1, wenn dieser auf #P_FREE geht, wurde ein Programm abgewählt und der Ausgang wird zurückgesetzt. Auch beim Start vom Sumitinterpreter wird der Ausgang zurückgesetzt.


    Klar kann der Bediener während der Ausführung von CELL den Submitinterpreter stoppen.
    Das Cell abwählen, der Ausgang bleibt stehen.
    Aber ohne Summitinterpreter kann kein Programm angewählt werden.


    Eine andere Idee ist die Variable $PRO_NAME1[] zu überwachen. Wenn "CELL" drin steht, läuft auch CELL, auch wenn es in einem Unterprogramm ist. Aber ich habe noch nicht herausgefunden, wie man Felder vergleicht. Ich glaube das Feld exitiert nicht, wenn kein Programm angewählt ist.


  • Habe anderweitig nach gefragt und die Idee mit der Variable $PRO_STATE1 aufgegriffen.


    Im INI vom Cell setzte ich einen Ausgang. Diesen kann ich von der SPS überwachen.


    Im Sumitinterpreter überwache ich die Variable $PRO_STATE1, wenn dieser auf #P_FREE geht, wurde ein Programm abgewählt und der Ausgang wird zurückgesetzt. Auch beim Start vom Sumitinterpreter wird der Ausgang zurückgesetzt.


    jup, also mehr oder weniger mein vorschlag :supi:

    „Welten, regiert von künstlichen Intelligenzen,<br />mußten oftmals ihre schmerzlichen Erfahrungen machen.<br />Logik kennt keine Gefühle.“

  • mlusti,
    Danke für die Beschreibung Deiner Lösung... es führen halt viele Wege zum Ziel!


    Tilman and others :zwink:
    Habe es gerade mal ausprobiert.


    CWRITE($CMD,Stat,Mode,"Cancel 1") in einem Interrupt ergibt bei mir "Verwendung von Laufzeitdaten des Hauptprogramms nicht erlaubt." Irgendwie fände ich es auch logischer, das Programm aus dem Submit-Interpreter heraus abzuwählen.

  • wenn der roboter mit einem automatischen Anlagenanlauf ausgestattet ist kann er ja nur in der BA Auto oder Auto extern gestartet werden. Sollte jetzt Cell grundsätzlich das startprogramm sein, sollte es doch langen das Prog Cell beim umschalten der BA aufzurufen.


    Musterbefehl findet sich im Prog SPS.sub Fold INI

    Man lernt nie aus / Stillstand gleich Rückschritt


  • Musterbefehl findet sich im Prog SPS.sub Fold INI


    Das SPS.sub hat einfach zu viele Folds. Hatte meine Subroutine verloren im Fold";FOLD ;%{H}" :???:


    Beim Umschalten auf AutoExt kann ich dann Cell aufrufen.
    Aber wie wird das PTP Home ausgeführt?


    Was macht P00 (#CHK_HOME,#PGNO_GET,DMY[],0 )
    Gibt dies eine Fehlermeldung auf die KCP aus und wartet bis der Bediener die Homeposition angefahren hat. Aber es gibt keinen Fehler auf #EXT_ERR aus. Da bei uns die Fehlermeldung auf dem Leitsystem angezeigt werden habe ich die Gripper-Tech Kommandos im Code alle raus geschmissen.
    Muss ich auf alle Fälle einfach ausprobieren.


    @all: hier kommt ja einiges an Erfahrung zusammen. Vielen Dank


  • Beim Umschalten auf AutoExt kann ich dann Cell aufrufen.


    Aber wenn der Bediener im Betrieb auf T1 schalten muss um einen Fehler zu beheben (Gripper-Tech) sollte ich beim wieder umschalten nicht unbedingt, dass Cell wieder starten.

  • Hallo


    also Code um Cell automatisch aufzurufen


    ;--------------------------------------------------------
    ;Automatisches anwaehlen von prog CELL
    IF ($mode_op==#EX) AND (b_autext==FALSE) THEN
    CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")
    b_autext=TRUE
    ENDIF


    IF ($mode_op==#t1) OR ($mode_op==#t2) THEN
    b_autext=FALSE
    ENDIF
    ;--------------------------------------------------------


    Bool merker b_autext in der Config declarieren



    P00 Chk Home / wird im Programm Cell ausgeführt zur überprüfung ob sich der Roboter auf Homeposition befindet.
    Sollte dies nicht der Fall sein wird am KCP eine Meldung generiert


    Wenn du nun ein Meldung zum Leitrechner bekommen möchtest kannst du im Programm P00 / DEF CHK_HOME ( ) etwas hinzufügen / die Meldung dann im SPS.Sub bei
    umschalten der BA auf T1 oder 2 wieder loeschen

    Man lernt nie aus / Stillstand gleich Rückschritt

  • Hi,
    Hab das mit den Bediener-Teachen öfters auch schon so gehandhabt, ist jetzt zwar nicht 100% sicher, erfüllt aber auch seinen Nutzen.

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