Galil DMC-1700 Manual De Usuario

Descargar
Página de 253
DMC-1700/1800 
Chapter 7 Application Programming  •  149 
Subroutines 
A subroutine is a group of instructions beginning with a label and ending with an end command (EN).  Subroutines 
are called from the main program with the jump subroutine instruction JS, followed by a label or line number, and 
conditional statement.  Up to 8 subroutines can be nested.  After the subroutine is executed, the program sequencer 
returns to the program location where the subroutine was called unless the subroutine stack is manipulated as 
described in the following section. 
Example: 
An example of a subroutine to draw a square 500 counts per side is given below.  The square is drawn at vector 
position 1000,1000. 
#M 
Begin Main Program 
CB1 
Clear Output Bit 1 (pick up pen) 
VP 1000,1000;LE;BGS 
Define vector position; move pen 
AMS 
Wait for after motion trippoint 
SB1 
Set Output Bit 1 (put down pen) 
JS #Square;CB1 
Jump to square subroutine 
EN 
End Main Program 
#Square Square 
subroutine 
V1=500;JS #L 
Define length of side 
V1=-V1;JS #L 
Switch direction 
EN End 
subroutine 
#L;PR V1,V1;BGX 
Define X,Y; Begin X 
AMX;BGY;AMY After 
motion on X, Begin Y 
EN End 
subroutine 
Stack Manipulation 
It is possible to manipulate the subroutine stack by using the ZS command.  Every time a JS instruction, interrupt or 
automatic routine (such as #POSERR or #LIMSWI) is executed, the subroutine stack is incremented by 1.  Normally 
the stack is restored with an EN instruction.  Occasionally it is desirable not to return back to the program line where 
the subroutine or interrupt was called.  The ZS1 command clears 1 level of the stack.  This allows the program 
sequencer to continue to the next line.  The ZS0 command resets the stack to its initial value.  For example, if a limit 
occurs and the #LIMSWI routine is executed, it is often desirable to restart the program sequence instead of 
returning to the location where the limit occurred.  To do this, give a ZS command at the end of the #LIMSWI 
routine. 
Auto-Start Routine 
The DMC-1700/1800 has a special label for automatic program execution.  A program which has been saved into 
the controller’s non-volatile memory can be automatically executed upon power up or reset by beginning the 
program with the label 
#AUTO
.  The program must be saved into non-volatile memory using the command, BP.  
Automatic Subroutines for Monitoring Conditions 
 
Often it is desirable to monitor certain conditions continuously without tying up the host or DMC-1700/1800 
program sequences.  The controller can monitor several important conditions in the background.  These conditions 
include checking for the occurrence of a limit switch, a defined input, position error, or a command error.  
Automatic monitoring is enabled by inserting a special, predefined label in the applications program.  The pre-
defined labels are: