Ein- und Ausgänge in Record

  • Hallo,
    einer Greiferroutine möchte ich die Greiferdaten (z.B.: Name, Eingang "Greifer geschlossen", Ausgang "Greifer schliessen", ....) in einem Record übergeben, Beispiel für Deklaration:


    RECORD gripperDef
    string grippername;
    signaldi sOpend;
    signaldi sClosed;
    signaldi sPart;
    signaldo sOpen;
    signaldo sClose;
    num failtime;
    num gripperType;
    ENDRECORD


    !-------------------------------------
    ! Greiferdeklaration gripper 01
    !-------------------------------------
    PERS gripperDef gripper01:=[
    "gripper 1",
    diGrp2Opend,
    diGrp2Closed,
    diGrp2Part,
    doGrp2Open,
    doGrp2Close,
    5,
    2];

    diGrp2Opend, diGrp2Closed, ... , doGrp2Open, ... sind in "Konfiguration IO-System" deklarierte Ein- / Ausgänge. Für alle Zeilen mit diesen Ein-/Ausgängen in der Persistenten gripper01 gibt es nun die Fehlermeldung:


    ....: Syntaxfehler(137): Erwartet: num, aber gefunden: identifier.


    Hat jemand ein Idee, wie ich das Problem lösen kann?

  • ANZEIGE
  • Hallo,
    Du musst die Signalnamen als string in dem Record speichern und diese mit "AliasIO" mit einer Signaldeklaration (z.B. signaldi) in Deiner Routine verbinden. Anschließend kannst Du mit diesen Signalen arbeiten.
    Mfg
    Micky

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • Hallo Micky,


    danke für die Hilfe. Ich wollte aber die Greiferroutine so schreiben, dass ich darin nichts an die Applikation anpassen muß. Deshalb wollte ich den Record mit den Signalnamen an die Routine übergeben - so könnte ich auch mehrere Greifer im Definitionsbereich für die Anlage definieren.
    Wenn ich mit Alias arbeite, muß ich aber in der Greiferroutine Anlagensprezifisch deklarieren, oder habe ich da was falsch verstanden?


    Gruß
    Haju

  • Hallo Haju,
    wenn Du in der Greiferdefinition die Signalnamen als "string" definiert und diese an die Greiferroutine übergibst, könnte das Öffnen des Greifers wie folgt aussehen:



    In der Greiferroutine musst Du zuerst für jedes Signal das du benötigst, eine Variable für den Signaltyp definineren (z.B. signaldo).
    Als nächstes musst du mit der Instruktion ALIASIO den realen Signalnamen mit der Signalvariablen verbinden, (z.B. doOpen)
    Anschließend kannst Du die Signalvariable in der Routine wie ein ganz normales Signal verwenden, nur das hierbei das verbundene reale Signal abgefragt bzw. gesetzt wird.
    Bei der Verwendung von AliasIO solltest Du die Fehlerbhandlung ausprogrammieren, so dass Du bei einem Fehler enstprechend reagieren kannst.
    Mfg
    Micky

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

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