UnderAutomation
Une question ?

[email protected]

Contactez-nous
UnderAutomation
⌘Q

Fanuc SDK

GitHub stars

1100 (EUR) • 1300 (USD)

1100€Pour toujours
660€pour les universités (40% de réduction)

Créez rapidement des applications en .NET, Python ou LabVIEW qui communiquent avec votre robot industriel Fanuc.

Choisissez la bonne licence pour votre projet
CommanderDemander un devis

.NET

Python

LabVIEW

Voir les conditions générales d'utilisation
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.
Karel ROS

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

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.

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

    Commandes distantes

    Telnet KCL (Keyboard Command Line) permet d'envoyer des commandes pour contrôler le robot à distance - aucune option supplémentaire n'est nécessaire sur le contrôleur.
    // Connect to the robot
    robot.Connect(parameters);
    // Reset alarms
    robot.Telnet.Reset();
    // Run a program
    robot.Telnet.Run("MyProgram");
    robot.Telnet.Pause("MyProgram");
    robot.Telnet.Hold("MyProgram");
    robot.Telnet.Continue("MyProgram");
    robot.Telnet.Abort("MyProgram", force: true);
    // Set a variable
    robot.Telnet.SetVariable("$RMT_MASTER", 1);
    // 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);
    }
    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
  2. Parcourir la 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.

  3. 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.

  4. Questions fréquentes

    Faut-il installer quelque chose sur le robot Fanuc ?

    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.

    Quels contrôleurs Fanuc sont supportés ?

    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.

    Combien coûte le SDK Fanuc ?

    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 %.

    Puis-je tester le SDK avant de l'acheter ?

    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.

    Le SDK fonctionne-t-il sous Linux et macOS ?

    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.

    Puis-je utiliser le SDK en 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.

    Existe-t-il une version LabVIEW ?

    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.

    Puis-je obtenir le code source ?

    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.

  5. Télécharger et tester

    Télécharger via NuGet
    Télécharger via NuGet

    Ajouter facilement ce SDK à votre projet Visual Studio via le gestionnaire de package NuGet.

    Voir sur Nuget
    Exemples sur GitHub
    Exemples sur GitHub

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

    Exemple d'application Windows
    Exemple d'application Windows

    Permet de tester toutes les fonctionnalités du SDK avec une interface simple. L'exemple est compilé en "Self Contained" et "Single File" avec .NET 8. L'application est portable sans installation.

    En téléchargeant, vous acceptez les conditions générales d'utilisation :
    Voir les conditions générales d'utilisation
    UnderAutomation.Fanuc.Showcase.Forms.exe (139 MB)
    Bibliothèque LabVIEW et exemple d'application
    Bibliothèque LabVIEW et exemple d'application
    Voir sur GithubUnderAutomation.Fanuc.lvlib
  6. Demander un devis et commander

    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€ (EUR) • $1300 (USD)

    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).
    Acheter maintenant
    Le plus populaire

    Licence Pro

    1700€ (EUR) • $2000 (USD)

    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€ (EUR) • $4000 (USD)

    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

Intégrez facilement les robots Universal Robots, Fanuc, Yaskawa, ABB ou Staubli dans vos applications .NET, Python, LabVIEW ou Matlab

UnderAutomation
Contactez-nousLegal

© All rights reserved.