The Fanuc SDK for Python enables seamless integration with Fanuc robots for automation, data exchange, and remote control.
It supports communication with real robots and ROBOGUIDE.
π More Information: https://underautomation.com/fanuc
π Also available in π¦ .NET & π¨ LabVIEW
β Star this repo if it's useful to you!
ποΈ Watch for updates
- βοΈ 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.
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)
SNPX provides fast, structured data exchange with the robot.
# Read/write position registers
position = robot.snpx.position_registers.read(1)
robot.snpx.position_registers.write(2, {"x": 100, "y": 50, "z": 25})
# Read/write numeric registers
value = robot.snpx.registers.read(1)
robot.snpx.registers.write(2, 123.45)
# Digital signals
ui_1 = robot.snpx.ui.read(1)
robot.snpx.uo.write(3, True)
# Alarms & status
robot.snpx.clear_alarms()
position = robot.snpx.current_position.read_world_position()
user_frame = robot.snpx.current_position.read_user_frame_position(1)
Transfer files and manage internal robot data via FTP.
# File transfer
robot.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")
# Variables
variables = robot.ftp.get_all_variables()
for var in variables:
print(f"{var.name} = {var.value}")
# System variables
remote_mode = robot.ftp.known_variable_files.get_system_file().rmt_master
# Safety status
safety = robot.ftp.get_safety_status()
print(f"E-Stop: {safety.external_estop}, TP Enabled: {safety.tp_enable}")
# Position
position = robot.ftp.get_current_position()
print(f"X={position.cartesian.x}, Y={position.cartesian.y}, Z={position.cartesian.z}")
- Go to
SETUP > Host Comm
- Select
TELNET
β[DETAIL]
- Set a password and reboot
- Go to
SETUP > Host Comm > FTP
- Set username/password
- Perform a cold start
- For FANUC America (R650 FRA): Enable option R553 βHMI Device SNPXβ
- For FANUC Ltd. (R651 FRL): No additional options required
This SDK is not on PyPI (yet). Clone this repository or download the ZIP.
git clone https://github.com/underautomation/Fanuc.py.git
Install required Python packages if any (see requirements.txt
if available):
pip install pythonnet==3.0.3
from underautomation.fanuc.fanuc_robot import FanucRobot
from underautomation.fanuc.connection_parameters import ConnectionParameters
robot = FanucRobot()
robot.connect(ConnectionParameters("192.168.0.1"))
β
Robot Controllers: R-J3iB, R-30iA, R-30iB
β
OS: Windows, Linux, macOS
β
Python: 3.5+
We welcome your feedback and contributions!
- Report issues via GitHub Issues
- Submit pull requests with enhancements
- Suggest features and improvements
π Learn more: UnderAutomation Licensing
- π Documentation: https://underautomation.com/fanuc/documentation
- π© Contact Us: https://underautomation.com/contact