Gripper an einem KR3 aus RSI ansprechen

  • WolfHenk :
    genau, die stecker sind klar, und auf die systemvariablen kann ich mit RSI auch zugreifen, aber ich weiß einfach nicht welche variablennnummern die richtigen sind.


    IrrerPolterer:
    außer den karten, die ich einige posts weiter unten genannt habe, sind glaube ich keine karten drin, aber ich dachte,daß die DSE-IBS karte für digitale IO zuständig ist, oder stimmt das nicht.
    Das Manual, das ich zur Hand habe ist leider nicht sehr ausfühlich was die beschreibung der einzelnen komponenten angeht.
    Mein KR3 ist auch schon einige Jahre alt, also wahrscheinlich der, von dem du gesprochen hast.
    Die Ventilanschlüsse sind seitlich bei achse 4 angebracht (im Manual als Pneumatikkupplung bezeichnet), und auf der anderen seite ist noch ein stecker (E/A-Stecker im Manual), aber der bringt mir ja nichts, da ich ja einen Pneumatikgreifer und keinen elektrischen habe, richtig?


    Mein Problem kurz in 2 Sätzen:
    Ich habe:
    pneumatikgreifer, luftschläuche von greifer zu ventilen, druckluftgenerator, alter kr3 der von krc3 gesteuert wird, karten siehe unten.
    (ich hoffe das waren die hardwareinfos die du brauchst ?)


    Ich brauche:
    öffnen und schließen des greifers über RSI (also wahrscheinlich indem ich irgendwelche $OUT[?] auf true/false setzte, aber welche?)

  • Schritt für Schritt zum Roboterprofi!
  • Also erstmal ohne RSI probieren:


    So sollte es in der IOSYSINI aussehen:


    [DRIVERS]
    DSEIO=14,dseIOInit,dseiodrv.o
    [DSEIO]
    INB0=0
    OUTB0=0


    Sollte im Abschnitt [MFC] etwas eingetragen sein, ist alles auszukommentieren.


    Nun E/A-Treiber rekonfigurieren.


    An die Pneumatikanschlüsse sind an den Ausgängen $OUT[1] und $OUT[2] schaltbar. Der Ventilschalter funktioniert als bistabile Kippstufe z.B.: PULSE $OUT[1],TRUE,1


    So hat's bei mir funktioniert.



    [EDIT: Vielleicht ist ja noch was interessantes im Anhang]

    Dateien

    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.

    Einmal editiert, zuletzt von IrrerPolterer ()

  • Hi,
    bei mir steht unter
    [DSEIO]
    INDW0=0 ;$IN[1-32]
    OUTDW0=0 ;$OUT[1-32]


    statt
    INB0 = 0
    OUTB0 = 0


    bedeutet das DW statt dem B, daß ich Digitalwerte benutzen kann?
    (wenn ja, welche der jeweils 32?)


    btw.
    muß ich die werte unter [MFC] auch auskommentieren, wenn die MFC-treiber an sich unter [DRIVER] schon auskommentiert sind (nur zum verständnis, damit ich verstehe was wofür in der iosys.ini steht)


    den versuch mit PULSE werde ich morgen starten


    danke,soweit (vorerst :) )


  • Das heißt, daß da 32 Bit vorrätig sind (DoppelWort)


    btw.
    muß ich die werte unter [MFC] auch auskommentieren, wenn die MFC-treiber an sich unter [DRIVER] schon auskommentiert sind (nur zum verständnis, damit ich verstehe was wofür in der iosys.ini steht)


    nein, wenn der Treiber raus ist, ist der rest irrelevant


    den versuch mit PULSE werde ich morgen starten


    danke,soweit (vorerst :) )


    viel Erfolg

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.


  • bedeutet das DW statt dem B, daß ich Digitalwerte benutzen kann?


    :huh: Ähhh...nein...
    DW=DWORD=Doppelwort (32Bit)
    B=BYTE (8Bit)



    muß ich die werte unter [MFC] auch auskommentieren, wenn die MFC-treiber an sich unter [DRIVER] schon auskommentiert sind (nur zum verständnis, damit ich verstehe was wofür in der iosys.ini steht)


    Eigentlich macht es keinen Sinn, aber laut meinen Aufzeichnung muss es auskommentiert werden.


    Hast du eventuell irgendwelche Fehlermeldungen im Meldungsfenster anstehen? Kannst du die Ausgänge nicht setzen?

    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.

    Einmal editiert, zuletzt von IrrerPolterer ()

  • IrrerPolterer :
    "bedeutet das DW statt dem B, daß ich Digitalwerte benutzen kann"
    sorry, das war tatsächlich echt dämlich...


    fehlermeldungen habe ich keine, aber es passiert auch nichts (zumindest nicht mit dem code, den ich ganz am anfang gepostet habe). und die werte der ausgänge kann ich auch nicht wirklich ansehen, da sie anscheinend nur selten in der anzeige im kcp geupdatet werden.


    Tut mir wirklich leid, wenn ich dir nicht ausreichend mein problem erklären kann.
    da dies mein erstes projekt mit einem roboter ist, weiß ich oftmals selber nicht genau WAS das problem ist und WIE ich zur lösung komme.


    aber ich werde jetzt schritt für schritt vorgehen:
    erstmal den PULSE -code allein testen in nem mini-programm und dann schauen wie ich das ganze aus dem RSI aus umsetzte (wobei ich befürchte mit all denen ansätzen probleme zu haben, wo ich aus der RSI routine rausspringen muß, aber eins nach dem anderen )

  • sooo, jetzt hatte ich auch mal wieder zeit mich um den roboter zu kümmern...


    wenn ich ein leeres modul erzeuge und nur die ausgänge OUT[1] und OUT[2] mit dem PULSE befehl auf high setze, dann funktioniert alles wunderbar (danke @ IrrerPolterer, jetzt bin ich wenigstens mal einen schritt weiter).


    jetzt hab ich aber immernoch das problem daß ich das mit RSI machen muss.


    ich habe also den wert, der aus meinem Ethernet-Objekt rauskommt in ein ST_P geschleust, und gehofft, dass ich von dort aus irgendwie auf die OUT[]'s komme. leider klappt das nicht (was ja auch sinn macht, da ja OUT[] kein RSI-Objekt ist), aber ich hab keine ahnung wie ich den wert von ST_P an OUT linken kann.


    Das waren die beiden wege, die mir eingefallen sind, um das zu erreichen:
    (eins vorweg: ich will den gripper im moment nur schliessen, dh bei offnen und schliessen brauchte ich naturlich noch eine 2. variable, aber das ist ja dann nur copy-paste falls die eine richtung tut)


    1. hier hat sich einfach gar nichts bewegt... (weder der greifer noch die variablenanzeige)

    Code
    ;err=ST_MAP2DIGOUT(gripper,0,ethernet_obj,7, 1,0)    ; ich habs auch mit Byte bzw Word versucht, kein unterschied


    2. hier kam ein fehler, dass sie syntax falsch ist (was ich auch einsehe, aber ich weiss nicht wie ich die syntax korrigieren muss um zu erreichen, dass der ethernet-wert bei OUT ankommt)

    Code
    err = ST_P(gripper,0,ethernet_obj,7,1.0,RSIUNIT_No)
    err = ST_NEWLINK()gripper,1,$OUT[1],1)


    hat irgendjemand ahnung wie man das mit RSI hinbekommt?


    vielen dank.
    Grüße, ML

  • Hallo,


    habe keine Ahnung von RSI. Hab ich noch nie gebraucht. Aber:


    err = ST_NEWLINK()gripper,1,$OUT[1],1)


    Die Klammer kann nicht stimmen.

    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.

  • Nabend,


    das RSI ST_P Objekt wird gebraucht um einen Proportionalfilter im RSI zu bauen (sozusagen das P aus PID). Die Input und Outputsignale sind für dieses Objekt als Real definiert. Für deine Zwecke nicht zu gebrauchen. Ich weiss leider auch nicht ob es ein Objekt in RSI gibt mit dem man Pulsen kann. Aber viele Ventile kommen auch mit "Dauer-Ein" zurecht oder du handelst den Puls in Matlab.


    In deiner XML Datei mit der du das ST_ETHERNET Objekt konfigurierst müsste sowas wie

    Code
    <ELEMENT TAG="GREIFERAUF" TYPE="BOOL" INDX="7" UNIT="0" HOLDON="0" />


    stehen.


    Und mit

    Code
    err=ST_MAP2DIGOUT(greiferauf,0,ethernet_obj,7, 1,0)


    müsste der richtige Ausgang schon gesetzt werden je nachdem was in deinem ST_ETHERNET Objekt so ankommt.


    Alternativ gibt es noch die Objekte ST_SETDIGOUT und ST_RESETDIGOUT.


    MfG

  • @ IrrerPolterer:
    die klammer ist ein typo, sorry


    @ mr_hong:


    leider läuft auf dem kr3 kein neues RSI, sondern nur das alte ohne xml, aber der tipp, daß ST_P nur reals ausspuckt ist sehr hilfreich, das wußte ich nicht. vllt liegt ja die syntaxfehlermeldung daran. mal schauen.


    grüße,ML

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