G-code
Supported M-codes

M54, M55, M56, M57 (General purpose IO)

20min


Digital outputs

Set output - M54 P...

The P word must be between 1 and 10 where 1 is AUX1 and 10 is AUX10.

M54 P1 (set AUX1 out to 1)

If the connected controller only has one AUX output, 2 is mapped to FLOOD and 3 to MIST.

M54 P2 (set AUX2 out to 1 or FLOOD to 1 if the controller has 1 AUX)


Clear output - M55 P...

Clear output. The P word must be between 1 and 10 where 1 is AUX1 and 10 is AUX10.

M55 P1 (set AUX1 out to 0)

If the connected controller only has one AUX output, 2 is mapped to FLOAD and 3 to MIST.

M55 P2 (set AUX2 out to 0 or FLOAD to 0 if the controller has 1 AUX)


Read outputs - M57 P

Read output x, store the result in variable #5399

M57 P...

Output

P value

AUX1-AUXn

1 to n

Machine On

51

Drive Enable

52

Coolant1 (Flood)

61

Coolant2 (Mist)

62

Tool

63

Tool direction

64



Digital inputs

Read input - M56 P...

P value

Input

51 - 56

Home Inputs X-C

61

Probe Input

62

Sync Input

63

HWA Input

64

HWB Input

65

ESTOP1

66

ESTOP2

67

EXTERR

68

PAUSE

The result is stored in variable #5399

Example: erad AUX input 3:

M56 P3 (Read AUX in 3) If [#5399 == 1] Msg "AUX3=ON" Else Msg "AUX3=OFF" endif

Example: read home-input of X axis:

M56 P51 If [#5399 == 1] Msg "HOME X=ON" Else Msg "HOME X=OFF" endif


Read input + wait - M56 P ... L... Q...

Read digital input P and specify wait mode, the result is stored in variable #5399

  • P...: the input number
  • L0: do not wait
  • L1: Wait for High
  • L2: Wait for Low
  • Q...: timeout (seconds)
M56 P3 L2 Q30 (Read AUX in 3) If [#5399 == -1] Errmsg "Timeout while waiting for AUX3 becoming low" Else Msg "AUX3 is off" Endif

Note that we use wait (L2) here, in the event of a timeout, the value of #5399 is -1.

In order to make this code simulation and rendering proof we need to extend it like this:

If [[#5380 == 0] and [#5397 == 0]] ;;Check only if running job M56 P3 L2 Q30 (Read AUX in 3) If [#5399 == -1] Errmsg “Timeout while waiting for AUX3 becoming low” Else Msg “AUX3 is off” Endif Endif


Analogue inputs

Read analog input - M56 E

Read analog input E, result stored in #5399

M56 E3 Msg "analog value is " #5399


PWM

Set PWM - M54 E... Q...

Set PWM output E to permille value Q (0 <= y <= 1000)

M54 E2 Q500 (Set PWM2 to 50% PWM)


Read PWM output - M57 E...

Read PWM output, result stored in #5399

M57 E3 If [#5399 == 0] Msg "PWM IS OFF" Else Msg "PWM IS ON, VALUE="#5399 endif


Optional IOCARD

If a relay board is used such as RLY8, the IO number P or E is specified like in the following examples:

  • value of 103 means card 1 port 3
  • value of 208 means card 2 port 8