|
[STARTBIN]
slicense : "Silver Bullet"
# --------------------------------------------------------------------------
# Date and time formats #Security!
# --------------------------------------------------------------------------
fmt 5 datecode # Date code
fmt 5 expcode # Exp code
fmt 5 daysleft # Days left
ssecmonth : "WARNING-POST IS TIMED TO EXPIRE THIS MONTH"
ssecweek : "WARNING-POST IS TIMED TO EXPIRE THIS WEEK"
ssectom : "WARNING-POST IS TIMED TO EXPIRE TOMORROW"
ssectod : "WARNING-POST IS TIMED TO EXPIRE TODAY"
ssecurity : "ERROR-POST HAS EXPIRED"
psecurity # Post security #Security!
expcode = 31130 # YYMMDD
datecode = year$*10000 + month$*100 + day$
daysleft = expcode - datecode
if daysleft <= 31,
[
#if daysleft > 7, result = mprint(ssecmonth,1)
if daysleft > 1 & daysleft <= 7, result = mprint(ssecweek,1)
if daysleft = 1, result = mprint(ssectom,1)
if daysleft = 0, result = mprint(ssectod,1)
if daysleft < 0,
[
result = mprint(ssecurity,1)
exitpost$
]
]
psimcheck
if not(sim_no$ = 28506) & sim_type$ <> 2,
[
result = mprint(ssimerror, 1)
exitpost$
]
pq$ #Setup post based on switch settings
#psecurity
#psimcheck
#if stagetool = one, bldnxtool = one
#Rotaxtyp = 1 sets initial matrix to top
#Rotaxtyp = -2 sets initial matrix to front
#if vmc, rotaxtyp = one
#else, rotaxtyp = -2
rotaxtyp$ = three # Toolplane positioning
#axisx = vequ(aaxisx) # Rotate caxis thru ANUT to find VNUT - B-Axis in Y+ direction
#vnutx = rotv(-anut, caxisx) # (the A axis vector) - B-Axis in Y+ direction
#axisx = vequ(aaxisx) # Rotate caxis thru ANUT to find VNUT - B-Axis in Y+ direction
#vnutx = rotv(anut, caxisx) # (the A axis vector) - B-Axis in Y- direction
axisx$ = vequ(aaxisx) # Rotate caxis thru ANUT to find VNUT - B-Axis in Y+ direction
vnutx = rotv(-anut, baxisx) # (the A axis vector) - B-Axis in Y+Z- direction
#Shut off rotary axis if, Q164. Enable Rotary Axis button? n
#if ucase(sq164) = strn, rot_on_x = zero
if arctype$ = one | arctype$ = four,
[
result = newfs(two, i$)
result = newfs(two, j$)
result = newfs(two, k$)
]
else,
[
result = newfs(three, i$)
result = newfs(three, j$)
result = newfs(three, k$)
]
pheader$ #Call before start of file
if met_tool$ = one, #Metric constants and variable adjustments
[
ltol$ = ltol_m
vtol$ = vtol_m
maxfeedpm = maxfeedpm_m
xm91 = xm91_m
ym91 = ym91_m
zm91 = zm91_m
]
sav_spc = spaces$
n$ = 0
seqinc$ = 1
pn, "BEGIN PGM ", *sprogname$,*smetric, peob, e$
pn, "; PROGRAM NAME - ", *sprogname$,peob, e$
pn, "; DATE=DD-MM-YY - ", date$, " TIME=HH:MM - ", time$, peob, e$
pn, "; POST LICENSE -", *slicense, peob, e$
pn, ";", peob, e$
if stck_ht$ <> 0 | stck_wdth$ <> 0 | stck_thck$ <>0, pstockdef
sav_rot_on_x = rot_on_x
rot_on_x = 0
prv_workofs$ = c9k
pstockdef #Stock definition
if stck_crnr$ = 0,
[
blk_xmin = stck_x$ - stck_ht$/2
blk_ymin = stck_y$ - stck_wdth$/2
]
if stck_crnr$ = 1 | stck_crnr$ = 5,
[
blk_xmin = stck_x$
blk_ymin = stck_y$ - stck_wdth$
]
if stck_crnr$ = 2 | stck_crnr$ = 6,
[
blk_xmin = stck_x$ - stck_ht$
blk_ymin = stck_y$ - stck_wdth$
]
if stck_crnr$ = 3 | stck_crnr$ = 7,
[
blk_xmin = stck_x$ - stck_ht$
blk_ymin = stck_y$
]
if stck_crnr$ = 4 | stck_crnr$ = 8,
[
blk_xmin = stck_x$
blk_ymin = stck_y$
]
if stck_crnr$ <= 4, blk_zmin = stck_z$ - stck_thck$
else, blk_zmin = stck_z$
blk_xmax = blk_xmin + stck_ht$
blk_ymax = blk_ymin + stck_wdth$
blk_zmax = blk_zmin + stck_thck$
if stck_ht$ > 0,
[
pbld, pn, "BLK FORM 0.1", *sgplane, *blk_xmin, *blk_ymin, *blk_zmin, peob, e$
pbld, pn, "BLK FORM 0.2", *blk_xmax, *blk_ymax, *blk_zmax, peob, e$
]
pxyzcout #Map coordinates
if rot_on_x,
[
if cuttype = zero, pxyzcout0 #Toolplane Positioning
if cuttype = one, pxyzcout1 #Axis Substitution
if cuttype = two, pxyzcout2 #Polar Conversion
if cuttype = three, pxyzcout3 #Simulatneous 4 and 5 axis (Multi-axis)
if rot_sign = one, csav = -csav #Flips rotary sign
if tilt_sign = one, asav = -asav #Flips tilt sign
if mr_rt_actv <> two,
[
paouttilt
pcoutrev
if index, pindxcalc
pfcalc
]
else, feed = fr_pos$
]
else,
[
xabs = vequ(x$)
feed = fr_pos$
]
pxyzcout0 #Toolplane Positioning
pfliparcs
#Map points for non top toolplane
mmtx1 = matt(m1$) # Transpose current toolplane matrix
if gnci$ > 1, xrot = vmap(x$, mmtx1) # Map points to top toolplane
else, xrot = vmap(xnci$, mmtx1) # Map points to top toolplane
cycle10x = vequ(xnci$)
#~firstpoint, e
#if mi8 & gcode <> 100,
if mi8$ & firstpoint,
[
x_drill = x$
y_drill = y$
firstang = atan2(y_drill, x_drill) #this is based on current toolplane
#~firstang
]
if opcode$ = 16,
[
drl_init_xrot = vmap(drl_init_x$, mmtx1)
drl_ref_xrot = vmap(drl_ref_x$, mmtx1)
drl_tos_xrot = vmap(drl_tos_x$, mmtx1)
drl_depth_xrot = vmap(drl_depth_x$, mmtx1)
]
#u = vmap(u, mmtx1) # Map points to top toolplane
i$ = vmap(i$, mmtx1) # Map points to top toolplane
#if vtoolz < -0.000001,
# [
# result = mprint(saxislim)
# ";", saxislim, peob, e
# exitpost
# ]
vtoolx_rot = vequ(vtoolx$)
vtoolx_nut = vequ(vtoolx$)
vtoolx_ret = vequ(vtoolx$)
de = (1-vtoolz_rot) / sin(anut)
cosa = (rb-de)/rb
if cosa >= 1, cosa = 1 # These tests keep COSA in range for ACOS
if cosa <= -1, cosa = -1
if tilt_dir = 0, a$ = -acos(cosa)
if tilt_dir = 1, a$ = acos(cosa)
axisx$ = vequ(vnutx) # VTX is the spindle vector after it has
vtx = rotv(a$, caxisx) # been rotated thru A, while C=0
a2 = atan2(vty, vtx) # Find direction of VTX in
a3 = atan2(vtooly_rot, vtoolx_rot) # VTOOL dir. in X,Y plane
c$ = a3 - a2
if vtoolx_rot = 0 & vtooly_rot = 0 & vtoolz_rot = 1, c$ = twist # About rotary axis
#Coordinate tracking for datum *not* at rotary centres / no CYCLE 19
#axisx = vequ(caxisx)
#xrot = rotp(-c,xrot)
#if arctype = 1, i = rotp(-c,i)
#else, i = rotv(-c,i)
#vtoolx_nut = rotv(-c,vtoolx_rot)
#axisx = vequ(vnutx)
#ptfixx = vequ(pt_origx)
#xrot = rotp(-a,xrot)
#if arctype = 1, i = rotp(-a,i)
#else, i = rotv(-a,i)
#vtoolx_nut = rotv(-a,vtoolx_nut)
csav = c$
asav = a$
#cg80 = atan2(-vtoolx_rot, vtooly_rot) # A neg pref
cg80 = atan2(vtoolx_rot, -vtooly_rot) # A pos pref
if vtoolx_rot = 0 & vtooly_rot = 0 & (vtoolz_rot = 0 | vtoolz_rot = 1 | vtoolz_rot = -1), cg80 = twist
axisx$ = vequ(caxisx)
ptfixx$ = vequ(pt_origx)
xrot = rotp(-cg80,xrot)
if opcode$ = 16,
[
drl_init_xrot = rotp(-cg80,drl_init_xrot)
drl_ref_xrot = rotp(-cg80,drl_ref_xrot)
drl_tos_xrot = rotp(-cg80,drl_tos_xrot)
drl_depth_xrot = rotp(-cg80,drl_depth_xrot)
]
if arctype$ = 1, i$ = rotp(-cg80,i$)
else, i$ = rotv(-cg80,i$)
vtoolx_rot = rotv(-cg80,vtoolx_rot)
#if cg80 > 180, cg80 = cg80 - 360
bg80 = 0 # B0 pref
#bg80 = 180 # B180 pref
#axisx = vequ(baxisx)
#ptfixx = vequ(pt_origx)
#xrot = rotp(-bg80,xrot)
#if arctype = 1, i = rotp(-bg80,i)
#else, i = rotv(-bg80,i)
#vtoolx_rot = rotv(-bg80,vtoolx_rot)
#ag80 = -atan2(vtooly_rot, vtoolz_rot) # A neg pref
ag80 = atan2(-vtooly_rot, vtoolz_rot) # A pos pref
axisx$ = vequ(aaxisx)
ptfixx$ = vequ(pt_origx)
if opcode$ = 16,
[
drl_init_xrot = rotp(-ag80,drl_init_xrot)
drl_ref_xrot = rotp(-ag80,drl_ref_xrot)
drl_tos_xrot = rotp(-ag80,drl_tos_xrot)
drl_depth_xrot = rotp(-ag80,drl_depth_xrot)
]
xrot = rotp(-ag80,xrot)
if arctype$ = 1, i$ = rotp(-ag80,i$)
else, i$ = rotv(-ag80,i$)
vtoolx_rot = rotv(-ag80,vtoolx_rot)
if opcode$ = 16 & toolchng <> 1 & toolchng0 <> 1, xabs = vequ(drl_depth_xrot)
else, xabs = vequ(xrot)
|
|