- GOTO SCREEN begin *>SCREEN begin - HOT KEY (10) "" INTERRUPT: GOSUB LABEL helpsys - GOTO SCREEN startup *>SCREEN startup - PUT TEXT AT (1,5): "Choose the type of motor-driver attached" - PUT TEXT AT (1,6): "to your Model 1100 (press the associated" - PUT TEXT AT (1,7): "soft key)." - PUT LARGE TEXT AT (2,1): "PARKER COMPUMOTOR" - PUT LARGE TEXT AT (4,2): "DEMO PROGRAM" - SOFTKEY (3) " AX" GOTO SCREEN testax - SOFTKEY (4) " SX" GOTO SCREEN testsx - SOFTKEY WAIT - LABEL initunit - COMMENT "Initialize units for DRIVE" pitch=5 dd&=onerev dscale=1 d$="STEPS" vd%=10 vscale=1 v$="REVS/SECOND" ascale=1 ad%=100 a$="REVS/SEC^2" - RETURN - TITLE:::::::::: "INITIALIZE AX" :::::::::::: *>SCREEN testax - PUT TEXT AT (2,1): "ATTEMPTING TO ESTABLISH COMMUNICATION" - PUT TEXT AT (8,2): "WITH THE AX MOTOR/DRIVE." - PUT LARGE TEXT AT (2,3): "PLEASE STAND BY..." onerev=12800 drtype=0 - GOSUB LABEL initunit - COM: INIT COM 1 ECHO 1 BAUD 96 HANDSHAKE 0 TIMEOUT 250 STRIP 1 - DELAY 750 n = 1 - LABEL comtest - COM: PUT COM 1 TEXT "1E 1K 1MN 1R" - COM: GET COM 1 TEXT stat$ if stat$ = "*R" or stat$ = "*S" then goto runax if n = 11 then goto canttalk - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - PUT LARGE TEXT AT (1,1): "DRIVE NOT RESPONDING" - PUT TEXT AT (4,4): "RETRYING CHECK-OUT TEN MORE TIMES" - PUT TEXT AT (14,6): "ATTEMPT #" - PUT NUMBER n AT (24,6) USING "##" n = n+1 - GOTO LABEL comtest - LABEL canttalk - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - PUT TEXT AT (3,1): "CANNOT ESTABLISH COMMUNICATIONS WITH" - PUT TEXT AT (15,2): "MOTOR/DRIVE" - PUT TEXT AT (8,5): "RETURNING TO BASIC..." - DELAY 1000 - GOTO SCREEN exit - LABEL runax - COM: INIT COM 1 ECHO 1 BAUD 96 HANDSHAKE 0 TIMEOUT 1000 STRIP 1 - COM: PUT COM 1 TEXT "1MN 1LD3 1A100 1V10 1D12800" - CLEAR GRAPHICS SCREEN - GOTO SCREEN main - TITLE:::::::::: "INITIALIZE SX" :::::::::::: *>SCREEN testsx - PUT TEXT AT (2,1): "ATTEMPTING TO ESTABLISH COMMUNICATION" - PUT TEXT AT (8,2): "WITH THE SX MOTOR/DRIVE." - PUT LARGE TEXT AT (2,3): "PLEASE STAND BY..." onerev=25000 drtype=1 - GOSUB LABEL initunit - COM: INIT COM 1 ECHO 1 BAUD 96 HANDSHAKE 0 TIMEOUT 250 STRIP 1 - DELAY 750 n = 1 - LABEL comtests - COM: PUT COM 1 TEXT "1E 1K 1MN 1R" - COM: GET COM 1 TEXT stat$ if stat$ = "*R" or stat$ = "*S" then goto runsx if n = 11 then goto notalksx - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - PUT LARGE TEXT AT (1,1): "DRIVE NOT RESPONDING" - PUT TEXT AT (4,4): "RETRYING CHECK-OUT TEN MORE TIMES" - PUT TEXT AT (14,6): "ATTEMPT #" - PUT NUMBER n AT (24,6) USING "##" n = n+1 - GOTO LABEL comtests - LABEL notalksx - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - PUT TEXT AT (3,1): "CANNOT ESTABLISH COMMUNICATIONS WITH" - PUT TEXT AT (15,2): "MOTOR/DRIVE" - PUT TEXT AT (8,5): "RETURNING TO BASIC..." - DELAY 1000 - GOTO SCREEN exit - LABEL runsx - COM: INIT COM 1 ECHO 1 BAUD 96 HANDSHAKE 0 TIMEOUT 1000 STRIP 1 - COM: PUT COM 1 TEXT "1SSI1 1LD3 1A100 1V10 1D25000" - CLEAR GRAPHICS SCREEN - GOTO SCREEN main - TITLE:::::::::: ":::::::::::::" :::::::::::: - TITLE:::::::::: "MAIN RUN LOOP" :::::::::::: - TITLE:::::::::: ":::::::::::::" :::::::::::: *>SCREEN main - PUT TEXT AT (12,6): "Press F9 to EXIT." - PUT LARGE TEXT AT (1,1): " SELECT A FUNCTION: " - SOFTKEY (1) "A-V-D" GOTO SCREEN avdset - SOFTKEY (2) "UNITS" GOTO SCREEN units - SOFTKEY (3) "STAT" GOTO SCREEN status - SOFTKEY (4) "SEQ 1" GOTO SCREEN sequence - SOFTKEY (5) "MOVE" GOTO SCREEN start - SOFTKEY (6) "STOP" GOTO SCREEN kill - SOFTKEY (9) "EXIT" GOTO SCREEN exit - SOFTKEY WAIT - TITLE:::::::::: "SET ACCELERATION, VELOCITY, DISTANCE, AND PITCH" :::::::::::: *>SCREEN QUICK avdset - CLEAR SCREEN - PUT TEXT AT (11,6): "Select a Function:" - PUT LARGE TEXT AT (1,1): "MOTION PARAMETERS: " - SOFTKEY (1) "ACCEL" GOTO SCREEN accelset - SOFTKEY (2) " VEL" GOTO SCREEN velset - SOFTKEY (3) "DIST" GOTO SCREEN distset - SOFTKEY (4) "PITCH" GOTO SCREEN pitchset - SOFTKEY (6) "EXIT" GOTO SCREEN main - SOFTKEY WAIT - TITLE:::::::::: "SET UP ACCELERATION" :::::::::::: *>SCREEN accelset - PUT TEXT AT (1,2): "ACCELERATION IN" - PUT TEXT AT (1,4): "ENTER ACCELERATION:" - PUT TEXT AT (1,7): "ENTER TO ACCEPT OR ENTER A NEW VALUE" pos 17,2 : print a$;":" ad% = ad% / ascale - GET NUMBER ad% AT (21,4) USING "###.##" DEFAULT ad% ad% = ad% * ascale acc$="1A"+str$(ad%) - COM: PUT COM 1 TEXT acc$ - GOTO SCREEN avdset - TITLE:::::::::: "SET UP VELOCITY" :::::::::::: *>SCREEN velset - PUT TEXT AT (1,2): "VELOCITY IN" - PUT TEXT AT (1,4): "ENTER VELOCITY:" - PUT TEXT AT (1,7): "ENTER TO ACCEPT OR ENTER A NEW VALUE" pos 17,2 : print v$;":" vd% = vd% / vscale - GET NUMBER vd% AT (21,4) USING "###.##" DEFAULT vd% vd% = vd% * vscale vel$="1V"+str$(vd%) - COM: PUT COM 1 TEXT vel$ - GOTO SCREEN avdset - TITLE:::::::::: "SET UP DISTANCE" :::::::::::: *>SCREEN distset - PUT TEXT AT (1,2): "DISTANCE IN" - PUT TEXT AT (1,4): "ENTER DISTANCE:" - PUT TEXT AT (1,7): "ENTER TO ACCEPT OR ENTER A NEW VALUE" pos 17,2 : print d$;":" td = dd& / dscale - GET NUMBER td AT (18,4) USING "-#########.##" DEFAULT td dd& = td * dscale dist$="1D"+str$(dd&) - COM: PUT COM 1 TEXT dist$ - GOTO SCREEN avdset - TITLE:::::::::: "SET UP SCREW PITCH" :::::::::::: *>SCREEN pitchset - PUT TEXT AT (1,4): "ENTER SCREW PITCH:" - PUT TEXT AT (1,7): "ENTER TO ACCEPT OR ENTER A NEW VALUE" - GET NUMBER pitch AT (20,4) USING "##.###" DEFAULT pitch - GOTO SCREEN units - TITLE:::::::::: "SET DISPLAY / ENTRY UNITS" :::::::::::: *>SCREEN units - PUT TEXT AT (2,4): "LINEAR MEASURE ASSUMES A PITCH" - PUT TEXT AT (2,5): "LEAD SCREW ON A LINEAR TRANSLATION" - PUT TEXT AT (2,6): "DEVICE." - PUT LARGE TEXT AT (1,1): "SELECT MOTION UNITS-" - PUT NUMBER pitch AT (27,4) USING "##.###" - SOFTKEY (1) "STEPS" GOTO SCREEN steps - SOFTKEY (2) "MILS" GOTO SCREEN mils - SOFTKEY (3) "INCH" GOTO SCREEN inch - SOFTKEY (4) " MM" GOTO SCREEN mms - SOFTKEY (5) " UM" GOTO SCREEN ums - SOFTKEY (6) "EXIT" GOTO SCREEN main - SOFTKEY WAIT - TITLE:::::::::: "SCALE UNITS IN STEPS" :::::::::::: *>SCREEN steps - PUT LARGE TEXT AT (1,1): "UNITS ARE NOW SCALED" - PUT LARGE TEXT AT (10,2): "IN" - PUT HUGE TEXT AT (4,2): "STEPS" dscale = 1 d$ = "STEPS" vscale = 1 v$ = "REVS/SECOND" ascale = 1 a$ = "REVS/SEC^2" - DELAY 1000 - GOTO SCREEN units - TITLE:::::::::: "SCALE UNITS IN MILS" :::::::::::: *>SCREEN mils - PUT LARGE TEXT AT (1,1): "UNITS ARE NOW SCALED" - PUT LARGE TEXT AT (10,2): "IN" - PUT HUGE TEXT AT (4,2): "MILS" dscale = onerev*pitch/1000 d$ = "MILS" vscale = pitch v$ = "INCHES/SECOND" ascale = pitch a$ = "INCHES/SEC^2" - DELAY 1000 - GOTO SCREEN units - TITLE:::::::::: "SCALE UNITS IN INCHES" :::::::::::: *>SCREEN inch - PUT LARGE TEXT AT (1,1): "UNITS ARE NOW SCALED" - PUT LARGE TEXT AT (10,2): "IN" - PUT HUGE TEXT AT (3,2): "INCHES" dscale = onerev*pitch d$ = "INCHES" vscale = pitch v$ = "INCHES/SECOND" ascale = pitch a$ = "INCHES/SEC^2" - DELAY 1000 - GOTO SCREEN units - TITLE:::::::::: "SCALE UNITS IN MILLIMETERS" :::::::::::: *>SCREEN mms - PUT LARGE TEXT AT (1,1): "UNITS ARE NOW SCALED" - PUT LARGE TEXT AT (10,2): "IN" - PUT HUGE TEXT AT (1,2): "MILLIMETER" dscale = onerev*pitch/25.4 d$ = "MM" vscale = 25.4*pitch v$ = "MM/SECOND" ascale = 25.4*pitch a$ = "MM/SEC^2" - DELAY 1000 - GOTO SCREEN units - TITLE:::::::::: "SCALE UNITS IN MICRONS" :::::::::::: *>SCREEN ums - PUT LARGE TEXT AT (1,1): "UNITS ARE NOW SCALED" - PUT LARGE TEXT AT (10,2): "IN" - PUT HUGE TEXT AT (2,2): "MICRONS" dscale = onerev*pitch/25400 d$ = "MICRONS" vscale = 25400*pitch v$ = "MICRONS/SECOND" ascale = 25400*pitch a$ = "MICRONS/SEC^2" - DELAY 1000 - GOTO SCREEN units - TITLE:::::::::: "READ DEVICE STATUS AND POSITION" :::::::::::: *>SCREEN status - PUT LARGE TEXT AT (1,1): "POSITION:" - PUT LARGE TEXT AT (1,3): "STATUS:" - PUT LARGE TEXT AT (14,2): d$ - SOFTKEY (1) "ZERO" GOTO SCREEN zeroscr - SOFTKEY (2) "MOVE" GOTO SCREEN starts - SOFTKEY (6) "EXIT" GOTO SCREEN main - LABEL statloop print#1,"1R":line input#1,e$:line input#1,stat$ print#1,"1PR":line input#1,e$ - LABEL stat1 line input#1,ps$ if ps$="" then goto stat1 if drtype=1 then ps$=right$(ps$,11) px& = val(ps$) px& = px&/dscale p = val(ps$) p = p/dscale if flag = 1 then goto statdisp if dscale <> 1 then goto pscale - PUT LARGE NUMBER px& AT (1,2) USING "-###########" - GOTO LABEL statdisp - LABEL pscale - PUT LARGE NUMBER p AT (1,2) USING "-#######.###" - LABEL statdisp - PUT LARGE TEXT AT (9,3): stat$ - SOFTKEY CHECK - GOTO LABEL statloop - LABEL zeroscr - COM: PUT COM 1 TEXT "1PZ" - GOTO LABEL statloop - LABEL starts - COM: PUT COM 1 TEXT "1G" - GOTO LABEL statloop - TITLE:::::::::: "DOWNLOAD AND RUN A SEQUENCE" :::::::::::: *>SCREEN QUICK sequence - CLEAR SCREEN - PUT TEXT AT (3,3): "A SEQUENCE TO THE MOTION CONTROLLER" - PUT LARGE TEXT AT (1,1): " TRANSMITTING... " seq$ = "1A100 1V10 1D12800 1G" i=1 - LABEL seq1 - COM: PUT COM 1 TEXT "1R" - COM: GET COM 1 TEXT stat$ if i=2 then goto seqerr i=i+1 if stat$ <> "*R" and stat$ <> "*S" then goto seq1 - COM: PUT COM 1 TEXT "1XE1 1XD1" - COM: PUT COM 1 TEXT seq$ - COM: PUT COM 1 TEXT "XT" - DELAY 250 if drtype = 1 then goto sxseq - TITLE:::::::::: "AX SEQUENCE OPERATION" :::::::::::: - COM: PUT COM 1 TEXT "1XSD" - COM: GET COM 1 TEXT stat$ if stat$ <> "0" then goto seqerr - PUT TEXT AT (2,4): "SYNTAX IS:" - PUT TEXT AT (13,4): seq$ - PUT TEXT AT (3,6): "RUNNING SEQUENCE TEN TIMES:" ?"" for n = 1 to 10 ?n; - COM: PUT COM 1 TEXT "1XR1" - LABEL doneseq - COM: PUT COM 1 TEXT "1XSR1" - COM: GET COM 1 TEXT stat$ if stat$ <> "0" then delay 50:goto doneseq next - GOTO SCREEN main - TITLE:::::::::: "SX SEQUENCE OPERATION" :::::::::::: - LABEL sxseq n=1 - LABEL sxseq1 - COM: PUT COM 1 TEXT "1R" - COM: GET COM 1 TEXT stat$ delay 10 if n=10 then goto seqerr n=n+1 if stat$ <> "*R" then goto sxseq1 - PUT TEXT AT (2,4): "SYNTAX IS:" - PUT TEXT AT (13,4): seq$ - PUT TEXT AT (3,6): "RUNNING SEQUENCE TEN TIMES:" ?"" for n = 1 to 10 ?n; - COM: PUT COM 1 TEXT "1XR1" - LABEL donesxq - COM: PUT COM 1 TEXT "1R" - COM: GET COM 1 TEXT stat$ if stat$ <> "*R" then delay 50:goto donesxq next - GOTO SCREEN main - TITLE:::::::::: "SEQUENCE ERROR" :::::::::::: - LABEL seqerr - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - KEY OFF - PUT LARGE TEXT AT (1,1): "CAN'T SEND SEQUENCE" - PUT TEXT AT (2,5): "RETURNING TO MOTION SELECTION MENU...." - DELAY 1500 - CLEAR GRAPHICS SCREEN - GOTO SCREEN main - TITLE:::::::::: "START MOTION" :::::::::::: *>SCREEN QUICK start - CLEAR SCREEN - PUT LARGE TEXT AT (1,1): " MOTION HAS BEGUN " - COM: PUT COM 1 TEXT "1G" - DELAY 250 - GOTO SCREEN main - TITLE:::::::::: "KILL MOTION" :::::::::::: *>SCREEN QUICK kill - CLEAR SCREEN - PUT LARGE TEXT AT (1,1): " STOPPING MOTION " - COM: PUT COM 1 TEXT "1S" - DELAY 500 - GOTO SCREEN main - LABEL helpsys - HELP: CLEAR HELP SCREEN - HELP: PUT HELP TEXT AT 1 : "This program demonstrates the use of" - HELP: PUT HELP TEXT AT 2 : "the MODEL 1100 and the PARKER COMPUMOTOR" - HELP: PUT HELP TEXT AT 3 : "smart MOTOR/DRIVES. You should first" - HELP: PUT HELP TEXT AT 4 : "hook up the MODEL 1100 to the motor" - HELP: PUT HELP TEXT AT 5 : "drive by following the instructions in" - HELP: PUT HELP TEXT AT 6 : "Section 5.6.1 of the MODEL 1100 manual." - HELP: PUT HELP TEXT AT 7 : "COM 1 on the MODEL 1100 is connected to" - HELP: PUT HELP TEXT AT 8 : "----- PRESS ANY KEY FOR MORE HELP -----" - HELP: DISPLAY HELP TEXT AND WAIT FOR KEY - HELP: CLEAR HELP SCREEN - HELP: PUT HELP TEXT AT 1 : "the RS232 port on the motor/drive. A" - HELP: PUT HELP TEXT AT 2 : "cable is available from EASON" - HELP: PUT HELP TEXT AT 3 : "TECHNOLOGY. Please call us if you need" - HELP: PUT HELP TEXT AT 4 : "further assistance." - HELP: PUT HELP TEXT AT 5 : " (707)-433-2854" - HELP: PUT HELP TEXT AT 6 : " (707)-433-3706 (FAX)" - HELP: PUT HELP TEXT AT 8 : "--PRESS ANY KEY TO RESUME THE PROGRAM--" - HELP: DISPLAY HELP TEXT AND WAIT FOR KEY - HOT KEY (10) RESUME - RETURN - TITLE:::::::::: "RETURN TO BASIC" :::::::::::: *>SCREEN exit - PUT LARGE TEXT AT (1,1): "THANK YOU FOR USING" - PUT LARGE TEXT AT (8,2): "EASON" - PUT LARGE TEXT AT (5,3): "TECHNOLOGY" - DELAY 2500 pos 1,6 - END OF PSEUDOCODE