Naja,
was steht denn beim Diagnose - Fehler?
Soweit ich mich noch dunkel erinnern kann:
irgendwas im Menue Mode 7.
Könnten zum Beispiel falsche Maschinenparameter sein.
Hermann
Naja,
was steht denn beim Diagnose - Fehler?
Soweit ich mich noch dunkel erinnern kann:
irgendwas im Menue Mode 7.
Könnten zum Beispiel falsche Maschinenparameter sein.
Hermann
Hallo,
genau so ist es.
Das $advance=0 hatte ich nur vom Vorposter kopiert.
Das kann man in der Interrupt-Routine getrost weglassen, da ist es
nämlich viel zu spät dafür, denn da kann der Vorlaufzeiger
schon lange über das Ende des Unterprogramms, in dem
der Interrupt ausgelöst wird, hinausgewandert sein.
Und zurückholen kann man den nicht mehr
Hermann
Hallo,
dann mach' es so wie ich es am Anfang schon geschrieben habe:
%%%
VERSION:1
LANGUAGE:ENGLISH
%%%
MODULE KOAG
![Koagulierung,Flockung,Entschäumung]
VAR koagulierung kgFarbe1{3} := [62,32,300];
VAR koagulierung kgFarbe2{3} := [62,32,300];
VAR koagulierung kgFarbe3{3} := [62,32,300];
PROC selectBrush()
TEST getNextBrushNr()
CASE 1:
setBrushTabelle Farbe1, kgFarbe1, 150, "TypA";
CASE 2:
setBrushTabelle Farbe2, kgFarbe2, 150, "TypA";
CASE 3:
setBrushTabelle Farbe3, kgFarbe3, 150, "TypA";
ENDTEST
ENDPROC
ENDMODULE
Alles anzeigen
und fertig ist die Laube.
Kein Include (gibt es nämlich auf ABB-Robotern nicht) und nix.
Die Prozedur selectBrush() ist dann global bekannt und kann
ohne weiteres aus jedem anderen Modul aufgerufen werden.
Das ist ja der Witz an den Modulen. So kann man gemeinsame Teile
(oder Standardroutinen) in einem Modul halten, und braucht's
nur zu kopieren.
Hermann
Hi,
irgendwie steh' ich echt auf dem Schlauch . Verstehe ich das jetzt so richtig:
- Es gibt mehrere Module B001_001, B001_002 .... mit verschiedenen
brushdata's.
- Du willst in jedem dieser Module das selbe 'Zeug' includieren, nämlich
die Variablen koagulierung und die Prozedur selectbrush()
Vielleicht erkennst Du schon, dass ich mit der Lackiererei nix am Hut habe,
aber mit 'Modulen laden' habe ich schon einiges gemacht, scheint mir hier
aber absolut nicht notwendig zu sein.
Wenn meine Vermutung stimmt, dann ist's wirklich extrem einfach zu realisieren.
Im Zweifelsfall könnte man die Daten auch schlicht und einfach in eine
Textdatei schreiben und von dort einlesen (ist aber auch nicht gerade
turboschnell :()
Hermann
Hallo,
weiss jetzt nicht wo das Problem liegt .
Ich würde die beiden Teile jeweils in ein einzelnes Modul packen,
nicht irgendwie includieren wollen.
Macht doch nix, wenn die beiden Teile in unterschiedlichen Modulen
stehen. Die Daten sind global bekannt, also kann aus dem
einen Modul jeweils auf Daten / Prozeduren aus dem anderen
zugegriffen werden.
Hermann
Hallo,
also wenn da wirklich Fliesskommazahlen übertragen werden sollen,
dann muss man die, soweit ich das beurteilen kann im Roboter
Bit für Bit selber zusammenrechnen.
Einfacher ist es da in der SPS die Fliesskommazahl in einen Interger-
Wert umzurechnen und diesen dann in der KRC wieder umrechnen.
Sowas wie:
Auf der SPS den Wert mit 100 multiplizieren und nur den
ganzzahligen Anteil an die KRC übergeben, dann auf dem Roboter
wieder durch 100 teilen, dann hat man zwei Nachkommastellen.
Hermann
Hallo,
soweit ich mich noch erinnern kann gehören bei der Siemens-
Baugruppe die untersten 3 oder 4 Bits nicht zum Messwert.
Irgendwie lässt sich das dann mit dem links-/ rechtsbündigen
mit- ohne Vorzeichen einstellen.
War mir aber wie schon gesagt immer zu blöd und hab's selber
ausgerechnet, da weiss ich dann wie es berechnet wird.
Hermann
Hallo,
da würde ich doch mal sowas schreiben:
INb20=5,0,x1 ;$IN[161-164]
OUTb20=5,0,x1 ;$OUT[161-164]
ANIN1=5,2,16,2
ANIN2=5,4,16,2
ANIN3=5,6,16,2
ANIN4=5,8,16,2
Warum sollte da 22/24/26/28 stehen, genau das ist nämlich der Offset.
Ich verwende die Analog-Definitionen so gut wie nie, sondern
verwende normale Ganzzahlen und berechne mir den Wert dann selber.
Im Zusammenhang mit Technologiepaketen, die Analogwerte
verarbeiten wird diese Methode dann aber nicht funktionieren.
Hermann
Hallo,
immer wieder die gleiche Diskussion:
Wiederholgenauigkeit: Die Genauigkeit, mit der EIN
bestimmter Punkt immer wieder angefahren wird.
Bahngenauigkeit: Die Genauigkeit, mit der eine berechnete
Bahn (und sei es nur eine gerade Linie zwischen zwei
Punkten) abgefahren wird.
Beispiel: Linearfahrt zwischen zwei geteachten Punkten:
der Startpunkt und der Endpunkt werden auf
Null Komma soundsoviel (siehe Datenblatt) genau angefahren.
Die 'gerade' Bahn dazwischen weicht bei den meisten
Robotern um ein ZIGFACHES dieses Null Komma
soundsoviel von der idealen Geraden ab.
Diese Genauigkeit gibt kaum ein Roboterhersteller an (Mir fällt auf
Anhieb gar keiner ein, müsste da erst mal suchen).
Diese zwei 'Parameter' eines Roboters unterscheiden sich deutlich.
Die Auflistung oben enthält die Wiederholgenauigkeit.
Das Ausgangspost scheint aber die Bahngenauigkeit von 0,1mm
zu fordern. Solche Bahngenauigkeiten habe ich bisher nur bei
Scaras gesehen.
Hermann
Hallo,
habe jetzt keine wirklich praktischen Erfahrungen mit der Denso-Mechanik,
kann aber aus meinen Erfahrungen mit Bosch-Scaras berichten:
Der Unterschied der Positionen bei links-/rechtsarmig deutet auf einen falschen
Nullpunkt der Achsen 1 und/oder 2 hin, oder wie Stefan schon beschrieben hat
auf eine mechanische Ungenauigkeit des Tools.
Wenn 'ohne Tool' gefahren werden muss, dann muss natürlich sichergestellt
sein, dass der Greifer (oder die Messpitze) exakt in der Drehachse der Pinole
steht (Kontrolle durch Drehen der Achse 4). Ansonsten ist die Aufgabe
nicht lösbar!
Der Versatz beim Berechnen der Positionen ist erklärbar durch:
- falscher Nullpunkt Achse 2 (Achse 1 würde nur ein Verdrehen des
Koordinatensystems erzeugen).
- falsche Armlängen der Arme 1 und/oder 2
- denkbar, aber doch etwas abwegig wären dann noch
Messsystemabweichungen
Bei Bosch wurden diese Parameter bei jeder Mechanik genau ausgemessen
und in die Maschinenparameter eingetragen.
Und anschliessend durch eine lineare Messfahrt mit analogen Sensoren über eine
'schiefe Bahn', sowie eine links-/rechtsarmige Fahrt in einen Messschacht kontrolliert!
Wie das bei Denso läuft weiss ich nicht.
Wenn man jetzt an einem Roboter wieder die Standard-Parameter
einstellt (warum auch immer) dann fährt der selbstredend nicht mehr
so genau, als wenn man die individuell ermittelten Parameter verwendet.
Um da mal Grössenordnungen anzugeben:
Bei den Bosch-Geräten wurden Armlängenabweichungen im Zehntel-mm
Bereich ermittelt (wenn mich meine Erinnerung nicht täuscht dann waren
das maximal mal 1,5 Zehntel, häufig deutlich unter 1/10). Aber die
Auswirkungen bei der Linearfahrt sind da deutlich zu sehen/messen
gewesen.
Hermann
Alles anzeigen
Problem ist DANK Hilfe von KUKA gelöst.
Stelle die Lösung demnächst hier rein.
Im Moment leider zu viel Druck.
Danke an Alle
Servus Roland
Hallo Roland,
ist der Druck vielleicht in der Zwischenzeit gewichen?
Wie war denn die Lösung jetzt?
Wäre nett das zu erfahren.
Hermann
Hallo,
das Thema wurde hier schon einige Male zumindest indirekt angesprochen.
Such mal nach Interrupt, brake und resume.
Kurzerklärung:
-Hauptprogramm als Endlosschleife erstellen, darin einen Interrupt auf
einen Eingang definieren.
-In der Endlosschleife ein Unterprogramm aufrufen, in dem dann
nochmal in einer Endlosschleife die eigentliche Aufgabe erledigt wird.
-In die Interrupt-Prozedur nur ein Brake und resume programmieren.
Gruss Hermann
Hallo,
ja klar kann es sein, dass die fehlenden Not-Aus-Taster das Problem darstellen.
Ohne Schaltplan wirst Du da nicht sehr weit kommen.
Ich kenne jetzt das MP10 nicht, stell doch mal ein Bild der Steuerung mit
dem MP10 hier rein.
Es gab da einige unterschiedliche Bedienfelder, auf den meisten war da ein
Taster, mit dem man die Antriebe einschalten konnte.
Hermann
Hallo,
wenn ich mich noch recht erinnere kommt die Not-Aus-Meldung auch wenn nur die Antriebe
ausgeschaltet sind.
Lassen die sich nicht einschalten? (Knopf am Bedienfeld).
Die Referenzpunkte kann man normalerweise auch über das PHG anfahren,
aber natürlich nur bei eingeschalteten Antrieben.
Hermann
Am besten forderst Du das aktuelle Lastenheft an. Gib es inzwischen auf DVD. Da stehen dann alle Vorschriften und Pflichtenhefte drin.
Und verbringst dann die nächsten 2 Tage mit dem Durchackern desselben. Um am Ende
der zwei Tage festzustellen, dass da so gut wie nix über Software drin steht.
Programmierrichtlinien haben wir bis jetzt im Neckartal keine verwendet (in den letzten
Monaten ca. 8 Roboter), da es keine gab.
Im Moment sind sie dabei die Wiest-Vermessung der Roboter verbindlich einzufordern.
Die Prisma-Schnittstelle muss in letzter Zeit auch immer sein (ist aber kein Problem,
da muss man eigentlich nur den OPC-Server installieren und ein paar Variablen einigermassen
sinnvoll besetzen, den Objekt-Broker haben die selber installiert, sollte aber auch kein
grosses Problem darstellen).
Gruss Hermann
Hallo,
genauere Spezifizierung wäre zum Beispiel:
- welcher Virenscanner wurde benutzt?
- Virensignatur welchen Datums?
- Welches Trojanische Pferd wurde gefunden?
Gruss Hermann
Hi,
dann halt so wie Robcheck geschrieben hat in der EIO.CFG nach den Zeilen
#
EIO_CROSS:
einfügen:
-Lact "*E01" -Lres "dogun"
Dann nimmt der Ausgang dogun den invertierten Zustand von E01 an.
Falls die Zeilen
#
EIO_CROSS:
nicht vorhanden sind, einfach einfügen.
Nochmal im Telegrammstil:
- Speichern der aktuellen E/A-Konfiguration (oder ein komplettes Backup erstellen)
- Ergänzen der obigen Zeilen in der EIO.CFG aus der Sicherung.(mit Anpassung von E01 und A01 an Deine verwendeten Namen)
- Laden der geänderten EIO.CFG im Systemparameter-Menü
Ansonsten mal das Handbuch bemühen Stichwort Querverbindungen oder Corssconnection im Abschnitt
Systemparameter.
Diese einfache Vorgehensweise kann nicht verwendet werden, wenn der Ausgang 'dogun' auch im Anwenderprogramm gesetzt / zurueckgesetzt werden soll. Da muss man etwas mehr Hirnschmalz investieren und
am besten noch mit simulierten Ausgängen arbeiten.
Also:
- Wenn E01 gesetzt ist, dann soll dogun zurückgesetzt sein?
- Im Programm soll man dogun setzen / zurücksetzen können
Dann eine Simulierte Karte mit einem Ausgang Sdogun in der Konfiguration eintragen (oder einen ansonsten nicht verwendeten Ausgang verwenden)
In der EIO.CFG eintragen:
#
EIO_CROSS:
-Lact "Sdogun & *E01" -Lres "dogun"
Im Programm immer nur den Ausgang Sdogun setzen / zurücksetzen.
Hermann
Hallo,
naja, sobald die Querverbindung eingerichtet ist nimmt der Ausgang immer den gleichen
Zustand wie der querverbundene Eingang an. Da gibt es dann nichts mehr zu beeinflussen,
das ist dann immer so. Wird im Hintergrund automatisch erledigt.
Querverbindung wird in den Systemparametern eingerichtet.
Hermann
Hallo,
wie wäre es mit einer Querverbindung auf Roboter 2 vom Eingang, der von Roboter 1 kommt auf den
'zu schliessenden' Ausgang?
Hermann
Hallo,
vermutlich sind da in deinem Prozess 'unerlaubte' Befehle drin.
Erlaubt ist sind da nur ganz wenige Befehle, hauptsächlich sowas wie:
DO[100]=(DI[101] OR DI[100]);
auf keinen Fall kann man Sprünge verwenden.
Gruss Hermann