Beiträge von RobiMan

    wenn es immer nur ein einzelnes Zeichen ist kannst du es doch über:
    die Länge ermitteln

    und dann die ersten 3 zeichen weglassen


    herausfiltern.

    musst mal probieren wie es sich mit den <CR> <LF> zeichen verhält, ob das mitzählt oder nicht.

    Sowas schonmal wer sowas als Fehler gehabt?


    Nagelneus System mit RW14

    Da ist ein externes Bedienfeld dran, ausgewechselt gegen ein anderes=> keine Änderung

    Panel Board getauscht => keine Änderung


    90663: Instabiler Auswahleingang Betriebsmodus

    Beschreibung

    Instabile Eingangssignale von der Betriebsmodusauswahl.

    Folgen

    Das System hält alle Roboterbewegungen an.

    Aktionen

    Wechseln Sie zu einem vorherigen Betriebsmodus, und versuchen Sie es erneut. Wenn das Problem weiterhin besteht, starten Sie das System neu.

    Jetzt schreib ich doch nochmal schnell was.

    OK, der Überlauf kommt also nur durch den Dialog und den dadurch stehenden PZ zustande.

    Bedeutet aber auch das System hat kein Problem damit durch den sich ständig ändernden Gruppeneingang die Interrupts abzuarbeiten. :thumbup:


    Plan war bei passender Bedingung sofort anzuhalten.

    StopMove;

    ClearPath

    CRobT pAcktPos

    Movel pAcktPos

    Start Move

    Movel pAcktPos

    Movel... weiter im Programm


    Ist das ClearPath da zwingend notwendig?

    Zu den Test CyclicBool bin ich nicht mehr gekommen....

    Aber geht geht ja ehhh nicht mit Gruppensignalen. Was aber wahrscheinlich erst beim Aufruf aufgefallen wäre. Übertragen lies es sich fehlerfrei.


    Ich hab jetzt folgendes probiert


    Wenn ich den Interrupt nicht sofort lösche läuft die Warteschlange über wenn die Bedingung in der TRAP erfüllt ist.

    (Warum auch immer das so ist????)


    Was noch fehlt nach den StopMove ist dann ein CRobT und mit Start Move dann weiter.


    Ich mach jetzt aber langes WE und am Montag gehts da weiter.... :)

    So.... Handbuch nochmal gewälzt und gefunden :thumbup:


    Das Thema kannte ich bis jetzt noch gar nicht, Was es nicht so alles gibt :D


    Versuch ich gleich noch zu testen:


    SetupCyclicBool bTest,GInput(giR1B016_Action)<5;

    SearchL bTest,p20,p10,v100,tGripper;

    Es gibt leider keine Instruktion mit welcher ich eine Suchfahrt mit einen Gruppeneingang realisieren kann.


    Also muss ich mir selbst was basteln

    Multitasking habe ich schonmal nicht zur Verfügung ;(


    Also was mit IsignalGi ausgedacht.....


    Wenn ich den Interrupt ohne Single oder SingleSafe ausführe wird der bei jeder Änderung des Signales ausgeführt.


    Meine Frage: Überlaste ich das System damit? Läuft die Interrupt queue damit über?

    Das hatte ich auch schon in der Doku gelesen, aber nicht verstanden wie ich das fehlerfrei anwenden soll


    Das gefällt mir besser ohne den doppelten Alias


    Zitat
    Daten vom Datentyp signalxx......

    Der Datentyp kann hingegen beim Deklarieren einer Routine als Parameter benutzt werden.

    So jetzt...


    in der Routine nochmal aus den übergebenen dionum ein Signaldi mit Alias gemacht.

    So meldet Rapid erstmal keinen Fehler, muss jetzt nur noch funktionieren

    aber erst nach dem Mittag 8o


    LOCAL PROC SucheTray_X1(dionum Suchsensor)

    VAR signaldi DiSuchsensor;

    AliasIO Suchsensor,DiSuchsensor;

    .....

    .....

    SearchL\Stop,DiSuchsensor,\HighLevel,pPo..............

    in der Hilfe zu dionum steht

    Verwendung

    dionum(digital input output numeric) wird für digitale Werte (0 oder 1) verwendet.

    Dieser Datentyp wird gemeinsam mit Instruktionen und Funktionen zur Handhabung von digitalen Eingangs- oder Ausgangssignalen verwendet.


    Na Super, und wie weiter......

    Je nach Palette brauche ich unterschiedliche Sensoren und auch an mehreren Stellen im Programm


    hab grad was gefunden warum es nicht geht:

    DIONUM ist ein Alias-Datentyp für num und übernimmt daher dessen Eigenschaften.

    jetzt brauch blos was was aus num ein bool macht

    Ich muss die Suchfahrt jeweils mit verschiedenen Sensoren aufrufen, Wollte das jetzt endlich mal zu einer allgemeinen Routine umbauen.



    Aufruf:

    AliasIO diR1B064_BG19_XScan,diSensorX1;

    SucheTray_X1 diSensorX1;



    Routine:

    LOCAL PROC SucheTray_X1(dionum Suchsensor)

    ! Suche X- Kante


    MoveL RelTool(pPos_Start_X,SStart_X1.X,SStart_X1.Y,SStart_X1.Z),v150,fine,tGripper\WObj:=wPal;

    Waittime 0.3;

    SearchL\Stop,Suchsensor,\HighLevel ,pPos_X1,RelTool(pPos_start_x,SEnde_X1.X,SEnde_X1.Y,SEnde_X1.Z),vSearch,tGripper\WObj:=wPal;

    !

    ERROR