Fanuc SDK documentation
Get started with Python
Fanuc Python SDK provides a simple and efficient way to control Fanuc robots using Python. No additional installations are required on the robot controller.
๐ TL;DR
- โ๏ธ No PCDK needed: Connect without Fanucโs Robot Interface
- ๐ Read/write system variables
- ๐ Register access for numbers, strings, and positions
- ๐ฌ Program control (run, pause, abort, etc.)
- ๐ Alarm viewing and reset
- โก I/O control (UI, UO, GI, GO, etc.)
- ๐ State & diagnostics monitoring
- ๐ FTP file & variable access
No additional robot options or installations are required.
๐ Features
๐ฅ๏ธ 1. Telnet KCL Remote Control
Remotely send commands to the robot controller via Telnet KCL.
robot.telnet.reset()robot.telnet.run("MyProgram")robot.telnet.pause("MyProgram")robot.telnet.hold("MyProgram")robot.telnet.continue_("MyProgram")robot.telnet.abort("MyProgram", force=True)robot.telnet.set_variable("my_variable", 42)robot.telnet.set_variable("$RMT_MASTER", 1)robot.telnet.set_port("DOUT", 2, 0)robot.telnet.simulate("DIN", 3, 1)robot.telnet.unsimulate("DIN", 3)
๐ 2. High-Speed Data via SNPX (RobotIF)
SNPX provides fast, structured data exchange with the robot.
# Read/write position registersposition = robot.snpx.position_registers.read(1)robot.snpx.position_registers.write(2, {"x": 100, "y": 50, "z": 25})# Read/write numeric registersvalue = robot.snpx.registers.read(1)robot.snpx.registers.write(2, 123.45)# Digital signalsui_1 = robot.snpx.ui.read(1)robot.snpx.uo.write(3, True)# Alarms & statusrobot.snpx.clear_alarms()position = robot.snpx.current_position.read_world_position()user_frame = robot.snpx.current_position.read_user_frame_position(1)
๐ 3. FTP File and Variable Management
Transfer files and manage internal robot data via FTP.
# File transferrobot.ftp.direct_file_handling.upload_file_to_controller("C:/Programs/MyPrg.tp", "md:/MyPrg.tp")robot.ftp.direct_file_handling.download_file_from_controller("md:/Backup.va", "C:/Backup/Backup.va")robot.ftp.direct_file_handling.delete_file("md:/OldProgram.tp")# Variablesvariables = robot.ftp.get_all_variables()for var in variables:print(f"{var.name} = {var.value}")# System variablesremote_mode = robot.ftp.known_variable_files.get_system_file().rmt_master# Safety statussafety = robot.ftp.get_safety_status()print(f"E-Stop: {safety.external_estop}, TP Enabled: {safety.tp_enable}")# Positionposition = robot.ftp.get_current_position()print(f"X={position.cartesian.x}, Y={position.cartesian.y}, Z={position.cartesian.z}")
๐ง Robot Configuration
โ Enable Telnet KCL
- Go to
SETUP > Host Comm - Select
TELNETโ[DETAIL] - Set a password and reboot
โ Enable FTP
- Go to
SETUP > Host Comm > FTP - Set username/password
- Perform a cold start
โ Enable SNPX
- For FANUC America (R650 FRA): Enable option R553 โHMI Device SNPXโ
- For FANUC Ltd. (R651 FRL): No additional options required
๐ Installation
1๏ธโฃ Clone or Download
This SDK is not on PyPI (yet). Clone this repository and install dependencies :
git clone https://github.com/underautomation/Fanuc.py.gitcd Fanuc.pypip install -e .
2๏ธโฃ Connect to Your Robot
from underautomation.fanuc.fanuc_robot import FanucRobotfrom underautomation.fanuc.connection_parameters import ConnectionParametersrobot = FanucRobot()robot.connect(ConnectionParameters("192.168.0.1"))
๐ Compatibility
โ
Robot Controllers: R-J3iB, R-30iA, R-30iB
โ
OS: Windows, Linux, macOS
โ
Python: 3.5+
๐ข Contributing
We welcome your feedback and contributions!
- Report issues via GitHub Issues
- Submit pull requests with enhancements
- Suggest features and improvements