Links

UFACTORY Gcode

Firmware version: v2.1.102+
TCP port: 504

1. G command

  • G0 X Y Z A B C // The speed is 240mm/s by default
  • G1 X Y Z A B C F // XYZ(mm), ABC(RPY,degree), F(speed,mm/min)
  • G4 P // sleep command, Unit: s
  • G20 // set the unit as inches
  • G21 // set the unit as mm
  • G90 //absolute coordinate
  • G91 //relative coordinate
//Code Example
1
G0 X300 Y100 Z200 A180 B0 C0 ;move to [300,100,200,180,0,0]
2
G4 P5 ;sleep 5s
3
G1 X300 Y100 Z350 A180 B0 C0 F30000 ;move to [300,100,200,180,0,0], speed=500mm/s
4
G21 ;set the unit as mm
5
G0 X300 ;move to X=300mm
6
G20 ;set the unit as inches
7
G0 X10 ;move to X=10inches(254mm)
8
G21 ;set the unit as mm
9
G90 ;use absolute coordinate
10
G0 X300 ;move to X=300mm
11
G91 ;use relative coordinate
12
G0 X10 ;move forward 10mm
13
G90 ;use absolute coordinate

2. M command

  • M62 P //set controller digital output to High level, wait=True
  • M63 P //set controller digital output to Low level, wait=True
  • M64 P //set controller digital output to High level, wait=False(Execute immediately)
  • M65 P //set controller digital output to Low level, wait=False(Execute immediately)
  • E67 E Q //set controller analog output, wait=True
  • E68 E Q //set controller analog output, wait=False(Execute immediately)
P: IONUM(0-15, 0-7: CO0-CO7, 8-15: DO0-DO7)
E: IONUM(0-1), Q: value(0-10)
//Code Example
1
M62 P1 ;set CO1 to high level, wait=True
2
M64 P15 ;set DO7 to high level, wait=False
3
M67 E0 Q10 ;set AO0 to 10V, wait=True
4
M68 E1 Q2 ;set AO1 to 2V, wait=False

3. Python Example

Python Example
1
import socket
2
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
3
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
4
sock.setblocking(True)
5
sock.connect(('192.168.1.67', 504))
6
7
def send_and_recv(data):
8
for line in data.split('\n'):
9
line = line.strip()
10
if not line:
11
continue
12
sock.send(line.encode('utf-8', 'replace') + b'\n')
13
ret = sock.recv(5)
14
code, mode_state, err = ret[0:3]
15
state, mode = mode_state & 0x0F, mode_state >> 4
16
cmdnum = ret[3] << 8 | ret[4]
17
if code != 0 or state >= 4 or err > 0:
18
print('code: {}, mode: {}, state: {}, err: {}, cmdnum: {}, cmd: {}'.format(code, mode, state, err, cmdnum, line))
19
20
# move x to x=500mm, speed= 10000 mm/min
21
send_and_recv('G1 X500 F10000')
Note:
1. Response:
  • byte0: return value. 0 is success
  • byte1: mode and state
  • byte2: error code
  • byte3 & byte4: buffer
2. Recommend to send 1 non-empty data at a time(with line breaks)
sock.send(b'G0 X300\n')
3. Need to receive the response, otherwise the buffer will be full.
sock.recv(5)
Last modified 15d ago