Beiträge von Catamanta

    Hallo whnt,


    Hatte auch schon mal versucht, über VisualBasic eine Variablendatei, genannt "Variablen.src" zu generieren.
    Hat auch alles wunderbar funktioniert. Nur ein Problem war bei der ganzen Sache:
    Wenn man einen Wert verändert hat und die Datei dann in der BOF geöffnet hat, waren immer noch die alten Werte drin gestanden. Hatte ich in diese Datei dann ein Zeichen(Leerzeichen od. Kommentar) reingeschrieben und dann geschlossen wurde die Datei dann überprüft u. die Änderungen waren dann vorhanden.


    In Deinem Fall würde ich mir eine Variable in der $config.dat erstellen, die kannst Du jederzeit beschreiben.


    Grüße


    Pascal

    Hallo Lieber Weihnachtsmann,


    das einzige Argument was ich immer wieder höre bezüglich der Vorteile eines ABB´s gegenüber KUKA ist die Möglichkeit der Eingabe eines Korrekturwertes(Offset) direkt im Verfahrbefehl. Eine erweiterung des Inlineformulars für einen Bewegungssatz um diese Funktion würde den ABB recht einfach in den Schatten stellen.


    Gruß an Lindemann Paul
    PS: Immer noch im Customer Support?


    Pascal

    Tja Leute,


    dann sag ich mal vielen Dank für Eure Behmühungen das Problem zu lösen. Sieht mir nicht nach gut durchdachtem Konzept seitens ABB aus. Werd wohl hergehen müssen u. mir für jede Position ein Signal deklarieren mit dem ich dann in einem Hintergrundtask( wie sps.sub bei KUKA) in Abhängigkeit des Signals eine Positionsnummer generiere. Ist zwar ein bisschen Schreibarbeit, aber so gehts auch.


    Mal was anderes: Was wenn ich mal wie bei meinem letzten Auftrag ca. 1700 E/A´s über den Profibus schaufeln muss. Bei KUKA schreibe ich die Langtexte mit Excell u. erzeuge dann eine Textdatei die ich dann in der BOF über das Inbetriebnahmemenü "Langtexte" laden kann. Aufwand ca. 2 Stunden.


    Geht das bei ABB auch so ähnlich, oder muss ich mir da 3 Tage für Zeit nehmen?? :denk:


    Liebe Grüße


    Pascal

    Hallo nochmals,


    interresante Vorschläge. Vielen Dank für die Anregungen.
    Option Homeposrunning hört sich nach mehr Zahlen(Geld) an. Gibt es denn keine Möglichkeit sich solch eine
    Trigger-Struktur selber zu schreiben die mir dann eine Variable beschreibt?


    Oder anderer Vorschlag:
    Wenn ich zur Schaltaktion des Triggers eine Routine aufrufen kann, ist es dann möglich, aus einer Systemvariablen die Aktuelle Position, damit meine ich die Positionsbezeichung als String, auszulesen?



    Danke schon mal :danke:


    Pascal

    Hallo Liebe Programmierer,


    mit welcher Trigger-Anweisung kann ich eine Variable beschreiben um im Fehlerfall geziehlt eine
    Rückzugstrategie fahren zu können.


    Beispiel KUKA:


    TRIGGER WHEN DISTANCE=1 DELAY=0 DO ROBPOS=1
    PTP STARTPOSITION


    Die Variable ROBPOS ist somit meine Positionswariable mit dem jeweis entsprechenden Zahlenwert der Aktuellen Roboterposition.


    Nun Frage, wie in Rapid(ABB IRC5)???
    Hilde wäre super. :hilfe:


    Pascal

    Hallo Zusammen,


    ziehe mir gerade die IRC5 rein. Programmiere aber schon lange KUKA.
    Für gewisse Anwendungen habe ich mir Standartroutinen geschrieben, die bei KUKA im SPS.sub ausgewertet werden. Da sich ab- und zu einfach nur die E/A Signale ändern habe ich mir die Routinen bezüglich den verwendeten E/A´s variabel gestaltet.


    Ein kleines Beispiel:
    Deklaration in $config.dat
    ;Eingänge--------------------------------------------------------------------------------------
    INT I_Roboter_Start=1 ;Die Nummer entspricht dem verwendeten Eingang
    INT I_Roboter_Stop=2
    INT I_Roboter_Reset=3
    ;Ausgänge--------------------------------------------------------------------------------------
    INT O_LED_Roboter_Start=1 ;Die Nummer entspricht dem verwendeten Ausgang
    INT O_LED_Roboter_Stop=1
    INT O_LED_Roboter_Reset=1



    SPS.Sub


    IF $IN[I_Roboter_Start] THEN
    $OUT[O_LED_Roboter_Start]=TRUE
    ENDIF


    Somit brauche ich jetzt nur die richtigen Nummern der verwendeten E/A´s in der $config.dat einzutragen
    und das Programm funktioniert wieder.


    Soooo, und wie kann ich das ganze jetzt bei ABB umsetzen. Für verschiedene Antworten wäre ich sehr
    dankbar. :hilfe:


    Pascal

    Hallo daChecka,


    ich müsste zuerst folgendes wissen:


    - Verwendest Du OfficeLite in Verbindung mit KukaSimPro oder schreibst Du das Roboterprogramm in KukaSimPro?
    - Wie erkennt Dein Greifer das Bauteil? Du benötigst zum Erkennen des Bauteils einen Sensor.


    Am einfachsten ist Dein Greifer mit den vorgefertigten Greifern in KukaSimPro mal zu vergleichen ob du alle Behaviors und deren Einstellungen genau so hast.


    LG
    Pascal


    PS: Habe keine Bilder als Anhang gesehen.

    Hi,


    Im sps.sub kannst Du unabhängig vom Programm Variablenzustände zyklisch abfragen.
    SPS.sub ist wie eine SPS und wird immer zyklisch durchlaufen.Deshalb auch nie (wait sec,wait for od halt) programmieren.
    Beispiel: SPS.sub


    IF ((Varwert==1) And ($Flag[1]==False)) Then
    $Flag[1]=True
    $OUT[x]=True ;Signalflanke für Auslösen des Interrupts
    Else
    $Flag[1]=False
    $OUT[x]=False
    Endif


    Jetzt musst Du nur noch einen Interrupt declarieren und ihn aktivieren.
    Ein Interrupt reagiert immer auf eine Signalflanke.
    Hauptprog:
    Decl Interrupt 10 When $OUT[x] Then Do UP1 ()
    Interrupt ON 10


    Interruptunterprogramm:
    Interrupt Off 10
    Brake


    So. Ist jetzt der Variablenwert Varwert gleich 1 dann wird ein Ausgang gesetzt. Diese Signalflanke erkennt der Interrupt und wird das im Interrupt aufgerufene Unterprogramm ausführen.
    Je nach dem, ob du das laufende Programm abbrechen möchtest oder an der Stelle weiter bevor der Interrupt ausgelöst wurde ist auf die Unterprogrammstruktur zu achten.
    Das heißt z.B. eine Resume Anweisung muss mind. 2 Ebenen tiefer liegen wie die Interruptdeclaration.
    Bei Return wäre das egal.
    So nun gut. :ylsuper:

    Hallo Zusammen,


    kurze erklärung mal zu KUKA und USB:


    Hintergrund, warum es bei KUKA keine USB-Unterstützung gibt ist die Prioritätsvergabe der Interrupts unter Windoof.
    Das heißt: Die Echtzeitfähigkeit des Grundsystems VXWORKS muss unter allen umständen aus Sicherheitsrelevanten Aspekten erhalten bleiben.
    Alle 12ms bekommt Windoof 1ms zugewiesen.
    Sämtliche Interrupts des Grundsystems besitzen eine höhere Priorität wie die von Windoof.
    So jetzt kommts: Würde mann jetzt unter laufendem Betrieb ein Gerät an die USB-Schnittstelle anschließen, versucht Windoof dieses Gerät zu installieren.
    Und genau da ist der Hund begraben. Windoof löst einen Interrupt mit einer höheren Priorität als VXWORKS aus und die Echtzeitfähigkeit des Grundsystems ist für
    einen Moment nicht mehr gewährleistet und somit auch nicht mehr die Sicherheit.


    Deshalb ist bei KUKA standartmäßig der USB-Port im Gerätemanager deaktiviert.
    Genau so bei KUKA SW 5.xx unter WinXP.


    Einfachste Möglichkeit auf die Robotersteuerung zuzugreifen ist über Ethernet.
    Auf der MFC-Karte ist ein Ethernet-Controller verbaut. Er muss nur aktiviert und konfiguriert :zwink: :zwink:werden.

    Hi BIM,


    probiers mal hiermit:


    DECL INT ANSWER
    DECL INT OFFSET
    DECL STATE_T STATE
    DECL MSG_T EMPTY_MSG


    EMPTY_MSG={MSG_T: VALID FALSE,RELEASE FALSE,TYP #STATE,MODUL[] " ",KEY[] " ",PARAM_TYP #VALUE,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0}



    $MSG_T.RELEASE=TRUE


    WHILE $MSG_T.VALID
    WAIT SEC 0.05
    ENDWHILE
    WAIT SEC 0.2


    $MSG_T=EMPTY_MSG
    $MSG_T.MODUL[]=" "


    $MSG_T.KEY[]="Schweisspunkt %1 fertig"
    OFFSET=0
    SWRITE($MSG_T.PARAM[],STATE,OFFSET,"%d",ROBPOS)
    $MSG_T.PARAM_TYP=#VALUE


    $MSG_T.RELEASE=FALSE
    $MSG_T.VALID=TRUE


    In %1 ist der Variablenwert von ROBPOS enthalten.

    Hallo Zusammen,


    die Devicenet-Meldung ist ganz normal.
    Kommt, wenn die Spannungsversorgung vom Devnet beim Herunterfahren unterbrochen wird.
    Bus einfach mit 24 V extern versorgen.


    Hello,


    The Devnet message is normal.
    This happens, because while shutting down the controller the power supply will be interrupted.
    Supply the Devnet with external 24 V.

    Wenn Du zur Ansteuerung deines Roboters in der Simulation OfficeLite verwenden willst, dann musst du an der Greifposition den Ausgang 1 setzen und beim Loslassen wieder rücksetzen. Der Sauggreifer wie im Bild vorher ist schon vorkonfiguriert, Du musst den Greifer nur über die PnP Schnittstelle an die A6 des Robotermodells binden.
    Dass mit dem genauen Ausrichten zur Aufnahmeposition stimmt nicht ganz, weil der Teile-Erkennungsbereich des Greifers verändert werden kann.
    Erkennungsbereich liegt zwischen: SensorLower und GraspSensorUpper.
    Wenn man den Greifer ausgewählt hat, dann kann man auf der Linken Seite oberes Fenster Register-Parameter genau diesen Erkennungsbereich einstellen.