Routine Parmeter mit Eingangssignal

  • Ich habe mir eine Routine gebastelt mit einen Übergabe Parameter für ein digitales Eingangssignal

    Suche_X(dionum Suchsensor)

    Soweit so gut...

    Ich kann den Suchsensor aber nicht in einer

    SearchL\Stop,Suchsensor,\HighLevel...... verwenden


    Fehler: Typenkonflikt bei erwartetem Typ bool und gefundenem Typ dionum.


    Gibt's da was zum umwandeln?

  • ANZEIGE
  • Nimm mal einen Alias her da geht es das der Übergebene Signalname auch vom Status her aktualisiert wird in der Routine. ;)


    z.Bsp.:


    PROC rTest(

    num nWert,

    string stGoupOutputValue)


    VAR rawbytes raw_data;

    VAR signalgo alias_go_OutputValue;

    ! Definieren des geswuenschten Bereiches

    AliasIO stGoupOutputValue,alias_go_OutputValue;



    Du musst halt beim Routinenaufruf einen String mit dem Signalnamen übergeben, stGoupOutputValue ist in diesem Fall ein Übergabeparamter innerhalb der Routine.

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Kannst du bitte einmal deine Code posten, macht es eventuell leichter?

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • 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

  • Warum machst du den Alias dort?


    Übergib doch den Namen als String und den Alias einmalig im Unterprogramm

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Hab das mit dionum vorher auch schon probiert, wird aber von Funktionen nicht als signaldi/do erkannt und somit nicht zu verwenden.

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • 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..............

  • Und wenn du dir einen string beschreibst könntest du dir das erste Alias sparen, aber Hauptsache es funzt. ;)

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Soweit ich mich erinnern kann wir bei der Version vom Loipe nur der aktuelle Status des Signals beim Aufruf der Routine übergeben aber kein Wechsel des eigentlichen Signals innerhalb der Routine mehr erkannt, somit kann dies eine Signalwechsel nicht erkennen. Kann mich aber auch irren.


    Der Vorteil eines ALIAS ist das man den aktuellen Bezug zu dem verbunden Signals hat und dessen aktiven Zustand zu jeder Zeit auswerten kann.


    Aber, ich mag mich auch irren.

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Okay, wieder etwas schlauer.


    Danke dir.

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Jupp, hab es gerade mal getestet und hab mich echt geirrt. Mir war so als ob ich das mal früher, wer weiß genau wann, geprüft und getestet habe bei dem Thema REAL<->NUM etc.

    Hier war mir so das ich auf irgend eine Situation gestoßen war die nicht gefunzt hatte.


    Aber trotzdem, danke für die Info. ;)

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

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