Galil DMC-1700 Manual De Usuario
152 • Chapter 7 Application Programming DMC-1700/1800
Example - Command Error
#BEGIN
Begin main program
IN “ENTER SPEED”, SPEED
Prompt for speed
JG SPEED;BGX;
Begin motion
JP #BEGIN
Repeat
EN
End main program
#CMDERR Command
error
utility
JP#DONE,_ED<>2
Check if error on line 2
JP#DONE,_TC<>6
Check if out of range
MG “SPEED TOO HIGH” Send
message
MG “TRY AGAIN”
Send message
ZS1 Adjust
stack
JP #BEGIN
Return to main program
#DONE
End program if other error
ZS0 Zero
stack
EN End
program
The above program prompts the operator to enter a jog speed. If the operator enters a number out of range (greater
than 8 million), the #CMDERR routine will be executed prompting the operator to enter a new number.
than 8 million), the #CMDERR routine will be executed prompting the operator to enter a new number.
In multitasking applications, there is an alternate method for handling command errors from different threads.
Using the XQ command along with the special operands described below allows the controller to either skip or retry
invalid commands.
Using the XQ command along with the special operands described below allows the controller to either skip or retry
invalid commands.
OPERAND FUNCTION
_ED1
_ED1
Returns the number of the thread that generated an error
_ED2
Retry failed command (operand contains the location of the failed command)
_ED3
Skip failed command (operand contains the location of the command after the
failed command)
failed command)
The operands are used with the XQ command in the following format:
XQ _ED2 (or _ED3),_ED1,1
Where the “,1” at the end of the command line indicates a restart; therefore, the existing program stack will not be
removed when the above format executes.
removed when the above format executes.
The following example shows an error correction routine which uses the operands
.
Example - Command Error w/Multitasking
#A
Begin thread 0 (continuous loop)
JP#A
EN
EN
End
of
thread
0
#B
Begin
thread
1
N=-1
Create
new
variable
KP N
Set KP to value of N, an invalid value
TY
Issue
invalid
command
EN
End
of
thread
1