|
|
|
|
@ -43,10 +43,47 @@ class Kuka_Prog:
@@ -43,10 +43,47 @@ class Kuka_Prog:
|
|
|
|
|
def __init__(self): |
|
|
|
|
self.contour_path_list = [] |
|
|
|
|
self.hatchlines_list = [] |
|
|
|
|
self.base = (0,0,0) |
|
|
|
|
|
|
|
|
|
def set_base(self, vec): |
|
|
|
|
self.base = (vec.x, vec.y, vec.z) |
|
|
|
|
self.baseorigin = (0,0,0) |
|
|
|
|
self.tool = 6 |
|
|
|
|
self.base = 6 |
|
|
|
|
self.vproc = 0.023 |
|
|
|
|
self.vmax = 0.15 |
|
|
|
|
self.laser_power = 0.4 |
|
|
|
|
self.laser_out = 3 |
|
|
|
|
self.laser_pilot_out = 4 # default is pilot laser |
|
|
|
|
self.use_laser_out = self.laser_pilot_out |
|
|
|
|
self.inert_gas_out = 9 |
|
|
|
|
self.powder_out = 7 |
|
|
|
|
self.simulation = True |
|
|
|
|
|
|
|
|
|
def set_baseorigin(self, vec): |
|
|
|
|
self.baseorigin = (vec.x, vec.y, vec.z) |
|
|
|
|
|
|
|
|
|
def set_tool(self, tool): |
|
|
|
|
self.tool = tool |
|
|
|
|
|
|
|
|
|
def set_base(self, base): |
|
|
|
|
self.base = base |
|
|
|
|
|
|
|
|
|
def set_velocity(self, vproc, vmax): |
|
|
|
|
self.vproc = vproc |
|
|
|
|
self.vmax = vmax |
|
|
|
|
|
|
|
|
|
def set_laser_power(self, power): |
|
|
|
|
self.laser_power = power |
|
|
|
|
|
|
|
|
|
def set_laser_out(self, laser_output): |
|
|
|
|
self.laser_out = laser_output |
|
|
|
|
|
|
|
|
|
def set_laser_pilot_out(self, laser_pilot_out): |
|
|
|
|
self.laser_pilot_out = laser_pilot_out |
|
|
|
|
|
|
|
|
|
def set_simulation(self, sim): |
|
|
|
|
self.simulation = sim |
|
|
|
|
if not self.simulation: |
|
|
|
|
self.use_laser_out = self.laser_out |
|
|
|
|
else: |
|
|
|
|
self.use_laser_out = self.laser_pilot_out |
|
|
|
|
|
|
|
|
|
def append_contour(self, poses, segmenttype = 'LIN'): |
|
|
|
|
self.contour_path_list.append((poses, segmenttype)) |
|
|
|
|
@ -108,49 +145,56 @@ class Kuka_Prog:
@@ -108,49 +145,56 @@ class Kuka_Prog:
|
|
|
|
|
srcfile.write(";- "+ time.asctime()+"\n\n") |
|
|
|
|
# defining world and base |
|
|
|
|
srcfile.write("E6POS startp\n") |
|
|
|
|
srcfile.write("E6POS point1\n") |
|
|
|
|
# srcfile.write("DECL E6AXIS xp1={A1 -1.9, A2 -105.76, A3 79.97, A4 178.83, A5 -20.3, A6 -4.37, E1 -90, E2 0}\n") |
|
|
|
|
srcfile.write(";------------- definitions ------------\n") |
|
|
|
|
srcfile.write("EXT BAS (BAS_COMMAND :IN,REAL :IN ) ;set base to World\n") |
|
|
|
|
srcfile.write("BAS (#INITMOV,0 ) ;Initialicing the defaults for Vel and so on \n\n") |
|
|
|
|
srcfile.write("BAS (#TOOL,6) ;Initialicing the defaults for Vel and so on \n\n") |
|
|
|
|
srcfile.write("BAS (#BASE,2) ;Initialicing the defaults for Vel and so on \n\n") |
|
|
|
|
#srcfile.write(ptp_fold) |
|
|
|
|
srcfile.write("BAS (#TOOL,%d) ;Initialicing the defaults for Vel and so on \n\n" % self.tool) |
|
|
|
|
srcfile.write("BAS (#BASE,%d) ;Initialicing the defaults for Vel and so on \n\n" % self.base) |
|
|
|
|
srcfile.write("PTP {A1 -33.31, A2 -104.71, A3 114.60, A4 282.66, A5 -39.21, A6 -104.87, E1 -90, E2 1.0}\n") |
|
|
|
|
srcfile.write("\n;------------- main part ------------\n") |
|
|
|
|
srcfile.write("startp=$POS_ACT\n") |
|
|
|
|
#V = w.Velocity / 1000.0 # from mm/s to m/s |
|
|
|
|
V_prozess = 0.0225 |
|
|
|
|
V_max = 0.15 |
|
|
|
|
CDIS = 2.3 |
|
|
|
|
CVEL = 95.0 |
|
|
|
|
LASERPOWER = 0.4 |
|
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n"%V_max) |
|
|
|
|
|
|
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vmax) |
|
|
|
|
srcfile.write("$APO.CDIS = %f ; mm \n" % CDIS) |
|
|
|
|
srcfile.write("$APO.CVEL = %f ; percent \n" % CVEL) |
|
|
|
|
srcfile.write("$ANOUT[1] = %f ; \n"%LASERPOWER) |
|
|
|
|
srcfile.write("$OUT[7] = TRUE ; \n") |
|
|
|
|
srcfile.write("$OUT[9] = TRUE ; \n") |
|
|
|
|
srcfile.write("LIN startp:{X -100.0, Y 0.0, Z 0.0, A 0.0000, B 0.0000, C 0.0000, E1 0.0000, E2 0.0000} C_VEL; GENERATED\n") |
|
|
|
|
srcfile.write("WAIT SEC 10.0\n") |
|
|
|
|
|
|
|
|
|
srcfile.write("$ANOUT[1] = %f ; \n" % self.laser_power) |
|
|
|
|
if not self.simulation: |
|
|
|
|
srcfile.write("$OUT[%d] = TRUE ; \n" % self.powder_out) |
|
|
|
|
srcfile.write("$OUT[%d] = TRUE ; \n" % self.inert_gas_out) |
|
|
|
|
else: |
|
|
|
|
srcfile.write("$OUT[%d] = FALSE ; \n" % self.powder_out) |
|
|
|
|
srcfile.write("$OUT[%d] = FALSE ; \n" % self.inert_gas_out) |
|
|
|
|
|
|
|
|
|
srcfile.write("point1 = {X -110.0, Y 0.0, Z 0.0, A 0.0000, B 0.0000, C 0.0000, E1 0.0000, E2 0.0000}\n") |
|
|
|
|
srcfile.write("point1.S = startp.S\n") |
|
|
|
|
srcfile.write("point1.T = startp.T\n") |
|
|
|
|
srcfile.write("LIN point1 C_VEL; GENERATED\n") |
|
|
|
|
srcfile.write("WAIT SEC 7.0\n") |
|
|
|
|
srcfile.write(";- Contourpaths\n") |
|
|
|
|
for (poses, seg_type) in self.contour_path_list: |
|
|
|
|
# start laser code |
|
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n"%V_prozess) |
|
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vproc) |
|
|
|
|
srcfile.write(";- Turn on Laser\n") |
|
|
|
|
if seg_type == 'LIN': |
|
|
|
|
srcfile.write("LIN startp:{} C_VEL; GENERATED\n".format(poses[0].translate_with(self.base).to_string())) |
|
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[3]=True\n" ) ## Einschalten |
|
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(poses[0].translate_with(self.baseorigin).to_string())) |
|
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[%d]=True\n" % self.use_laser_out) |
|
|
|
|
for pose in poses[1:]: |
|
|
|
|
srcfile.write("LIN startp:{} C_VEL; GENERATED\n".format(pose.translate_with(self.base).to_string())) |
|
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(pose.translate_with(self.baseorigin).to_string())) |
|
|
|
|
|
|
|
|
|
if seg_type == 'SPLINE': |
|
|
|
|
srcfile.write("SPLINE\n") |
|
|
|
|
for pose in poses: |
|
|
|
|
srcfile.write(" SPL startp:{} ; GENERATED\n".format(pose.translate_with(self.base).to_string())) |
|
|
|
|
srcfile.write(" SPL {} ; GENERATED\n".format(pose.translate_with(self.baseorigin).to_string())) |
|
|
|
|
srcfile.write("ENDSPLINE\n") |
|
|
|
|
|
|
|
|
|
srcfile.write(";- Turn off Laser\n") |
|
|
|
|
srcfile.write("$OUT[3] = FALSE\n") |
|
|
|
|
srcfile.write("$OUT[%d] = FALSE\n" % self.use_laser_out) |
|
|
|
|
# end of subroutine |
|
|
|
|
|
|
|
|
|
srcfile.write(";- Hatchlines\n") |
|
|
|
|
@ -158,16 +202,16 @@ class Kuka_Prog:
@@ -158,16 +202,16 @@ class Kuka_Prog:
|
|
|
|
|
# start laser code |
|
|
|
|
srcfile.write(";- Hatchline\n") |
|
|
|
|
if seg_type == 'LIN': |
|
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n"%V_max) |
|
|
|
|
srcfile.write("LIN startp:{} C_VEL; GENERATED\n".format(line[0].translate_with(self.base).to_string())) |
|
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[3]=True\n" ) ## Einschalten |
|
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n"%V_prozess) |
|
|
|
|
srcfile.write("LIN startp:{} C_VEL; GENERATED\n".format(line[1].translate_with(self.base).to_string())) |
|
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[3]=FALSE\n") ## Ausschalten |
|
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vmax) |
|
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(line[0].translate_with(self.baseorigin).to_string())) |
|
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[%d]=True\n" % self.use_laser_out) |
|
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vproc) |
|
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(line[1].translate_with(self.baseorigin).to_string())) |
|
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[%d]=FALSE\n" % self.use_laser_out) |
|
|
|
|
# end of subroutine |
|
|
|
|
srcfile.write("$OUT[3] = FALSE\n") |
|
|
|
|
srcfile.write("$OUT[7] = FALSE ; \n") |
|
|
|
|
srcfile.write("$OUT[9] = FALSE ; \n") |
|
|
|
|
srcfile.write("$OUT[%d] = FALSE\n" % self.use_laser_out) |
|
|
|
|
srcfile.write("$OUT[%d] = FALSE\n" % self.powder_out) |
|
|
|
|
srcfile.write("$OUT[%d] = FALSE\n" % self.inert_gas_out) |
|
|
|
|
srcfile.write("\n;------------- end ------------\n") |
|
|
|
|
srcfile.write("END \n\n") |
|
|
|
|
srcfile.close() |
|
|
|
|
|