Offline-Programmierung - RoboDK

Offline-Programmierung

Offline-Programmierung bedeutet die Programmierung eines Roboters außerhalb der Produktionsumgebung. Offline-Programmierung verhindert Produktions-Unterbrechungen durch Programmierungen am Roboter. Simulation und Offline-Programmierung erlauben das Vergleichen verschiedener Szenarien der Roboter-Zellen vor der Festlegung der Produktions-Zelle. Fehler, die typischerweise bei dem Konstruieren einer Roboter-Zelle gemacht werden, können rechtzeitig verhindert werden.

Offline Programmierung ist der beste Weg, den Return on Investment für ein Roboter-System zu maximieren und dafür werden geeignete Simulationswerkzeuge benötigt. Die Zeit für die Anpassung eines neuen Programmes kann von mehreren Wochen auf einen einzigen Tag reduziert werden. Dies macht die Robotisierung von Kurz-Zeit-Produktionen möglich.

Offline Programmierung mit RoboDK

Mit RoboDK gibt es keine Limitierungen in der Offline-Programmierung. RoboDK stellt ein benutzerfreundliches grafisches Benutzer-Interface zur Verfügung, um Industrie-Roboter zu simulieren. Weiterhin ermöglicht die API von RoboDK eine einfache Programmierung und Simulation von Robotern mittels Python. RoboDK unterstützt viele Roboter-Steuerungen und erzeugt die erforderlichen Dateien. Sie können auch Ihren Post Processorkundenspezifisch anpassen.

Python ist eine Programmiersprache, die ein schnelleres Arbeiten und eine effektivere Integration Ihres Systems ermöglicht. Die Python-Syntax erlaubt Programmierern Konzepte in weniger Prorammzeilen auszudrücken als in anderen Sprachen, was zu einem schneller und einfacheren Erlernen der Sprache beiträgt. Die Python 3.4.1 Version wird automatisch durch das Installatonsprogramm installiert..

Einige RoboDK-Beispiele mit Python sind verfügbar sowie auch die Dokumentation zur API von RoboDK. Die API von RoboDK ist auch als C# Version mit Beispiel-Projekt verfügbar und auch als Matlab-Version.

 

Offline Programmierungs-Beispiel:

from robolink import *    # RoboDK's API
from robodk import *      # Math toolbox for robots

# Any interaction with RoboDK must be done through
# Robolink()
RDK = Robolink()

# get the robot item:
robot = RDK.Item('ABB IRB 1600ID-4/1.5')

# get the home target and the welding targets:
home = RDK.Item('Home')
target = RDK.Item('Target 1')
# get the pose of the target (4x4 matrix):
ref = target.Pose()

# move the robot to home, then to the center:
robot.MoveJ(home)
robot.MoveJ(target)

# call a robot program to start the weld gun
RDK.RunProgram('WeldStart')

# make an hexagon around the center:
for i in range(7):
    ang = i*2*pi/6 #ang = 0, 60, 120, ..., 360
    pi = ref*rotz(ang)*transl(200,0,0)*rotz(-ang)
    robot.MoveL(pi)

# call a robot program to stop the weld gun
RDK.RunProgram('WeldStop')

# move back to the center, then home:
robot.MoveL(target)
robot.MoveJ(home)

Läuft eine Simulation wie erartet, können wir das Python-Programm mit rechter Maustaste im Menü-Baum anklicken ("Hexagon Path" in diesem Beispiel) und "Roboter-Programm erstellen" auswählen. Das folgende Programm wird automatisch erstellt.

Robot program example output

MODULE MOD_Weld_Hexagon

PERS wobjdata rdkWObj := [FALSE, TRUE, "", [[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]];
PERS tooldata rdkTool := [TRUE,[[0,0,0],[1,0,0,0]],[3,[0,0,200],[1,0,0,0],0,0,0.005]];
VAR speeddata rdkSpeed := [500,500,500,500];
VAR extjoint rdkExtax := [9E9,9E9,9E9,9E9,9E9,9E9];

PROC Weld_Hexagon()
	!Program generated by RoboDK for ABB IRB 1600ID-4/1.5 on 29/11/2014 17:42:31
	ConfJ \On;
	ConfL \On;
	rdkWObj.oframe:=[0,0,0],[1,0,0,0];
	rdkWObj.uframe:=[0,0,0],[1,0,0,0];
	rdkTool.tframe:=[-4,0,371.3],[0.92387953,0,0.38268343,0];
	MoveAbsJ [[-0,-19.143793,-7.978668,0,49.189506,-0]],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
	MoveJ [[1010.634,-114.491,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
	WeldStart;
	MoveL [[810.634,-114.491,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
	MoveL [[910.634,58.715,662.29],[0,0,1,0.00000001],[0,-1,0,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
	MoveL [[1110.634,58.715,662.29],[0,0,1,0],[0,-1,0,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
	MoveL [[1210.634,-114.491,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
	MoveL [[1110.634,-287.696,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
	MoveL [[910.634,-287.696,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
	MoveL [[810.634,-114.491,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
	WeldStop;
	MoveL [[1010.634,-114.491,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
	MoveAbsJ [[-0,-19.143793,-7.978668,0,49.189506,-0]],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj;
	ConfJ \On;
	ConfL \On;
ENDPROC
ENDMODULE

Roboter Post Prozessor

Der Post-Prozessor definiert, wie das Roboter-Programm generiert werden soll. Die Konvertierung der Simulationsbewegungen in spezifische Roboter-Befehle wird durch den Post-Prozessor durchgeführt. Post Prozessoren geben komplette Flexibilität, um Roboter-Programme für die verschiedensten Anforderungen zu erstellen.

RoboDK stellt Post-Prozessoren für die meisten Roboter-Marken zur Verfügung. Post-Prozessoren können einfach erstellt und modifiziert werden. Ein Post-Prozessor innerhalb RoboDK ist einfach ein Python-Script, welches definiert, wie das Programm erstellt werden soll.