UnderAutomation
Une question ?

[email protected]

Contactez-nous
UnderAutomation
⌘Q
Fanuc

Fanuc SDKPilotez les robots Fanuc depuis votre logiciel

Créez rapidement des applications en .NET, Python ou LabVIEW qui communiquent avec votre robot industriel Fanuc. Une bibliothèque logicielle prête à l'emploi : votre PC dialogue avec le robot par le câble réseau.

Essayer gratuitementVoir les tarifs

À partir de 1100 € / $1300, paiement unique

Rien à installer sur le robot
Essai gratuit de 30 jours
Licence perpétuelle, sans abonnement
.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 bref

Ce que vous obtenez

Plug & Play

Connectez votre robot en quelques minutes seulement. Pas de gestionnaire de license à installer, pas de clé USB. Référencez seulement la bibliothèque.

Pas de plugins à installer sur le robot

Utilisation des protocoles réseau fournis en standard par le contrôleur de robot.

KarelPCDKROS

Essai de 30 jours

Essayez-le gratuitement pendant 30 jours, aucun engagement, aucun enregistrement requis

Payer une fois, utiliser pour toujours

Licence perpétuelle, aucun abonnement requis, quel que soit le nombre de robots, de développeurs ou de logiciels redistribués

Clients

Réussites Client

Découvrez comment nos clients intègrent les solutions de UnderAutomation dans leurs projets industriels.

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.

Fonctionnalités

Fonctionnalités du SDK Fanuc : CGTP, Telnet, SNPX, FTP et cinématique

Chaque fonctionnalité a son exemple de code. Cliquez dessus pour voir le code complet.

Commandes distantes

Lancez, mettez en pause et arrêtez des programmes, acquittez les alarmes, écrivez des variables et des E/S depuis votre PC. Utilisez CGTP, le serveur web des contrôleurs récents (HTTP / HTTPS), ou Telnet KCL sur les plus anciens. Aucune option n'est nécessaire sur le contrôleur.

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

Lecture et écriture de données à grande vitesse

SNPX (également connu sous le nom de SRTP/RobotIF) permet une communication de données rapide et structurée avec le robot. Il est utilisé pour lire/écrire les registres, surveiller les alarmes et vérifier l'état du 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

Fichier et décodage

Accès direct FTP à la mémoire du robot pour le transfert de fichiers, la lecture de variables et la gestion de l'état du robot, le tout dans des structures décodées et prêtes à être utilisées au sein d'objets structurés.

// 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

Cinématique inverse

Calcule algébrique de la cinématique directe et inverse de n'importe quel robot ou cobot Fanuc à partir de ses paramètres 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

Implémentation des protocoles Fanuc RMI (R912) et Stream Motion (J519) qui permet d'envoyer simplement des commandes de mouvements au robot, ainsi que de lire et écrire ses entrées, sorties et registres.

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

Outils hors ligne

Les fonctionnalités sans nécessité de robot permettent de manipuler les formats de fichiers standard (fichier variable, liste d'erreur, statut du 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
Démo

Voir le SDK en action

Vidéo et captures de l'application de démonstration livrée avec le SDK.

Exemple d'application Windows

Pas de code à écrire : testez le SDK sur votre robot avec l'application de démonstration.

Télécharger (139 MB)En téléchargeant, vous acceptez les conditions générales d'utilisation : Voir les conditions générales d'utilisation

Exemples sur GitHub

Les sources des exemples d'utilisation de ce SDK sont disponibles sur GitHub

Exemple Python

Exemple de fonctionnement de ce SDK avec Python permettant de récupérer la position cartésienne d'un robot.

Exemple LabVIEW

Exemple de VI qui permet de tester la plupart des fonctions de ce SDK.

Essayez dans votre navigateur

Deux applications web construites avec le SDK Fanuc. Rien à installer pour les tester.

fanuc-kinematics.underautomation.com
Simulateur de cinématique
LIVE
Tester en ligne

Simulateur de cinématique

Déplacez les axes ou l'outil d'un Fanuc CRX en 3D. La cinématique directe et inverse tourne dans votre navigateur, avec le même moteur que le SDK.

WebAssembly3DIK / FK
Tester en ligneCode source
fanuc-rmi-demo.underautomation.com
Créateur de séquences RMI
LIVE
Tester en ligne

Créateur de séquences RMI

Construisez une séquence de robot avec des blocs, lancez-la sur un robot simulé ou réel, et récupérez le code C# ou Python de votre séquence.

RMIC#Python
Installation

Installez-le en une commande

Choisissez votre langage. L'essai de 30 jours démarre à la première utilisation, sans inscription.

.NET

Paquet NuGet pour C# et VB.NET, de .NET Framework au dernier .NET.

dotnet add package UnderAutomation.Fanuc
Voir sur NuGetVoir sur GitHubOuvrir le guide

Python

Paquet Python sur PyPI, pour Windows, Linux et macOS.

pip install UnderAutomation.Fanuc

LabVIEW

Bibliothèque LabVIEW (.lvlib) et son projet d'exemple, sur GitHub.

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

Agents IA

Skill pour les agents de code IA (Claude Code, Cursor, Copilot...) : votre assistant connaît l'API du SDK.

npx skills add underautomation/skills --skill underautomation-fanuc-csharp
Documentation

Parcourir la documentation

La documentation vous permet de commencer rapidement à vous développer avec la bibliothèque. La même fonctionnalité est disponible dans toutes les langues prises en charge.

Parcourir la documentation

La documentation vous permet de commencer rapidement à vous développer avec la bibliothèque. La même fonctionnalité est disponible dans toutes les langues prises en charge.

Commencer avec .NET

Codez votre application en C# ou VB avec cette bibliothèque 100% managée, sans dépendances et disponible sur NuGet.org dans la version et l'architecture de votre choix (x86, x64, ARM, Linux, Windows, MacOS, .NET Framework, .NET Core, UWP, ...)

Commencer avec Python

Développez rapidement un programme en Python qui communique avec votre robot à l'aide de cette bibliothèque. Elle est disponible sur PyPI.

Commencer avec LabVIEW

Equipez vos VIs LabVIEW d'une communication avec votre robot.

Commencer avec Matlab

Permet à vos scripts Matlab *.m de communiquer avec vos cobots.

Guides et articles pratiques

Le SDK couvre les principales fonctionnalités des robots Fanuc à travers plusieurs protocoles Ethernet natifs. Selon les options installées sur votre contrôleur et sa génération, certains protocoles peuvent être disponibles ou non. Chaque article ci-dessous explique comment réaliser une tâche précise et compare les différentes approches.

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.

Tarifs

Les bibliothèques sont téléchargeables gratuitement et peuvent être testées pendant 30 jours. Passé ce délai, vous pouvez nous demander de prolonger la période d'essai, ou acheter la licence qui vous convient le mieux : site (binaires obscurcis uniquement) ou source (code source). Après l'achat, vous disposez d'une période de maintenance d'un an, vous donnant un accès prioritaire au support et la possibilité de mettre à jour. Lorsque vous achetez une licence d'utilisation, elle est liée à une marque de robot, vous pouvez l'utiliser pour toujours, sans redevance récurrente, quel que soit le nombre de robot, de développeur ou de logiciel que vous redistribuez à vos clients. Si vous êtes un distributeur et souhaitez proposer à vos clients un de nos produits, merci de nous contacter pour discuter des conditions et tarifs spéciaux.

Licence Site Standard

•

1100€Pour toujours
660€pour les universités (40% de réduction)
Conçu pour les environnements industriels, offrant un accès complet aux fonctionnalités à vie.
1 an de maintenance incluse (accès aux mises à jour)
Mêmes conditions que la Licence Pro, sauf que le support n'est pas prioritaire et la maintenance est de 1 an.
Il n'y a pas de sources internes ; seule la DLL masquée est fournie.
Pas d'assistance par visioconférence (uniquement par email).
Choisissez la bonne licence pour votre projet
Acheter maintenant
Le plus populaire

Licence Pro

•

1700€
2500€
Pour toujours
1020€pour les universités (40% de réduction)
Pour les environnements de production critiques nécessitant un support prioritaire et une maintenance à plus long terme.
3 ans de maintenance incluse (accès aux mises à jour) sans commande de renouvellement pendant cette durée (zéro paperasse)
SDK complet et permanent : aucun abonnement récurrent n'est requis, la license est à vous pour toujours et fonctionne dans tous les langages de programmation pour une marque de robot.
Peut être utilisé uniquement par l'organisation détentrice de la licence, à l'adresse postale indiquée. Tous les développeurs de l'équipe partageront la même licence, quel que soit le nombre de machine de développement.
Toute application développée à l'aide du SDK peut être livrée à un nombre illimité de vos clients sans frais supplémentaires, quel que soit le nombre de robots à connecter.
La license est une sorte de mot de passe à appeler dans le code qui débloque les fonctionnalités. Pas de logiciel supplémentaire à installer. Pas de clé USB.
Support prioritaire (<24h en moyenne)
Assistance à distance (email et jusqu'à 2h de visioconférence)
Il n'y a pas de sources internes ; seule la DLL masquée est fournie.
Passez à Source à tout moment (payez la différence)
Acheter maintenant

Licence Source

•

3400€Pour toujours
2040€pour les universités (40% de réduction)
Pour une totale souveraineté technique, une personnalisation poussée et une indépendance totale.
Mêmes conditions que la licence pro
Code interne complet de la bibliothèque en C#
Solution Visual Studio comprenant des milliers de lignes de code développées sur plusieurs années
Vous pouvez modifier ce code source et l'utiliser dans votre application, dans les limites définies dans les conditions générales d'utilisation.
Compatible avec les agents IA de codage (Claude, Copilot, Cursor, Codex...) grâce à l'accès au code source complet et aux fichiers de contexte inclus (AGENTS.md) qui donnent au LLM une connaissance précise des internals du SDK
Acheter maintenant
FAQ

Questions fréquentes

Non. Le SDK utilise les protocoles Ethernet du contrôleur et n'a pas besoin du PC Developer's Kit (PCDK). Telnet, FTP et CGTP ne demandent aucune option. SNPX demande l'option R553 sur les contrôleurs FANUC America, RMI l'option R912 et Stream Motion l'option J519.

Les contrôleurs R-J3iB, R-30iA, R-30iB, R-30iB Plus et R-50iA, ainsi que ROBOGUIDE pour tester sans robot. Les protocoles utilisables dépendent de la génération et des options du contrôleur.

La licence est perpétuelle, sans abonnement. Standard : 1100 EUR / 1300 USD. Pro : 1700 EUR / 2000 USD. Source : 3400 EUR / 4000 USD. Elle couvre une organisation à une adresse, avec un nombre illimité de développeurs, de robots et d'applications livrées. Les mises à jour sont incluses pendant 1 an avec la Standard et 3 ans avec la Pro et la Source. Les universités ont une remise de 40 %.

Oui. Toutes les fonctions marchent pendant 30 jours à partir de la première utilisation, sans inscription. L'essai peut être prolongé sur demande. L'application de démonstration Windows permet d'essayer le SDK sur votre robot sans écrire de code.

Oui. La bibliothèque est compilée pour .NET Standard 2.0 et 2.1, qui fonctionnent sous Windows, Linux et macOS, en x64 et ARM. Pour Python sous Linux ou macOS, installez le runtime .NET et lancez export PYTHONNET_RUNTIME=coreclr avant de démarrer Python.

Oui. pip install UnderAutomation.Fanuc installe le paquet et pythonnet, qui charge la bibliothèque .NET dans le processus Python. Python 3.7 à 3.13 est supporté. L'API est la même qu'en .NET, avec des noms Python.

Oui. La bibliothèque LabVIEW (.lvlib) et son projet d'exemple sont sur GitHub, dans le dépôt Fanuc.vi. Ils utilisent la même assembly .NET que les autres langages.

Oui, avec la licence Source : tout le code C# de la bibliothèque et sa solution Visual Studio. Vous pouvez le modifier et l'utiliser dans vos applications, dans les limites du contrat de licence (EULA). Les licences Standard et Pro fournissent uniquement la DLL obfusquée.
GitHub

Les bibliothèques sur GitHub

Chaque paquet est publié sur GitHub avec son journal des modifications.

Dernières versions

Fanuc.NET

Dernière version

underautomation / Fanuc.NET

Public

Bibliothèque .NET du SDK Fanuc.

C#Voir sur GitHub

underautomation / Fanuc.py

Public

Package Python du SDK Fanuc.

PythonVoir sur GitHub

underautomation / Fanuc.vi

Public

Bibliothèque LabVIEW du SDK Fanuc, avec des VIs d'exemple.

LabVIEWVoir sur GitHub

Commencez maintenant !

Démarrez l'essai de 30 jours aujourd'hui, ou demandez un devis.

Essayer gratuitementCommanderDemander un devisContactez-nous