UnderAutomation.Fanuc
1.5.0
dotnet add package UnderAutomation.Fanuc --version 1.5.0
NuGet\Install-Package UnderAutomation.Fanuc -Version 1.5.0
<PackageReference Include="UnderAutomation.Fanuc" Version="1.5.0" />
paket add UnderAutomation.Fanuc --version 1.5.0
#r "nuget: UnderAutomation.Fanuc, 1.5.0"
// Install UnderAutomation.Fanuc as a Cake Addin #addin nuget:?package=UnderAutomation.Fanuc&version=1.5.0 // Install UnderAutomation.Fanuc as a Cake Tool #tool nuget:?package=UnderAutomation.Fanuc&version=1.5.0
Fanuc Communication SDK
π€ Effortlessly Communicate with Fanuc robots
The Fanuc SDK enables seamless integration with Fanuc robots for automation, data exchange, and remote control. Ideal for industrial automation, research, and advanced robotics applications.
π More Information: https://underautomation.com/fanuc
π Also available for π¨ LabVIEW & π Python
ποΈ Watch to be notified of latest updates !
π TL;DR (Too Long; Didnβt Read)
- βοΈ PCDK Alternative: No need for Fanucβs PCDK or Robot Interface
- π Read/Write Variables: Access and modify system variables.
- π Register Control: Read/write registers for positions, numbers, and strings.
- π¬ Program Control: Run, abort, and reset programs.
- π Alarm Management: Reset alarms and view alarm history.
- β‘ I/O Control: Manage ports and I/O values (UI, UO, GI, GO, etc.).
- π State Monitoring: Get safety status, position, diagnostics, and more.
- π File Management: Easily manipulate files.
No additional installations or Fanuc options are required to use this SDK.
π₯ Download Example Applications
Explore the Fanuc SDK with fully functional example applications and precompiled binaries for various platforms. See Github releases
πΉ Windows Forms Application (Full Feature Showcase)
A Windows Forms application demonstrating all the features of the library.
π Download: π₯ UnderAutomation.Fanuc.Showcase.Forms.exe
<p align="center"> <img src="https://raw.githubusercontent.com/underautomation/Fanuc.NET/refs/heads/main/.github/assets/read-variables.gif" > <img src="https://raw.githubusercontent.com/underautomation/Fanuc.NET/refs/heads/main/.github/assets/move-robot.gif" > <img src="https://raw.githubusercontent.com/underautomation/Fanuc.NET/refs/heads/main/.github/assets/snpx.gif" > </p>
π Features
π₯οΈ 1. Remote Control via Telnet KCL
Telnet KCL (Keyboard Command Line) allows sending commands to control the robot remotelyβno additional options needed on the controller.
πΉ Reset alarms
robot.Telnet.Reset();
πΉ Start, pause, hold, abort programs
robot.Telnet.Run("MyProgram");
robot.Telnet.Pause("MyProgram");
robot.Telnet.Hold("MyProgram");
robot.Telnet.Continue("MyProgram");
robot.Telnet.Abort("MyProgram", force: true);
πΉ Set variables dynamically
robot.Telnet.SetVariable("my_variable", 42);
robot.Telnet.SetVariable("$RMT_MASTER", 1);
πΉ Control robot I/O ports
// Set an output port (example: DOUT port 2 = 0)
robot.Telnet.SetPort(KCLPorts.DOUT, 2, 0);
// Simulate an input port (example: DIN port 3 = 1)
robot.Telnet.Simulate(KCLPorts.DIN, 3, 1);
robot.Telnet.Unsimulate(KCLPorts.DIN, 3);
π 2. High-Speed Data Exchange via SNPX (RobotIF)
SNPX (also known as SRTP/RobotIF) enables fast, structured data communication with the robot.
It is used to read/write registers, monitor alarms, and check robot status.
πΉ Read & write position registers
// Read position register 1
Position register1 = robot.Snpx.PositionRegisters.Read(1);
// Set a new value for register 2
robot.Snpx.PositionRegisters.Write(2, new Position { X = 100, Y = 50, Z = 25 });
πΉ Read & write numeric registers
// Read register R[1]
double value = robot.Snpx.Registers.Read(1);
// Write a value to R[2]
robot.Snpx.Registers.Write(2, 123.45);
πΉ Get alarm history
var alarms = robot.Snpx.Alarms.GetActiveAlarms();
foreach (var alarm in alarms)
{
Console.WriteLine($"Alarm {alarm.Code}: {alarm.Message}");
}
πΉ Read and control robot signals (UI, UO, GI, GO)
// Read a User Input (UI) state
bool UI1 = robot.Snpx.UI.Read(1);
// Set a User Output (UO) signal
robot.Snpx.UO.Write(3, true);
π 3. File & Variable Management via FTP Memory Access
The SDK provides direct FTP access to the robot's memory for file transfer, variable reading, and configuration management.
πΉ Upload, download, and delete files
// Upload a TP program to the controller
robot.Ftp.DirectFileHandling.UploadFileToController(@"C:\Programs\MyPrg.tp", "md:/MyPrg.tp");
// Download a file from the robot
robot.Ftp.DirectFileHandling.DownloadFileFromController("md:/Backup.va", @"C:\Backup\Backup.va");
// Delete a file on the robot
robot.Ftp.DirectFileHandling.DeleteFile("md:/OldProgram.tp");
πΉ Read all declared variables
var allVariables = robot.Ftp.GetAllVariables();
foreach (var variable in allVariables)
{
Console.WriteLine($"{variable.Name} = {variable.Value}");
}
πΉ Read known system variables
// Read system variable $RMT_MASTER
int remoteMode = robot.Ftp.KnownVariableFiles.GetSystemFile().RmtMaster;
πΉ Check robot safety status
SafetyStatus safetyStatus = robot.Ftp.GetSafetyStatus();
Console.WriteLine($"Emergency Stop: {safetyStatus.ExternalEStop}");
Console.WriteLine($"Teach Pendant Enabled: {safetyStatus.TPEnable}");
πΉ Retrieve the robot's current position
CurrentPosition currentPosition = robot.Ftp.GetCurrentPosition();
Console.WriteLine($"Cartesian Position: X={currentPosition.Cartesian.X}, Y={currentPosition.Cartesian.Y}, Z={currentPosition.Cartesian.Z}");
π§ Configuration
β Enable Telnet KCL
- Go to
SETUP > Host Comm
- Select
TELNET
and press[DETAIL]
- Set a password and restart the robot
β Enable FTP Memory Access
- Go to
SETUP > Host Comm > FTP
- Set a username & password
- Perform a cold start
β Enable SNPX
If Your Robot Uses "FANUC America Corp." Parameters (R650 FRA): You need to enable option R553 ("HMI Device SNPX") in the robot's software configuration.
If Your Robot Uses "FANUC Ltd." Parameters (R651 FRL): No additional option is requiredβSNPX is included by default.
π Installation
1οΈβ£ Get the SDK
Choose the installation method that works best for you:
Method | NuGet (Recommended) | Direct Download |
---|---|---|
How to Install | Install via NuGet. See on Nuget | Download and reference the DLL manually |
dotnet add package UnderAutomation.Fanuc |
π₯ Download ZIP |
2οΈβ£ Reference the SDK in Your Code
using UnderAutomation.Fanuc;
3οΈβ£ Connect to Your Robot
var robot = new FanucRobot();
robot.Connect(new ConnectParameters("192.168.0.1"));
π Compatibility
β
Supported Robots: R-J3iB, R-30iA, R-30iB
β
Operating Systems: Windows, Linux, macOS
β
.NET Versions: .NET Framework (β₯3.5), .NET Standard, .NET Core, .NET 5/6/8/9
π’ Contributing
We welcome contributions! Feel free to:
- Report issues via GitHub Issues
- Submit pull requests with improvements
- Share feedback & feature requests
π License
β οΈ This SDK requires a commercial license.
π Learn more: UnderAutomation Licensing
π¬ Need Help?
If you have any questions or need support:
- π Check the Docs: Documentation
- π© Contact Us: Support
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 is compatible. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net35 is compatible. net40 is compatible. net403 was computed. net45 is compatible. net451 is compatible. net452 is compatible. net46 is compatible. net461 is compatible. net462 is compatible. net463 was computed. net47 is compatible. net471 is compatible. net472 is compatible. net48 is compatible. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETCoreApp 3.0
- System.Console (>= 4.3.0)
- System.IO (>= 4.3.0)
- System.Net.NameResolution (>= 4.3.0)
- System.Net.Sockets (>= 4.3.0)
- System.Runtime (>= 4.3.0)
- System.Threading.Tasks (>= 4.3.0)
-
.NETFramework 3.5
- No dependencies.
-
.NETFramework 4.0
- No dependencies.
-
.NETFramework 4.5
- No dependencies.
-
.NETFramework 4.5.1
- No dependencies.
-
.NETFramework 4.5.2
- No dependencies.
-
.NETFramework 4.6
- No dependencies.
-
.NETFramework 4.6.1
- No dependencies.
-
.NETFramework 4.6.2
- No dependencies.
-
.NETFramework 4.7
- No dependencies.
-
.NETFramework 4.7.1
- No dependencies.
-
.NETFramework 4.7.2
- No dependencies.
-
.NETFramework 4.8
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
-
.NETStandard 2.1
- No dependencies.
-
net5.0
- System.Console (>= 4.3.0)
- System.IO (>= 4.3.0)
- System.Net.NameResolution (>= 4.3.0)
- System.Net.Sockets (>= 4.3.0)
- System.Runtime (>= 4.3.0)
- System.Threading.Tasks (>= 4.3.0)
-
net6.0
- System.Console (>= 4.3.0)
- System.IO (>= 4.3.0)
- System.Net.NameResolution (>= 4.3.0)
- System.Net.Sockets (>= 4.3.0)
- System.Runtime (>= 4.3.0)
- System.Threading.Tasks (>= 4.3.0)
-
net8.0
- System.Console (>= 4.3.0)
- System.IO (>= 4.3.0)
- System.Net.NameResolution (>= 4.3.0)
- System.Net.Sockets (>= 4.3.0)
- System.Runtime (>= 4.3.0)
- System.Threading.Tasks (>= 4.3.0)
-
net9.0
- System.Console (>= 4.3.0)
- System.IO (>= 4.3.0)
- System.Net.NameResolution (>= 4.3.0)
- System.Net.Sockets (>= 4.3.0)
- System.Runtime (>= 4.3.0)
- System.Threading.Tasks (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.