Habe auch den Code erhalten, vielen Dank!
Das Programm basiert auf der PrimaryInterOp.Cross3Krc Bibliothek.
Gibts dazu eine Doku?
Oder ein Minimalbeispiel ("hello world")?
Habe auch den Code erhalten, vielen Dank!
Das Programm basiert auf der PrimaryInterOp.Cross3Krc Bibliothek.
Gibts dazu eine Doku?
Oder ein Minimalbeispiel ("hello world")?
Kommt drauf an was 'kommunizieren' heisst.
10 mal pro Sekunde einen Intergerwert oder 10 mal pro Sekunde einen ganzen Roman übertragen?
Evtl. eine passende Buskarte in den PC einbauen.
Kommunizieren heißt für mich von 1 Byte (Watchdog + 7 Flags) bis zu 50 oder vielleicht 100 Byte (6 mal 32bit Integer in und out und Nebengeräusche ) 10 Mal pro Sekunde übertragen.
Buskarte wäre möglich, oft werden aber PCs beigestellt und es gibt nur Hardware aus einem kleinen Katalog von Standardkomponenten.
Welche Buskarte könnte man da einbaun? EtherCat?
Hallo,
ich habe mir einen kleinen CrossComm-Server geschrieben. Der leidet dann die Änderung von der Windows-Ebene in die Kuka-Ebene weiter. Da kann man auch Variablen überwachen.
Kann Dir auch Code zur Verfügung stellen. Ist aber in Vb.Net.
Mike
Ja wäre toll, wenn Du mir das zur Verfügung stellen könntest!
Danke!
Grüß Euch.
Ich möchte aus einem C#-Programm auf einem Windows-PC mit der KRC4 kommunizieren.
Die Verbindung ist nicht sehr zeitkritisch, also kein RSI nötig. (Möchte aber keine lahme Krücke, also 10 Mal pro Sekunde kommunizieren soll schon drin sein.)
Ich möchte die Verbindung nicht mit einer KRL Programmzeile anstarten müssen sondern die soll immer laufen (auch bei Betriebsartwechsel, nach Neustart ohne Programmanlauf usw...)
Wie würdet Ihr das lösen?
Grüß Euch!
Ich kann mit $pos_back und $pos_for die Koordinaten des letzten und des nächsten Punktes auslesen.
Gibt es auch eine Möglichkeit auszulesen ob ich gerade ptp oder lin unterwegs bin?
gibt es eine funktion das sich das tool oder der kuka automatisch senkrecht zu world ausrichtet um sicher zu gehen das ich dann in stoßrichtung
100% senkrecht fahre
Hm?
Die Stoßrichtung ist eine Achse des Toolkoordinatensystems.
Das Toolkoordinatensystem ist fix mit dem Tool verbunden.
Wenn Du den Roboter bewegst und das Tool verdrehst ändert sich die Lage des Toolkoordinatensystems zum World.
Du kannst also das Toolkoordinatensystem nicht für alle Stellungen des Roboters zum World ausrichten.
Wenn Du aber meinst, dass Du den Roboter in eine Position fahren willst, sodaß die Stoßrichtung des Toolkoordinatensystems deckungsgleich mit der z-Achse des World-Koordinatensystems wird, dann geht das mit:
bas(#tool,7) ;7 = nummer des angelegten tools
bas(#base,0) ; base = nullframe = world
ptp {a 0,b 180,c 0}
(Die Winkel a,b,c sind eine schnelle Schätzung, einfach ausprobieren )
Ebenfalls Interesse.
Achse als Linearachse definieren und per asyptp auf einen weiiiiiiit entfernten Punkt schicken.
Siehe:
http://www.roboterforum.de/rob…gkeit-externe-achse-7372/
Ist das Passwort nicht das Standard Expertenpasswort?
Such mal im Forum nach dem Stichwort "ioCtl". Damit könnts eventuell gehen.
Ich muss dem Kunden eine Notfunktion vorführen und brauche dazu eine Störung in EXT. Es müssen die Antriebe fallen. Bedienerschutz muss aufrecht bleiben und NotAus darf nicht anstehen.
Meine bisherigen Ideen:
- Programm schreiben in dem der Rob langsam gegen ein Hindernis fährt -> Überlast
- Den Stecker vom Profibus ziehen bzw ein Device lahmlegen
- Auf T1 schalten, von Bahn runterfahren (ich brauche $on_path zum Anwerfen der Antriebe), wieder auf EXT schalten
Hat jemand eine elegante Idee wie es noch ginge?
Z.B. Achse 1 (50%) und 5 (70%):
Weichschalten:
$curr_red[1,1] = 50
$curr_red[1,2] = 50
$curr_red[5,1] = 70
$curr_red[5,2] = 70
$torq_vel[1] = 100
$torq_vel[5] = 100
$torque_axis = 'b010001'
Wieder alle hart schalten:
$torque_axis = 'b000000'
Empfehlung des Hauses:
Diese Befehle nur verwenden, wenn Du genau weißt was Du tust.
Keine Ahnung von VKRC bzw. welche Genauigkeit Du brauchst aber grundsätzlich Achse auf 13,25 stellen, dejustieren und wieder justieren (Uhr). Dann ist 13,25 Dein neues Null.
Bezüglich Bremswege testen empfiehlt es sich zuerst mal langsam gegen die Grenzen zu fahren und abzuschätzen ob der vor dem Zaun / Hindernis stehenbleibt und dann langsam mit der Geschwindigkeit hochgehen.
Zu Deiner Frage, ja habe ich schon gemacht mit einem KR500 und ja es rummst.
Wenn AutExt verwendet wird einfach von der SPS kein ExtStart schicken solange $IN_HOME nicht ansteht.
Im Archiv gibts die Datei:
\C\KRC\HMI\PlugIns\SafeRobot\Config\KUKASafeRobot.config
Da steht ganz am Anfang eine Signatur und ein Timestamp.
Wenn Du die Safe Konfiguration aufmachst (Inbetriebnahme > Service > SafeOperation > Konfiguration) steht ganz oben unter Allgemeine Information ein Timestamp und eine Versionsnummer und wenn der Cursor auf dem Zeistempel steht, steht rechts oben eine Checksumme.
Mathematisch:
-> http://de.wikipedia.org/wiki/Roll-Nick-Gier-Winkel
Du stellst 3 Matrizen auf:
- Eine für Rotation um 45° um a
- Eine für Rotation um 90° um b
- Eine für Rotation um -45° um a
Dann Multiplizierst Du die Matrizen und rechnest aus der resultierenden Matrix wieder zurück auf a,b,c (atan2 ...)