- GOTO SCREEN begin *>SCREEN begin - COMMENT "************************************************" - COMMENT "" - COMMENT " ENTRY POINT - SIGN ON MESSAGE" - COMMENT "" - COMMENT "************************************************" - PUT LARGE TEXT AT (6,1): "DELTA-TAU" - PUT LARGE TEXT AT (9,2): "AND" - PUT LARGE TEXT AT (3,3): "EASON TECHNOLOGY" - DELAY 1500 - CLEAR GRAPHICS SCREEN - PUT LARGE TEXT AT (4,2): "TOGETHER MAKE" - PUT LARGE TEXT AT (2,3): "INTELLIGENT MOTION" - DELAY 1500 power resume on pmacinit%=0 dim dist&(4) - GOTO SCREEN setscr2 - COMMENT "************************************************" - COMMENT "" - COMMENT " MAIN SCREEN - TOP LEVEL CONTROL" - COMMENT "" - COMMENT "************************************************" *>SCREEN entscr1 - PUT TEXT AT (1,3): "SETUP - SET UP PMAC / EASON INTERFACE" - PUT TEXT AT (1,4): "RUN - GENERATE MOTION IN ANY PMAC AXIS" - PUT TEXT AT (1,5): "DEMOS - PMAC EXAMPLE PROGRAMS" - PUT TEXT AT (1,6): "TUNE - ADJUST AND VIEW PMAC TUNING" - PUT LARGE TEXT AT (1,1): "SELECT PMAC FUNCTION" - SOFTKEY (1) "SETUP" GOTO SCREEN setupscr - SOFTKEY (2) " RUN" GOTO SCREEN runscr - SOFTKEY (3) "DEMO1" GOTO SCREEN demo1scr - SOFTKEY (4) "DEMO2" GOTO SCREEN demo2scr - SOFTKEY (5) "TUNE" GOTO SCREEN tunescr - SOFTKEY (6) "EXIT" GOTO SCREEN exitscr - SOFTKEY WAIT - COMMENT "************************************************" - COMMENT "" - COMMENT " RUN DEMO PROGRAM #1" - COMMENT "" - COMMENT "************************************************" *>SCREEN demo1scr - PUT LARGE TEXT AT (1,1): "RUNNING DEMO PROGRAM" - COM: PUT COM 1 TEXT "B5" - COM: PUT COM 1 TEXT "R" - SOFTKEY (6) "EXIT" GOTO SCREEN stopdemo - SOFTKEY WAIT - COMMENT "************************************************" - COMMENT "" - COMMENT " RUN DEMO PROGRAM #2" - COMMENT "" - COMMENT "************************************************" *>SCREEN demo2scr - PUT LARGE TEXT AT (1,1): "RUNNING DEMO PROGRAM" - COM: PUT COM 1 TEXT "B6" - COM: PUT COM 1 TEXT "R" - SOFTKEY (6) "EXIT" GOTO SCREEN stopdemo - SOFTKEY WAIT *>SCREEN stopdemo - COM: PUT COM 1 TEXT "A" - GOTO SCREEN entscr1 - COMMENT "************************************************" - COMMENT "" - COMMENT " RUN TUNING SYSTEM" - COMMENT "" - COMMENT "************************************************" *>SCREEN QUICK tunescr - CLEAR GRAPHICS SCREEN axis%=1 - GOSUB LABEL gettparm - LABEL tunescr1 - CLEAR SCREEN - PUT TEXT AT (1,1): "- PMAC TUNING SYSTEM - AXIS:" - PUT TEXT AT (8,2): "PROPORTIONAL:" - PUT TEXT AT (12,3): "INTEGRAL:" - PUT TEXT AT (10,4): "DERIVATIVE:" - PUT TEXT AT (3,5): "VEL. FEED FORWARD:" - PUT TEXT AT (1,6): "ACCEL. FEED FORWARD:" - PUT TEXT AT (4,7): "INTEGRATION MODE:" - PUT NUMBER axis% AT (38,1) USING "#" - PUT NUMBER pgain AT (22,2) USING "##########" - PUT NUMBER igain AT (22,3) USING "##########" - PUT NUMBER dgain AT (22,4) USING "##########" - PUT NUMBER vffgain AT (22,5) USING "##########" - PUT NUMBER affgain AT (22,6) USING "##########" - PUT NUMBER imode AT (31,7) USING "#" - SOFTKEY (1) "EDIT" GOTO SCREEN teditscr - SOFTKEY (2) "AXIS" GOTO SCREEN gaxis - SOFTKEY (3) "STORE" GOTO SCREEN storescr - SOFTKEY (4) "PLOT" GOTO SCREEN plotscr - SOFTKEY (6) "EXIT" GOTO SCREEN entscr1 - SOFTKEY WAIT *>SCREEN QUICK gaxis - GET NUMBER axis% AT (38,1) USING "#" DEFAULT axis% if axis% <1 then axis%=1 if axis% >4 then axis%=4 - GOSUB LABEL gettparm - GOTO SCREEN tunescr1 *>SCREEN QUICK teditscr pos 1,8:print "CHANGE NUMBER, PRESS ENTER FOR NEXT"; CX=21:CY=2 BX=CX*6: BY=(CY*8)-9 ' label makegbox call BOX(62+BX,BY,BX,BY+8,0) BX=CX*6: BY=(CY*8)-9 call BOX(62+BX,BY,BX,BY+8,1) ' pos CX+1,CY if CY=2 then goto pgedit if CY=3 then goto igedit if CY=4 then goto dgedit if CY=5 then goto vgedit if CY=6 then goto agedit if CY=7 then goto imgedit ' label pgedit call ninput (pgain,"##########",gain$) pgain=val(gain$) goto tedex ' label igedit call ninput (igain,"##########",gain$) igain=val(gain$) goto tedex ' label dgedit call ninput (dgain,"##########",gain$) dgain=val(gain$) goto tedex ' label vgedit call ninput (vffgain,"##########",gain$) vffgain=val(gain$) goto tedex ' label agedit call ninput (affgain,"##########",gain$) affgain=val(gain$) goto tedex ' label imgedit pos CX+10,CY call ninput (imode,"#",gain$) imode=val(gain$) goto tedex ' label tedex CY=CY+1 if CY < 8 then goto makegbox call BOX(62+BX,BY,BX,BY+8,0) goto tunescr1 - LABEL gettparm frstr$="I"+str$(axis%) print #1,frstr$;"30" line input #1,gain$: pgain = val(gain$) print #1,frstr$;"31" line input #1,gain$: dgain = val(gain$) print #1,frstr$;"32" line input #1,gain$: vffgain = val(gain$) print #1,frstr$;"33" line input #1,gain$: igain = val(gain$) print #1,frstr$;"34" line input #1,gain$: imode = val(gain$) print #1,frstr$;"35" line input #1,gain$: affgain = val(gain$) - RETURN *>SCREEN QUICK storescr frstr$="I"+str$(axis%) print #1,frstr$;"30";"=";pgain print #1,frstr$;"31";"=";dgain print #1,frstr$;"32";"=";vffgain print #1,frstr$;"33";"=";igain print #1,frstr$;"34";"=";imode print #1,frstr$;"35";"=";affgain - GOTO SCREEN tunescr1 *>SCREEN plotscr call line (0,0,0,30,0) print #1,"B";str$(9+axis%) print #1,"DELETE GATHER" print #1,"DEFINE GATHER" print #1,"R" print #1,"list gather 0,1" line input #1,gather$ offset=(hex(gather$))/30720 c=0 for n%=1 to 239 print #1,"list gather";n%;",1" line input #1,gather$ a =55-(((hex(gather$))/30720)-offset) call line(,,n%,a,c) c=1 next print #1,"DELETE GATHER" - SOFTKEY (6) "EXIT" GOTO SCREEN tunescr - SOFTKEY WAIT - COMMENT "************************************************" - COMMENT "" - COMMENT " RUN PMAC IN MANUAL MODE" - COMMENT "" - COMMENT "************************************************" *>SCREEN runscr accel=100 velocity =50 dist&(1)=2000:dist&(2)=2000:dist&(3)=2000:dist&(4)=2000 axis%=1 mode$="INC" print #1,mode$ print #1,"P1=";dist&(1) print #1,"P2=";dist&(2) print #1,"P3=";dist&(3) print #1,"P4=";dist&(4) print #1,"P5=100000" print #1,"P6=10" ' - GOTO SCREEN runscrx *>SCREEN QUICK runscrx - CLEAR SCREEN - PUT TEXT AT (1,1): " DIST - COMMANDED: ACTUAL:" - PUT TEXT AT (5,2): "X:" - PUT TEXT AT (5,3): "Y:" - PUT TEXT AT (5,4): "Z:" - PUT TEXT AT (5,5): "A:" - PUT TEXT AT (25,2): "X:" - PUT TEXT AT (25,3): "Y:" - PUT TEXT AT (25,4): "Z:" - PUT TEXT AT (25,5): "A:" - PUT TEXT AT (3,6): "VEL: RPS" - PUT TEXT AT (1,7): "ACCEL: RPS^2" 'save put numbers pos 7,2:print using "+##########";dist&(1) pos 7,3:print using "+##########";dist&(2) pos 7,4:print using "+##########";dist&(3) pos 7,5:print using "+##########";dist&(4) - PUT NUMBER velocity AT (10,6) USING "###.####" - PUT NUMBER accel AT (10,7) USING "###.####" pos 28,7:print "MODE: ";mode$; key (1), " GO" key (2), "STOP" key (3), "HOME" key (4), "EDIT" key (5), " JOG" key (6), "EXIT" - LABEL runscr1a print #1,"#1":print #1,"P" line input #1,posit$ pos 29,2:print using "+##########";val(posit$); ZBLDKEY%=inkey() if ZBLDKEY%=15104 then gosub goscr if ZBLDKEY%=15360 then gosub stopscr if ZBLDKEY%=15616 then gosub homescr if ZBLDKEY%=15872 then goto editscr if ZBLDKEY%=16128 then goto jogscr if ZBLDKEY%=16384 then goto entscr1 print #1,"#2":print #1,"P" line input #1,posit$ pos 29,3:print using "+##########";val(posit$); ZBLDKEY%=inkey() if ZBLDKEY%=15104 then gosub goscr if ZBLDKEY%=15360 then gosub stopscr if ZBLDKEY%=15616 then gosub homescr if ZBLDKEY%=15872 then goto editscr if ZBLDKEY%=16128 then goto jogscr if ZBLDKEY%=16384 then goto entscr1 print #1,"#3":print #1,"P" line input #1,posit$ pos 29,4:print using "+##########";val(posit$); ZBLDKEY%=inkey() if ZBLDKEY%=15104 then gosub goscr if ZBLDKEY%=15360 then gosub stopscr if ZBLDKEY%=15616 then gosub homescr if ZBLDKEY%=15872 then goto editscr if ZBLDKEY%=16128 then goto jogscr if ZBLDKEY%=16384 then goto entscr1 print #1,"#4":print #1,"P" line input #1,posit$ pos 29,5:print using "+##########";val(posit$); print #1,"#1" ZBLDKEY%=inkey() if ZBLDKEY%=15104 then gosub goscr if ZBLDKEY%=15360 then gosub stopscr if ZBLDKEY%=15616 then gosub homescr if ZBLDKEY%=15872 then goto editscr if ZBLDKEY%=16128 then goto jogscr if ZBLDKEY%=16384 then goto entscr1 - GOTO LABEL runscr1a - LABEL goscr print #1,"B1" print #1,"R" - RETURN - LABEL stopscr print #1,"A" - RETURN - LABEL homescr print #1,"B2" print #1,"R" - RETURN *>SCREEN QUICK editscr pos 1,8:print "CHANGE NUMBER, PRESS ENTER FOR NEXT"; CX=7:CY=2 BX=CX*6: BY=(CY*8)-9 ' label makebox call BOX(62+BX,BY,BX,BY+8,0) BX=CX*6: BY=(CY*8)-9 call BOX(62+BX,BY,BX,BY+8,1) ' label getnum if CY<=5 then axis%=CY-1:goto dedit if CY=6 then goto vedit if CY=7 and CX=7 then goto aedit if CY=7 and CX=27 then goto modeedit ' label aedit pos CX+3,CY call ninput(accel,"###.####",accels$) accel=val(accels$) if accel > 999 then accel = 999 if accel=0 then acnt&=8388607 else acnt&=velocity/accel print #1,"P6=";acnt& goto editnext ' label vedit pos CX+3,CY call ninput(velocity,"###.####",vels$) velocity=val(vels$) if velocity > 999 then velocity = 999 velcnt&=2000*velocity print #1,"P5=";velcnt& goto editnext ' label dedit pos CX+1,CY call ninput(dist&(axis%),"+#########",dists$) dist&(axis%)=val(dists$) print #1,"P";str$(axis%);"=";dist&(axis%) goto editnext ' label modeedit pos CX+1,CY print "MODE: ";mode$; pos 1,8:print "ANY KEY CHANGES MODE. ENTER TO EXIT"; label modeed1 k=inkey() if k=0 then goto modeed1 if k=13 then goto modeed2 if mode$="INC" then mode$="ABS" else mode$="INC" pos CX+1,CY print "MODE: ";mode$; goto modeed1 label modeed2 print #1,mode$ ' label editnext if CX=27 then goto editexit CY=CY+1 if CY > 7 then CY=7:CX=27 goto makebox label editexit call BOX(62+BX,BY,BX,BY+8,0) goto runscrx ' *>SCREEN QUICK jogscr key (1), " XY" key (2), " ZA" key (6), "EXIT" jogaxis1%=1 jogaxis2%=2 ' ' Scan softkeys label reask call scankey (jog%) if jog% = 15104 then gosub selxy if jog% = 15360 then gosub selza if jog% = 19200 then gosub jogl if jog% = 19712 then gosub jogr if jog% = 18432 then gosub jogu if jog% = 20480 then gosub jogd if jog% = 16384 then goto jogexit goto reask ' ' exit ---------- label jogexit repeat n%=inkey() until n%=0 goto runscrx ' ' select xy jog pair -------- label selxy jogaxis1%=1 jogaxis2%=2 return ' ' select za jog pair -------- label selza jogaxis1%=3 jogaxis2%=4 return ' 'left jog ------- label jogl print #1,"#";str$(jogaxis1%) print #1,"J-" label waitl call scankey (jog%) if jog% <> 19200 then goto jogdone print #1,"P" line input #1,posit$ pos 29,jogaxis1%+1:print using "+##########";val(posit$); goto waitl ' 'right jog ------- label jogr print #1,"#";str$(jogaxis1%) print #1,"J+" label waitr call scankey (jog%) if jog% <> 19712 then goto jogdone print #1,"P" line input #1,posit$ pos 29,jogaxis1%+1:print using "+##########";val(posit$); goto waitr ' 'down jog ------- label jogd print #1,"#";str$(jogaxis2%) print #1,"J-" label waitd call scankey (jog%) if jog% <> 20480 then goto jogdone print #1,"P" line input #1,posit$ pos 29,jogaxis2%+1:print using "+##########";val(posit$); goto waitd ' 'up jog ------- label jogu print #1,"#";str$(jogaxis2%) print #1,"J+" label waitu call scankey (jog%) if jog% <> 18432 then goto jogdone print #1,"P" line input #1,posit$ pos 29,jogaxis2%+1:print using "+##########";val(posit$); goto waitu ' ' jog stop label jogdone print #1,"J/" print #1,"#1" repeat n=inkey() until n=0 return *>SCREEN setupscr - COMMENT "************************************************" - COMMENT "" - COMMENT " SETUP PMAC" - COMMENT "" - COMMENT "************************************************" - PUT TEXT AT (3,3): "YES - RELOAD I VARIABLES AND PROGRAMS" - PUT TEXT AT (1,4): "COMPL - COMPLETELY RESET PMAC AND RELOAD" - PUT TEXT AT (9,5): "I VARIABLES AND PROGRAMS. THIS" - PUT TEXT AT (9,6): "ACTION MAY ERASE SAVED PROGRAMS." - PUT TEXT AT (1,7): "EXIT - RETURN TO MAIN MENU" - PUT LARGE TEXT AT (1,1): "INITIALIZE THE PMAC?" - SOFTKEY (1) " YES" GOTO SCREEN setscr1 - SOFTKEY (2) "COMPL" GOTO SCREEN setscr2 - SOFTKEY (6) "EXIT" GOTO SCREEN entscr1 - SOFTKEY WAIT *>SCREEN QUICK setscr1 pmacinit%=1 - GOTO SCREEN setscr2 *>SCREEN setscr2 - PUT TEXT AT (1,1): "SETUP:" - PUT TEXT AT (1,2): "- INITIALIZE COMMUNICATIONS LINK" - COM: INIT COM 1 ECHO 0 BAUD 96 HANDSHAKE 0 TIMEOUT 250 STRIP 1 - PUT TEXT AT (1,3): "- VERIFY COMMUNICATIONS INTEGRITY" - COM: PUT COM 1 TEXT "I3=0" - COM: GET COM 1 TEXT pmech$ n=10 - LABEL setup2 - COM: PUT COM 1 TEXT "P" - COM: GET COM 1 TEXT pmdat$ if pmdat$<>"" then goto setup1 n=n-1 if n=0 then goto pmacerr - GOTO LABEL setup2 - LABEL setup1 if pmacinit=0 then goto setup1a - COM: PUT COM 1 TEXT "$$$***" - DELAY 1000 - LABEL setup1a pmacinit%=0 - PUT TEXT AT (1,4): "- INITIALIZING PMAC VARIABLES (SUBSET)" - PUT TEXT AT (1,5): " AND PRELOADING PMAC PROGRAM BUFFERS" restore:n=0 - LABEL setup3 read pmdat$ n=n+1 if pmdat$="" then goto setup4 - COM: PUT COM 1 TEXT pmdat$ - PUT TEXT AT (3,6): "LINES DOWNLOADED:" - PUT NUMBER n AT (21,6) USING "####" - GOTO LABEL setup3 'PRELOAD PMAC VARIABLES AND BUFFERS: data "CLOSE" data "I19=4" data "I20=1" data "I100=1" data "I106=0" data "I111=0" data "I115=.5" data "I116=10000000" data "I117=100" data "I119=.5" data "I126=11000" data "I130=2000000" data "I131=2000" data "I132=2000" data "I133=30000" data "I134=0" data "I135=9500" data "I187=500" data "I188=50" data "I189=50000" data "I200=1" data "I206=0" data "I211=0" data "I215=.5" data "I216=10000000" data "I217=100" data "I219=.5" data "I226=-2500" data "I230=2000000" data "I231=2000" data "I232=2000" data "I233=30000" data "I234=0" data "I235=9500" data "I287=500" data "I288=50" data "I289=50000" data "I300=1" data "I306=0" data "I311=0" data "I315=.5" data "I316=10000000" data "I317=100" data "I319=.5" data "I326=11250" data "I330=2000000" data "I331=2000" data "I332=2000" data "I333=30000" data "I334=0" data "I335=9500" data "I387=500" data "I388=50" data "I389=50000" data "I400=1" data "I406=0" data "I411=0" data "I415=.5" data "I416=10000000" data "I417=100" data "I419=.5" data "I426=8700" data "I430=2000000" data "I431=2000" data "I432=2000" data "I433=30000" data "I434=0" data "I435=9500" data "I487=500" data "I488=50" data "I489=50000" data "UNDEFINE" data "&1" data "#1->X" data "#2->Y" data "#3->Z" data "#4->A" data "OPEN PROG 1 clear" data "F(P5)" data "TA (P6)" data "TS 50" data "X(P1) Y(P2) Z(P3) A(P4)" data "CLOSE" data "OPEN PROG 2 clear" data "HM 1,2,3,4" data "CLOSE" data "CLOSE" data "OPEN PROG 5 CLEAR" data "F100000" data "TA 10" data "TS 20" data "HM 1,2,3,4" data "INC" data "WHILE(1<2)" data " P1=5" data " WHILE(P1>0)" data " X-20000 Y20000 Z-20000 A20000" data " DWELL 10" data " X20000 Y-20000 Z20000 A-20000" data " DWELL 10" data " P1=P1-1" data " END WHILE" data " X100000Y100000Z100000A100000" data " DWELL 10" data "END WHILE" data "CLOSE" data "OPEN PROG 6 CLEAR" data "F100000" data "TA 10" data "TS 20" data "HM 1,2,3,4" data "INC" data "WHILE(1<2)" data " P1=5" data " WHILE(P1>0)" data " X20000 Y20000 Z20000 A0" data " DWELL 10" data " X20000 Y20000 Z0 A20000" data " DWELL 10" data " X20000 Y0 Z20000 A20000" data " DWELL 10" data " X0 Y20000 Z20000 A20000" data " DWELL 10" data " P1=P1-1" data " END WHILE" data " X-100000Y-100000Z-100000A-100000" data " DWELL 10" data "END WHILE" data "CLOSE" data "CLOSE DELETE GATHER DELETE TRACE" data "OPEN PROG 10 CLEAR " data "I21=$80002B" data "TA1" data "TS2" data "F20000" data "COMMAND \"GATHER\"" data "DWELL25" data "DWELL25" data "X500" data "DWELL5" data "X-500" data "DWELL250" data "DWELL25" data "COMMAND \"END GATHER\"" data "CLOSE" data "CLOSE DELETE GATHER DELETE TRACE" data "OPEN PROG 11 CLEAR " data "I21=$800067" data "TA1" data "TS2" data "F20000" data "COMMAND \"GATHER\"" data "DWELL25" data "DWELL25" data "Y500" data "DWELL5" data "Y-500" data "DWELL250" data "DWELL25" data "COMMAND \"END GATHER\"" data "CLOSE" data "CLOSE DELETE GATHER DELETE TRACE" data "OPEN PROG 12 CLEAR " data "I21=$8000A3" data "TA1" data "TS2" data "F20000" data "COMMAND \"GATHER\"" data "DWELL25" data "DWELL25" data "Z500" data "DWELL5" data "Z-500" data "DWELL250" data "DWELL25" data "COMMAND \"END GATHER\"" data "CLOSE" data "CLOSE DELETE GATHER DELETE TRACE" data "OPEN PROG 13 CLEAR " data "I21=$8000DF" data "TA1" data "TS2" data "F20000" data "COMMAND \"GATHER\"" data "DWELL25" data "DWELL25" data "A500" data "DWELL5" data "A-500" data "DWELL250" data "DWELL25" data "COMMAND \"END GATHER\"" data "CLOSE" data "" - LABEL setup4 - PUT TEXT AT (1,7): "- INITIALIZATION COMPLETE" - DELAY 750 - GOTO SCREEN entscr1 *>SCREEN pmacerr - PUT TEXT AT (1,1): "PMAC COMMUNICATIONS ERROR HAS BEEN" - PUT TEXT AT (1,2): "DETECTED. SOME POSSIBLE CAUSES:" - PUT TEXT AT (4,3): "- PMAC DEMO NOT CONNECTED TO COM1" - PUT TEXT AT (4,4): "- PMAC DEMO NOT POWERED UP" - PUT TEXT AT (4,5): "- PMAC DEMO PROGRAMS RUNNING" - PUT TEXT AT (4,6): "- PRESS RETRY TO TRY AGAIN" - PUT TEXT AT (4,7): "- PRESS EXIT TO RETURN TO BASIC" - SOFTKEY (1) "RETRY" GOTO SCREEN setupscr - SOFTKEY (6) " EXIT" GOTO SCREEN exitscr - SOFTKEY WAIT *>SCREEN exitscr - PUT LARGE TEXT AT (2,1): "RETURNING TO BASIC" - PUT LARGE TEXT AT (3,2): "PRESS F1-RUN TO" - PUT LARGE TEXT AT (3,3): "RUN PMAC PROGRAM" pos 1,7 - DELAY 1000 end - END OF PSEUDOCODE