Hallo
ich fahre mit einem Greifer in ein Werkzeug/Stanze ein, und soll zum Schutz des Greifers den Ausgang punktabhängig schalten. nur wenn er auf einer der 20 Positionen ist, darf er den Ausgang als Freigabe setzen. sobald man ihn manuell oder per Programm weggefahren hat, soll die Freigabe weg sein.
Geht sowas?
Danke
Ausgang punktabhängig setzten
- Richard
- Erledigt
-
-
Hallo Richard
Du kannst dir ne Funktion schreiben die überprüft ob dein Aktuelle Position mit einer der Positionen übereinstimmt
dies nimmst du dann als Freigabe für deinen Greifer.im Grunde sowas nur net so dahingeschmiert
Code
Alles anzeigenGlobal DEFFCT BOOL InPos(CheckPos :IN,CurrentPos :IN) E6Pos CheckPos, CurrentPos Bool bOk bOk = ( ABS(CheckPos.X - CurrentPos.X) < rTolX) bOk =bOk And ( ABS(CheckPos.Y - CurrentPos.Y) < rTolY) bOk =bOk And ( ABS(CheckPos.Z - CurrentPos.Z) < rTolZ) bOk =bOk And ( ABS(CheckPos.A - CurrentPos.A) < rTolA) bOk =bOk And ( ABS(CheckPos.B - CurrentPos.B) < rTolB) bOk =bOk And ( ABS(CheckPos.C - CurrentPos.C) < rTolC) Return bOk Endif
musst du nur in den Code einbringen der euren Greifer manuell steuert den ich net kenne
Gruß Loipe
-
Hallo,
was das Greifer Oeffnen vom Programm aus angeht, gebe ich meinem Vorposter recht.
Das Setzen des Ausgangs von hand kannst da aber nicht verhindern.Loessung, die ich sehe, ein Relais zur Freigabe des Greifers.
Zyklisches Flag oder SPS.Sub zieht dir ein Relais an, wenn du in Position bist (code in etwa, das was Loipe vorgeschlagen hat).
Das Relais schaltet dann deinen Ausgang fuer den Greifer durch.
Kann aber zur Verwirrung fuehren, wenn du den Ausgang setzt, wenn du nicht in Position bist, dann faehrts du in die naehe einer erlaubten Position und der Greifer geht auf.Gruss Stefan
-
super, danke für die Antwort.
heisst das, ich mach dieses Scenario hinter jeden freigegbenen Punkt, oder?
also if...(code:) bis endif
was bedeutet bok? könntest du noch ein paar Kommentare in den Code Reinpinseln, damit ich da mehr oder weniger nachvollziehen kann, was was bedeutet, bzw ich auch nen Fehler am Robi finden kann, wenn da was net passt?
Danke Vielmals
-
Code
Alles anzeigenGlobal DEFFCT BOOL InPos(CheckPos :IN,CurrentPos :IN) E6Pos CheckPos, CurrentPos ; Sollposition, IstPosition Bool bOk ; Ergebnis Bool bOk = ( ABS(CheckPos.X - CurrentPos.X) < rTolX) ; wenn X in Toleranz dann bOk True bOk =bOk And ( ABS(CheckPos.Y - CurrentPos.Y) < rTolY) ; wenn Übertrag True und Y in Toleranz dann bOk True bOk =bOk And ( ABS(CheckPos.Z - CurrentPos.Z) < rTolZ) ; wenn Übertrag True und Z in Toleranz dann bOk True bOk =bOk And ( ABS(CheckPos.A - CurrentPos.A) < rTolA) ; wenn Übertrag True und A in Toleranz dann bOk True bOk =bOk And ( ABS(CheckPos.B - CurrentPos.B) < rTolB) ; wenn Übertrag True und B in Toleranz dann bOk True bOk =bOk And ( ABS(CheckPos.C - CurrentPos.C) < rTolC) ; wenn Übertrag True und C in Toleranz dann bOk True Return bOk ;Ergebnis zurückgeben ENDFCT
Im Programm musst du halt schauen ob jeweils einen Punkt oder evtl.alle Positionen gleichzeitig überwachst
für alle Positionen wäre noch interresant sind die alle in der selben Base und Tool. gehen wir mal davon aus
wenn du die Punkte im Array hättest wäre hier zum Vorteil wenn net dann kannst du in einer Initialisierung die zu überwachenden Punkte in ein Array kopierenin eine Public Datenliste oder in die Config Dat
beim Initialisieren
Dann kannst du ein Src schreiben
Code
Alles anzeigenDef ToogleGreifer() INT i ;SchleifenVariable $Tool = Tool_Data[xy] $Base = Base_Data[xy] For i = 1 To 20 If bGreiferwasauchimmerindeinemcodesteht And InPos(CheckPos[i],$Pos_Act) Then If GreiferAuf then GreiferZu() Else If GreiferZu then GreiferAuf () Endif Endif ;kannst sogar noch loggen an welchen Punkt er den greifer genuzt hat Exit ;schleifen abruch weil er nen gültigen Punkt gefunden hat Endif If (i == 20) Then ; Fehlerbehandlung weil er keinen Punkt gefunden hat Endif Enfor End
und im Programm dann nur nochund zack er schaltet nur noch auf deinen Punkten und wenn du Grippertech nutzt dann setzt du dort keine Ausgänge vom Greifer sondern einen Ausgang der Frei ist (ich nehme hier mal den 2000) und im SPS.Sub machst du rein
dann hast du auch ne überprüfung der Punkte im Handbetrieb und wenn er net auf dem Punkt steht dann macht er gar nix weder auf noch zu
ich weiß was jetzt einige sagen werden Schleifen programmiert man net in Sub aber dies ist eine reine Handbedienung und wird net im Programm genutzt also denke ich das man das schon so machen kannSchöne WE noch
Loipe
-
Super,
dankeschön!
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