Operator Checking Questions

Ever thought how useful it would be to have your machine ask the operator a question - maybe to ensure the part has been turned over, or which number is to be engraved or any number of other possibilities?

The Haas control has a function called Interactive User Input which incorporated into vers. 11.20 and released in 2002 provides the programmer with a new M code, M109 that allows a G-code program to place a short prompt on the screen, get a single character input from the user and store it in a macro variable. The first 15 characters from the comment following the M109 will be displayed as a prompt in the lower left corner of the screen. 

A macro variable in the range 500 through 599 must be specified by a P code. Note also that due to the look-ahead feature, it is necessary to include a loop in the program following the M109 to check for a non-zero response before continuing. The program can check for any character that can be entered from the keyboard by comparing with the decimal equivalent of the ASCII character.

Here are a few common characters:

  • A - 65 a - 97
  • B - 66 b - 98
  • C - 67 c - 99
  • N - 78 n - 110
  • Y - 89 y - 121
  • 0 - 48 + - 43
  • 1 - 49 - 45
  • 2 - 50 * 42
  • 3 - 51 / 47

The following sample program will ask the user a Yes/No question then wait for him to enter either a Y or an N. All other characters will be ignored.

N1 #501= 0. (CLEAR THE VARIABLE)
M109 P501 (Sleep 1 min?)
N5 IF [ #501 EQ 0. ] GOTO5 (WAIT FOR A KEY)
IF [ #501 EQ 89. ] GOTO10 (Y)
IF [ #501 EQ 78. ] GOTO20 (N)
GOTO1 (KEEP CHECKING)
N10 (A Y WAS ENTERED)
M95 (00:01)
GOTO30
N20 (AN N WAS ENTERED)
G04 P1. (DO NOTHING FOR 1 SECOND)
N30 (STOP)
M30

The following sample program will ask the user to select a number then wait for him to enter a 1, 2 or a 3. All other characters will be ignored.

O00234 (SAMPLE PROGRAM)
N1 #501= 0. (CLEAR THE VARIABLE)
M109 P501 (Pick 1, 2 or 3:)
N5 IF [ #501 EQ 0. ] GOTO5 (WAIT FOR A KEY)
IF [ #501 EQ 49. ] GOTO10 (1)
IF [ #501 EQ 50. ] GOTO20 (2)
IF [ #501 EQ 51. ] GOTO30 (3)
GOTO1 (KEEP CHECKING)
N10 (A 1 WAS ENTERED)
M95 (00:01)
GOTO30
N20 (A 2 WAS ENTERED)
G04 P5. (DO NOTHING FOR 5 SECONDS)
N30 (A 3 WAS ENTERED)
M30