UnderAutomation
¿Una pregunta?

[email protected]

Contactos
UnderAutomation
⌘Q
Fanuc

Fanuc SDKControle los robots Fanuc desde su propio software

Cree rápidamente aplicaciones en .NET, Python o LabVIEW que se comuniquen con su robot industrial Fanuc. Una biblioteca de software lista para usar: su PC habla con el robot por el cable de red.

Probar gratisVer precios

Desde 1100 € / $1300, pago único

Nada que instalar en el robot
Prueba gratuita de 30 días
Licencia perpetua, sin suscripción
.NET / C#
Python
LabVIEW
Matlab
Fanuc robot
Fanuc SDK
1// dotnet add package UnderAutomation.Fanuc
2using UnderAutomation.Fanuc;
3
4var robot = new FanucRobot();
5robot.Connect("192.168.0.1");
6
7var position = robot.Cgtp.ReadCartesianPosition();
8robot.Cgtp.WriteVariable("$RMT_MASTER", 1);
9robot.Cgtp.RunProgram("MyProgram");
En resumen

Lo que obtiene

Plug & Play

Conecta tu robot en tan solo unos minutos. No es necesario instalar un administrador de licencias ni una llave USB. Sólo haga referencia a la biblioteca.

No hay complementos para instalar en el robot

Uso de protocolos de red proporcionados como estándar por el controlador de robots.

KarelPCDKROS

Prueba de 30 días

Pruébelo gratis durante 30 días, sin compromiso, no se requiere registro

Pagar una vez, use para siempre

Licencia perpetua, no se requiere suscripción, independientemente del número de robots, desarrolladores o software redistribuido

Clientes

Historias de éxito de clientes

Descubra cómo nuestros clientes integran las soluciones UnderAutomation en sus proyectos industriales.

GE
Aerospace / Healthcare

GE: Aerospace & Healthcare Automation

GE Accelerates Industrial Automation with UnderAutomation SDKs for Universal Robots and FANUC.

Lockheed Martin
Aerospace / Defense

Lockheed Martin: Flexible Aerospace Automation

Refining precision manufacturing and handling with collaborative robots.

Nissan
Automotive

Nissan: Driving Efficiency at Scale

How Nissan Smyrna Leverages Fanuc Connectivity for intelligent vehicle assembly.

realvirtual.io
Virtual Commissioning / Digital Twins

realvirtual.io: Fanuc Integration for Virtual Commissioning

How realvirtual.io embedded the UnderAutomation Fanuc SDK to deliver first-class robot integration inside their Unity-based digital twin platform.

Funciones

Características del SDK Fanuc: CGTP, Telnet, SNPX, FTP y cinemática

Cada función tiene su ejemplo de código. Haga clic en él para ver el código completo.

Comandos remotos

Ejecute, pause y aborte programas, restablezca alarmas, escriba variables y E/S desde su PC. Use CGTP, el servidor web de los controladores recientes (HTTP / HTTPS), o Telnet KCL en los más antiguos. No se necesita ninguna opción en el controlador.

robot.Connect(parameters);
// Read a variable
CgtpVariableValue var = robot.Cgtp.ReadVariable("$RMT_MASTER");
int rmtMaster = var.IntegerValue;
// Write a variable
robot.Cgtp.WriteVariable("$RMT_MASTER", 1);
// Read a numeric register with comment
NumericRegisterWithComment reg = robot.Cgtp.ReadNumericRegisterWithComment(1);
// Read I/O
int di1 = robot.Cgtp.ReadIo(CgtpIoPortType.DI, 1);
// Write I/O
robot.Cgtp.WriteIo(CgtpIoPortType.DO, 1, 1);
// Read current Cartesian position
CartesianPosition pos = robot.Cgtp.ReadCartesianPosition();
// Run a program
robot.Cgtp.RunProgram("MY_PROGRAM");
}
}
Click to see the full code

Lectura y escritura de datos de alta velocidad

SNPX (también conocido como SRTP/Robotif) permite la comunicación de datos rápida y estructurada con el robot. Se utiliza para leer/escribir los registros, monitorear las alarmas y verificar el estado del robot.

// Connect to the robot
robot.Connect(parameters);
// Read a register
Position posReg1 = robot.Snpx.PositionRegisters.Read(1);
float numReg5 = robot.Snpx.NumericRegisters.Read(5);
string strReg10 = robot.Snpx.StringRegisters.Read(10);
// Write a register
posReg1.CartesianPosition.X = 100;
robot.Snpx.PositionRegisters.Write(1, posReg1);
robot.Snpx.NumericRegisters.Write(2, 123.45f);
robot.Snpx.StringRegisters.Write(3, "Hello, world!");
// Read a variable
int rmtMaster = robot.Snpx.IntegerSystemVariables.Read("$RMT_MASTER");
string lastAlm = robot.Snpx.StringSystemVariables.Read("$ALM_IF.$LAST_ALM");
Position cellFloor = robot.Snpx.PositionSystemVariables.Read("$CELL_FLOOR");
// Write a system variable
robot.Snpx.IntegerSystemVariables.Write("$RMT_MASTER", 1);
robot.Snpx.StringSystemVariables.Write("$ALM_IF.$LAST_ALM", "No alarms");
robot.Snpx.PositionSystemVariables.Write("$CELL_FLOOR", cellFloor);
// Write a Karel program variable
robot.Snpx.IntegerSystemVariables.Write("$[KarelProgram]KarelVariable", 1);
// Read and Write I/O (SDI,SDO,RDI,RDO,UI,UO,SI,SO,WI,WO,WSI,PMC_K,PMC_R)
robot.Snpx.RDO.Write(1, true);
ushort ai5 = robot.Snpx.AI.Read(5);
// Read and Write analogs (AI,AO,GI,GO,PMC_D)
robot.Snpx.AO.Write(2, 5);
ushort ao3 = robot.Snpx.AO.Read(3);
// Clear alarms
robot.Snpx.ClearAlarms();
}
Click to see the full code

Archivo y decodificación

Acceso directo FTP a la memoria del robot para la transferencia de archivos, las variables de lectura y la gestión del estado del robot, todo en decodificado y listo para ser utilizado en objetos estructurados.

// Connect to the robot
robot.Connect(parameters);
IOState ioState = robot.Ftp.GetIOState();
// Read a variable
var variableFiles = robot.Ftp.GetAllVariables();
foreach (var variableFile in variableFiles)
foreach (var variable in variableFile.Variables)
Console.WriteLine($"{variable.Name} = {variable.Value}");
// Read system variable $RMT_MASTER
int remoteMode = robot.Ftp.KnownVariableFiles.GetSystemFile().RmtMaster;
// Read safety status
SafetyStatus safetyStatus = robot.Ftp.GetSafetyStatus();
Console.WriteLine($"Emergency Stop: {safetyStatus.ExternalEStop}");
Console.WriteLine($"Teach Pendant Enabled: {safetyStatus.TPEnable}");
// Get current position for each arm (Joints, World position of each tool, user frame positions)
CurrentPosition currentPosition = robot.Ftp.GetCurrentPosition();
// 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");
}
Click to see the full code

Cinemática inversa

Cálculo algebraico de la cinemática directa e inversa de cualquier robot o cobot Fanuc a partir de sus parámetros DH.

FanucRobot robot = new FanucRobot();
robot.Connect("192.168.0.1");
// Get DH parameters
// Example: CRX-10iA/L
DhParameters dh = new DhParameters(-540, 150, -160, 0, 710, 0);
// From a known arm model
dh = DhParameters.FromArmKinematicModel(ArmKinematicModels.CRX10iA);
// From OPW parameters: M10iA/7L
dh = DhParameters.FromOpwParameters(0.15, -0.20, 0.60, 0.86, 0.10);
// From an online robot (SYSMOTN file)
dh = DhParameters.FromSymotnFile(robot.Ftp.KnownVariableFiles.GetSymotnFile())[0];
// Forward kinematics
CartesianPosition pose = KinematicsUtils.ForwardKinematics(position, dh);
// Inverse kinematics with multiple solutions
JointsPosition[] positions = KinematicsUtils.InverseKinematics(pose, dh);
}
}
Click to see the full code

Motion Interfaces

Implementación de los protocolos Fanuc RMI (R912) y Stream Motion (J519) que permite enviar de forma sencilla comandos de movimiento al robot, así como leer y escribir sus entradas, salidas y registros.

parameters.Rmi.Enable = true;
robot.Connect(parameters);
// Initialize the RMI_MOVE program on the controller.
// TP must be disabled and the controller must be in AUTO mode.
robot.Rmi.Initialize();
// Linear motion at 100 mm/s to a Cartesian target (tool 1, frame 0)
var instr = new LinearMotionTpInstruction
{
SpeedType = RmiLinearSpeedType.MmSec,
Speed = 100,
TermType = RmiTerminationType.Fine,
Target = new CartesianPositionWithUserFrame(500, 200, 300, 0, 90, 0, tool: 1, frame: 0)
};
RmiInstructionResponse r = robot.Rmi.SendTpInstruction(instr);
// Wait for the controller to confirm the motion completed
r.WaitForCompletion();
if (r.Status == RmiInstructionStatus.Error)
System.Console.WriteLine("Error: " + r.ErrorText);
// Abort when done - always end the session with Abort() or Disconnect()
robot.Rmi.Abort();
robot.Disconnect();
}
}
Click to see the full code

Herramientas fuera de línea

Las características sin la necesidad de robot le permiten manejar formatos de archivo estándar (archivo variable, lista de errores, estado de robot, etc.).

static void Main()
{
// Parse a variable file and extract a hierarchical list of variables
GenericVariableFile vaFile = FanucFileReaders.VariableReader.ReadFile("C:/path/to/variable.va", Languages.English);
foreach (var variable in vaFile.Variables)
Console.WriteLine($"{variable.Name} = {variable.Value} [{variable.Type}]");
// Edit and regenerate the variable file
vaFile.GenerateVa("C:/path/to/variable_modified.va\"");
// Parse several types of files
FanucFileReaders.ErrorListReader.ReadFile("C:/path/to/errall.ls", Languages.English);
FanucFileReaders.IOStateReader.ReadFile("C:/path/to/iostate.dg", Languages.English);
FanucFileReaders.SafetyStatusReader.ReadFile("C:/path/to/safety.dg", Languages.English);
FanucFileReaders.CurrentPositionReader.ReadFile("C:/path/to/curpos.dg", Languages.English);
}
Click to see the full code
Demo

El SDK en acción

Vídeo y capturas de la aplicación de demostración entregada con el SDK.

Ejemplo de aplicación de Windows

Sin escribir código: pruebe el SDK en su robot con la aplicación de demostración.

Descargar (139 MB)Al descargar, acepta las condiciones generales de uso: Ver condiciones generales

Ejemplos en Github

Las fuentes de ejemplos de uso de este SDK están disponibles en GitHub

Ejemplo de Python

Ejemplo de operación de este SDK con Python para recuperar la posición cartesiana de un robot.

Ejemplo de labview

Ejemplo de VI que permite probar la mayoría de las funciones de este SDK.

Pruébelo en su navegador

Dos aplicaciones web creadas con el SDK de Fanuc. No hay nada que instalar para probarlas.

fanuc-kinematics.underautomation.com
Simulador de cinemática
LIVE
Probar en línea

Simulador de cinemática

Mueva los ejes o la herramienta de un Fanuc CRX en 3D. La cinemática directa e inversa se ejecuta en su navegador, con el mismo motor que el SDK.

WebAssembly3DIK / FK
Probar en líneaCódigo fuente
fanuc-rmi-demo.underautomation.com
Creador de secuencias RMI
LIVE
Probar en línea

Creador de secuencias RMI

Cree una secuencia de robot con bloques, ejecútela en un robot simulado o real y obtenga el código C# o Python de su secuencia.

RMIC#Python
Instalación

Instálelo con un comando

Elija su lenguaje. La prueba de 30 días empieza con el primer uso, sin registro.

.NET

Paquete NuGet para C# y VB.NET, de .NET Framework al último .NET.

dotnet add package UnderAutomation.Fanuc
Ver en NuGetVer en GitHubAbrir la guía

Python

Paquete Python en PyPI, para Windows, Linux y macOS.

pip install UnderAutomation.Fanuc

LabVIEW

Biblioteca LabVIEW (.lvlib) y su proyecto de ejemplo, en GitHub.

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

Agentes IA

Skill para agentes de código IA (Claude Code, Cursor, Copilot...): su asistente conoce la API del SDK.

npx skills add underautomation/skills --skill underautomation-fanuc-csharp
Documentación

Explorar la documentación

La documentación le permite comenzar a desarrollar rápidamente con la biblioteca. La misma funcionalidad está disponible en todos los idiomas compatibles.

Explorar la documentación

La documentación le permite comenzar a desarrollar rápidamente con la biblioteca. La misma funcionalidad está disponible en todos los idiomas compatibles.

Introducción a .NET

Codifique su aplicación en C# o VB con esta librería 100% gestionada, sin dependencias y disponible en NuGet.org en la versión y arquitectura de su elección (x86, x64, ARM, Linux, Windows, MacOS, .NET Framework, .NET Core, UWP, ...)

Empezar con Python

Desarrolle rápidamente un programa en Python que se comunique con su robot utilizando esta biblioteca. Está disponible en PyPI.

Introducción a LabVIEW

Equipa tus VIs de LabVIEW con comunicación con tu robot.

Introducción a Matlab

Permita que sus scripts de Matlab manejen su robot.

Guías y artículos prácticos

El SDK cubre las principales funcionalidades de los robots Fanuc a través de varios protocolos Ethernet nativos. Según las opciones instaladas en su controlador y su generación, algunos protocolos pueden estar disponibles o no. Cada artículo a continuación explica cómo realizar una tarea específica y compara los diferentes enfoques.

CGTP overview

CGTP is an HTTP-based protocol providing the richest feature set: program management, variables, registers, I/O, kinematics, batch operations, and file access.

SNPX overview

SNPX (also known as RobotIF or SRTP) is a high-speed protocol for reading and writing registers, variables, I/O signals, alarms, and positions in less than 2 ms.

Telnet overview

Telnet KCL (Keyboard Command Line) sends commands to a Fanuc robot: run programs, reset alarms, read and write variables, control I/O ports.

FTP overview

FTP provides access to internal controller files including variables, programs, diagnostics, safety status, and current position.

RMI overview

RMI (Remote Motion Interface) is a TCP-based protocol for sending motion commands, managing frames, and controlling the robot remotely.

Stream Motion overview

Stream Motion (J519 option) gives the position of the robot at every communication cycle (2 to 8 ms). Requirements, TP program, protocol versions and quick start.

Motion planner overview

Create smooth robot trajectories offline, with velocity, acceleration and jerk limits, using FANUC motion instructions (J, L, C, FINE, CNT, CR).

Forward & Inverse Kinematics

Perform forward and inverse kinematics calculations offline for FANUC industrial robots and CRX cobots using DH parameters.

Offline file parsing

Parse and decode Fanuc variable files (.va), error lists (.ls), I/O state, safety status, and current position files without a robot connection.

Read & write registers

Compare all methods to read and write numeric, position, and string registers on a Fanuc robot: SNPX, FTP, CGTP, and Telnet.

Get current position

Retrieve the current robot position (joint and Cartesian) using SNPX, FTP, CGTP, or Telnet. Compare approaches and choose the best for your use case.

Control inputs & outputs

Set, read, simulate, and unsimulate I/O ports on a Fanuc robot using SNPX, CGTP, or Telnet. Compare port types and methods.

Run a program remotely

Start, pause, abort, and monitor Fanuc programs remotely using Telnet, CGTP, SNPX system variables, or RMI.

Reset alarms remotely

Clear and reset alarms on a Fanuc robot using SNPX, Telnet, or CGTP. Read active alarms and alarm history.

Read & write system variables

Access and modify Fanuc system variables ($RMT_MASTER, $MCR.$GENOVERRIDE, etc.) using Telnet, SNPX, CGTP, or FTP.

Monitor task execution

Supervise running programs, check task states, line numbers, and calling programs using SNPX, FTP, or Telnet.

Move robot remotely

Move a Fanuc robot from an external application using RMI motion commands, Stream Motion real-time streaming, or DPM with SNPX.

Upload, download & backup files

Transfer TP programs, variable files, and backups between your PC and a Fanuc controller using FTP or CGTP.

Read & write I/O comments

Read and write comments (descriptions) for registers and I/O ports using SNPX or CGTP.

Access Karel program variables

Read and write Karel program variables using SNPX ($[Program]Variable syntax), CGTP, or FTP variable files.

Optimize with batch operations

Maximize read/write performance using SNPX batch assignments and CGTP batch variables for high-frequency data exchange.

Move robot with mouse

Control a FANUC robot in real time using Dynamic Path Modification (DPM) and SNPX. Ideal for joystick or 6D mouse teleoperation setups.

TP editor with breakpoints

Prototype your own TP Editor with syntax highlighting and breakpoint debugging using Telnet and FTP features.

Precios

Las bibliotecas se pueden descargar de forma gratuita y se pueden probar durante 30 días. Después de este período, puede solicitarnos que extendamos el período de prueba o que compren la licencia que mejor se adapte a usted: Sitio (solo binario oscurecido) o fuente (código fuente). Después de comprar, tiene un período de mantenimiento de un año, lo que le brinda acceso prioritario al soporte y la posibilidad de actualizar. Cuando compra una licencia para usar, está vinculada a una marca de robot, puede usarla para siempre, sin una tarifa recurrente, independientemente de la cantidad de robot, desarrollador o software que redistribuya a sus clientes. Si usted es un distribuidor y desea ofrecer a sus clientes uno de nuestros productos, contáctenos para discutir condiciones y precios especiales.

Licencia Sitio Estándar

•

1100€de por vida
660€para universidades (40% de descuento)
Diseñado para entornos industriales, brinda acceso a todas las funciones de por vida.
1 año de mantenimiento incluido (acceso a actualizaciones)
Mismas condiciones que la Licencia Pro, excepto que no se prioriza el soporte y el mantenimiento es de 1 año.
No hay fuentes internas; sólo se proporciona la DLL ofuscada.
No hay asistencia por videoconferencia (solo vía correo electrónico).
Elija la licencia adecuada para su proyecto
Comprar ahora
Mas popular

Licencia Pro

•

1700€
2500€
de por vida
1020€para universidades (40% de descuento)
Para entornos de producción críticos que requieren soporte prioritario y mantenimiento a largo plazo.
3 años de mantenimiento incluido (acceso a actualizaciones) sin pedidos de renovación durante este plazo (cero trámites)
SDK completo y permanente: no se requiere una suscripción recurrente, la licencia es suya para siempre y funciona en todos los lenguajes de programación para una marca robot.
Solo puede ser utilizado por la organización que posee la licencia, en la dirección postal indicada. Todos los desarrolladores del equipo compartirán la misma licencia, independientemente del número de máquinas de desarrollo.
Cualquier aplicación desarrollada utilizando el SDK se puede entregar a un número ilimitado de sus clientes sin costo adicional, independientemente del número de robots para conectarse.
La licencia es un tipo de contraseña para llamar al código que desbloquea la funcionalidad. No hay software adicional para instalar. No hay clave USB.
Soporte Prioritario (<24h en promedio)
Asistencia remota (correo electrónico y hasta 2h videoconferencia)
No hay fuentes internas; sólo se proporciona la DLL ofuscada.
Actualiza a Source en cualquier momento (paga la diferencia)
Comprar ahora

Licencia de código fuente

•

3400€de por vida
2040€para universidades (40% de descuento)
Para una soberanía técnica completa, una personalización profunda y una independencia total.
Mismas condiciones que la licencia pro
Código interno completo de la biblioteca en C#
Solución de Visual Studio que incluye miles de líneas de código desarrolladas a lo largo de varios años.
Puedes modificar este código fuente y utilizarlo en tu aplicación, dentro de los límites definidos en las condiciones generales de uso.
Compatible con agentes de codificación IA (Claude, Copilot, Cursor, Codex...) gracias al acceso completo al código fuente y los archivos de contexto incluidos (AGENTS.md) que dan al LLM conocimiento exacto de los internals del SDK
Comprar ahora
FAQ

Preguntas frecuentes

No. El SDK usa los protocolos Ethernet del controlador y no necesita el PC Developer's Kit (PCDK). Telnet, FTP y CGTP no requieren ninguna opción. SNPX requiere la opción R553 en los controladores de FANUC America, RMI la opción R912 y Stream Motion la opción J519.

Los controladores R-J3iB, R-30iA, R-30iB, R-30iB Plus y R-50iA, y ROBOGUIDE para pruebas sin robot. Los protocolos disponibles dependen de la generación y de las opciones del controlador.

La licencia es perpetua, sin suscripción. Standard: 1100 EUR / 1300 USD. Pro: 1700 EUR / 2000 USD. Source: 3400 EUR / 4000 USD. Cubre una organización en una dirección, con un número ilimitado de desarrolladores, robots y aplicaciones entregadas. Las actualizaciones están incluidas durante 1 año con Standard y 3 años con Pro y Source. Las universidades tienen un descuento del 40 %.

Sí. Todas las funciones están disponibles durante 30 días desde el primer uso, sin registro. La prueba se puede ampliar bajo petición. La aplicación de demostración para Windows permite probar el SDK con su robot sin escribir código.

Sí. La biblioteca está compilada para .NET Standard 2.0 y 2.1, que funcionan en Windows, Linux y macOS, en x64 y ARM. Para Python en Linux o macOS, instale el runtime de .NET y ejecute export PYTHONNET_RUNTIME=coreclr antes de iniciar Python.

Sí. pip install UnderAutomation.Fanuc instala el paquete y pythonnet, que carga la biblioteca .NET en el proceso de Python. Se admiten Python 3.7 a 3.13. La API es la misma que en .NET, con nombres de Python.

Sí. La biblioteca LabVIEW (.lvlib) y su proyecto de ejemplo están en GitHub, en el repositorio Fanuc.vi. Usan el mismo ensamblado .NET que los demás lenguajes.

Sí, con la licencia Source: todo el código C# de la biblioteca y su solución de Visual Studio. Puede modificarlo y usarlo en sus aplicaciones, dentro de los límites del contrato de licencia (EULA). Las licencias Standard y Pro solo incluyen la DLL ofuscada.
GitHub

Las bibliotecas en GitHub

Cada paquete se publica en GitHub con su registro de cambios.

Últimas versiones

Fanuc.NET

Última versión

underautomation / Fanuc.NET

Public

Biblioteca .NET del SDK Fanuc.

C#Ver en GitHub

underautomation / Fanuc.py

Public

Paquete Python del SDK Fanuc.

PythonVer en GitHub

underautomation / Fanuc.vi

Public

Biblioteca LabVIEW del SDK Fanuc, con VIs de ejemplo.

LabVIEWVer en GitHub

¡Empiece ahora!

Empiece hoy la prueba de 30 días, o solicite un presupuesto.

Probar gratisPedirSolicitar un presupuestoContactos