Skip to content

Latest commit

 

History

History
190 lines (130 loc) · 5.42 KB

README.md

File metadata and controls

190 lines (130 loc) · 5.42 KB

Fanuc Communication SDK for Python

UnderAutomation Fanuc communication SDK

Python Platform License

🤖 Effortlessly Communicate with Fanuc robots

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


🚀 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 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)

📂 3. FTP File and Variable Management

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}")

🔧 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 or download the ZIP.

git clone https://github.com/underautomation/Fanuc.py.git

2️⃣ Install Dependencies

Install required Python packages if any (see requirements.txt if available):

pip install pythonnet==3.0.3

3️⃣ Connect to Your Robot

from underautomation.fanuc.fanuc_robot import FanucRobot
from underautomation.fanuc.connection_parameters import ConnectionParameters

robot = 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

📜 License

⚠️ This SDK requires a commercial license.
🔗 Learn more: UnderAutomation Licensing

📬 Need Help?