UnderAutomation
有问题吗?

[email protected]

联系我们
UnderAutomation
⌘Q

ABB SDK

GitHub stars

800 (EUR) • 1000 (USD)

$1000为了一生
$600大学 (40% 折扣)

快速创建与 ABB 工业机器人通信的 .NET 和 Python 应用程序,同时支持 IRC5 和 OmniCore。

为您的项目选择正确的许可证
下单要求报价

.NET

Python

见条款和条件
Plug & Play

只需几分钟即可连接您的机器人。无需安装许可证管理器, 无需 USB 密钥。仅参考图书馆。

没有在机器人上安装的插件

使用机器人控制器作为标准提供的网络协议。
PCSDK ROS

30 天试用

免费试用 30 天, 无承诺, 无需注册

付一次, 永远使用

永久许可, 无需订阅, 无论机器人, 开发人员的数量是多少

  1. ABB SDK 功能:面向 IRC5 和 OmniCore 的 Robot Web Services

    RAPID 变量与程序

    读写 RAPID 变量和持久变量,启动和停止任务,移动程序指针,加载和保存模块。
    AbbController robot = new AbbController();
    robot.Connect("192.168.0.1");
    // Read a RAPID variable
    var counter = robot.Rws.Rapid.GetSymbolValue("RAPID/T_ROB1/MainModule/nCounter");
    Console.WriteLine(counter.Value);
    // Write it back
    robot.Rws.Mastership.Request();
    robot.Rws.Rapid.SetSymbolValue("RAPID/T_ROB1/MainModule/nCounter", "42");
    robot.Rws.Mastership.Release();
    // Start the program
    robot.Rws.Rapid.ResetProgramPointer();
    robot.Rws.Rapid.Start();
    }
    }
    Click to see the full code

    输入 / 输出

    列出、读取和写入数字量、模拟量和组信号。发送脉冲、取反信号,浏览 I/O 设备和网络。
    AbbController robot = new AbbController();
    robot.Connect("192.168.0.1");
    // Read every signal of the controller
    foreach (var signal in robot.Rws.Io.GetSignals())
    {
    Console.WriteLine($"{signal.Name} = {signal.LogicalValue} ({signal.Type})");
    }
    // Read and write one signal
    var gripper = robot.Rws.Io.GetSignal("Local", "DRV_1", "DO_Gripper");
    robot.Rws.Io.SetSignalValue("Local", "DRV_1", "DO_Gripper", 1);
    // Send 3 pulses of 500 ms
    robot.Rws.Io.PulseSignal("Local", "DRV_1", "DO_Gripper", 1, 3, 500, 500);
    }
    }
    Click to see the full code

    位置与运动学

    读取当前的 robtarget 和 jointtarget,计算正向和逆向运动学,并手动点动机器人。
    AbbController robot = new AbbController();
    robot.Connect("192.168.0.1");
    // Cartesian position of the tool
    var robTarget = robot.Rws.MotionSystem.GetRobTarget("ROB_1");
    Console.WriteLine($"X={robTarget.X} Y={robTarget.Y} Z={robTarget.Z}");
    // Joint angles
    var jointTarget = robot.Rws.MotionSystem.GetJointTarget("ROB_1");
    Console.WriteLine($"Axis 1 = {jointTarget.RobotAxes.Axis1}");
    // Forward kinematics, without moving the robot
    var toolFrame = new Pose(0, 0, 100, new Quaternion(1, 0, 0, 0));
    var pose = robot.Rws.MotionSystem.GetPoseFromJoints("ROB_1", toolFrame, jointTarget);
    }
    }
    Click to see the full code

    控制器与备份

    读取控制器的标识和选项,设置时钟和网络,创建并恢复完整备份。
    AbbController robot = new AbbController();
    robot.Connect("192.168.0.1");
    // Who am I talking to
    var identity = robot.Rws.Controller.GetIdentity();
    Console.WriteLine($"{identity.Name} ({identity.Type}, {identity.MacAddress})");
    // RobotWare version and installed options
    var system = robot.Rws.System.GetInfo();
    Console.WriteLine($"RobotWare {system.Version}");
    Console.WriteLine(robot.Rws.Controller.HasOption("Multitasking"));
    // Full controller backup
    robot.Rws.Controller.CreateBackup("/hd0a/MyBackup");
    Console.WriteLine(robot.Rws.Controller.GetBackupState());
    }
    }
    Click to see the full code

    文件系统

    浏览控制器的文件系统,下载和上传文件,创建、复制、重命名和删除文件与目录。
    AbbController robot = new AbbController();
    robot.Connect("192.168.0.1");
    // Browse a directory of the controller
    DirectoryListing listing = robot.Rws.File.ListDirectory("/hd0a/RobotWare");
    foreach (FileItem file in listing.Files)
    {
    Console.WriteLine($"{file.Name} : {file.Size} bytes");
    }
    // Download a RAPID module and upload it back
    string module = robot.Rws.File.GetFileAsText("/hd0a/MyProgram/MainModule.mod");
    robot.Rws.File.UploadFileFromText("/hd0a/MyProgram/MainModule.mod", module);
    }
    }
    Click to see the full code

    事件日志与状态

    读取事件日志,跟踪运行模式、控制器状态和机器人速度倍率。
    AbbController robot = new AbbController();
    robot.Connect("192.168.0.1");
    // State of the robot
    Console.WriteLine(robot.Rws.Panel.GetOperationMode());
    Console.WriteLine(robot.Rws.Panel.GetControllerState());
    Console.WriteLine(robot.Rws.Panel.GetSpeedRatio());
    // Last events of every domain
    foreach (var domain in robot.Rws.Elog.GetDomains())
    {
    foreach (var message in robot.Rws.Elog.GetMessages(domain.Number, maxCount: 5))
    {
    Console.WriteLine($"[{message.Timestamp}] {message.Type} : {message.Title}");
    }
    }
    }
    }
    Click to see the full code
  2. IRC5 和 OmniCore,同一套 API

    ABB 机器人提供两个版本的 Robot Web Services。本 SDK 同时支持两者,因此同一份代码既能运行在旧的 IRC5 上,也能运行在新的 OmniCore 上。只需改变一个连接参数。

    ControllerRobotWareRobot Web ServicesConnection parameter
    IRC5RobotWare 6 and earlierRWS 1.0RwsVersion.Irc5_V1_0
    OmniCoreRobotWare 7 and laterRWS 2.0RwsVersion.OmniCore_V2_0
    HTTP or HTTPS is a separate setting on the controller, independent of this table.
    IRC5 or OmniCore: which RWS version
  3. 浏览文档

    浏览文档

    该文档使您可以快速开始使用库开发。 所有受支持的语言都可以使用相同的功能。

  4. 实用文章

    针对开发者最常问的 ABB 机器人问题给出的简短回答。

    Robot Web Services overview

    Robot Web Services (RWS) is the REST interface of ABB robot controllers. One API covers RWS 1.0 on IRC5 and RWS 2.0 on OmniCore.

  5. 常见问题

    需要在 ABB 机器人上安装什么吗?

    不需要。Robot Web Services 是控制器自带的服务,标准系统上就有。只要机器人在网络上可访问,并且用户账户具有相应权限即可。

    该 SDK 同时支持 IRC5 和 OmniCore 吗?

    支持。运行 RobotWare 6 的 IRC5 控制器提供 RWS 1.0,运行 RobotWare 7 的 OmniCore 控制器提供 RWS 2.0。SDK 用一套 API 覆盖两者,您只需在连接参数中指定版本。

    需要 RobotStudio 或 ABB 的 PC SDK 吗?

    不需要。该库为 100% 托管代码,直接与控制器通信。只有当您想用虚拟控制器而不是真实机器人进行测试时,才需要 RobotStudio。

    可以读写 RAPID 变量吗?

    可以。您能读写变量、持久变量和常量,包括 robtarget 和 record 类型,也能搜索已加载程序中的符号。

    支持哪些 .NET 版本?

    从 .NET Framework 3.5 到 .NET 9,另有 .NET Standard 2.0 和 2.1 以及 .NET Core 3.0。除 .NET Framework 3.5 和 4.0 外,其余版本均提供异步方法。

    可以用这个 SDK 让机器人运动吗?

    您可以手动点动机器人、设置目标位置,并启动或停止包含运动的 RAPID 程序。连续的实时运动控制属于 Externally Guided Motion,该功能正在开发中。

  6. 后续计划

    Robot Web Services 现已可用。ABB 控制器的其他原生协议,首先是 Externally Guided Motion(EGM),正在开发中,将加入同一个 SDK。

    Available

    Robot Web Services

    RAPID, I/O, position, controller, file system, event log and mastership, on IRC5 and on OmniCore.

    In development

    Externally Guided Motion (EGM)

    Low latency motion over UDP: position stream, position guidance and path correction, for sensor and vision driven applications.

  7. 下载并测试

    Windows应用程序示例
    Windows应用程序示例

    允许您使用简单的接口测试SDK的所有功能。 该示例用.NET 8中的“自我包含”和“单个文件”编译。该应用程序在不安装的情况下可移植。

    UnderAutomation.Abb.Showcase.Forms.exe
    What this application does
    通过下载, 您接受使用的一般条件: 见条款和条件
    Github上的示例
    Github上的示例

    使用此SDK的示例的来源可在GitHub上获得

    Python package
    Python package

    The same SDK for Python, installed from PyPI. It runs on Windows, Linux and macOS.

  8. 申请报价并订购

    价格

    可以免费下载库, 可以进行30天的测试。 在此期间之后, 您可以要求我们延长试用期, 或购买最适合您的许可证: 站点 (仅二进制二进制) 或源代码 (源代码) 。 购买后, 您有一个一年的维护期, 使您优先访问支持和更新的可能性。 当您购买使用许可证时, 它会链接到机器人品牌, 无论您将其重新分配给客户的机器人, 开发人员或软件的数量如何, 都可以永远使用, 而无需重复费用。 如果您是分销商, 并希望为您的客户提供我们的产品之一, 请与我们联系以讨论特殊条件和价格。

    标准站点许可证

    800€ (EUR) • $1000 (USD)

    $1000为了一生
    $600大学 (40% 折扣)
    专为工业环境而设计, 提供终身全功能访问。
    包括 1 年维护 (获取更新)
    与 Pro 许可证的条件相同, 但支持不优先且维护期为 1 年。
    没有内部来源; 仅提供混淆的 DLL。
    无法通过视频会议提供帮助 (仅通过电子邮件) 。
    立即购买
    最受欢迎

    专业许可

    1200€ (EUR) • $1400 (USD)

    $1400
    $2360
    为了一生
    $840大学 (40% 折扣)
    适用于需要优先支持和长期维护的关键生产环境。
    包括 3 年维护 (获取更新) , 在此期限内没有续订订单 (零文书工作)
    完整和永久的SDK: 无需重复订阅, 许可证是您的永远您的, 并且可以使用机器人品牌的所有编程语言。
    仅在指定的邮政地址上持有许可证的组织才能使用。 不管开发机器的数量多少, 所有团队开发人员都将共享相同的许可证。
    使用SDK开发的任何应用程序都可以将无限数量的客户提供, 而不管要连接的机器人数量如何。
    该许可证是一种密码, 可以在解锁功能的代码中调用。 没有其他软件要安装。 没有USB密钥。
    优先支持 (平均<24小时)
    远程协助 (电子邮件和长达 2 小时的视频会议)
    没有内部来源; 仅提供混淆的 DLL。
    随时升级到源 (支付差价)
    立即购买

    源代码许可

    2400€ (EUR) • $2800 (USD)

    $2800为了一生
    $1680大学 (40% 折扣)
    实现完全的技术主权、深度定制和完全独立。
    与专业许可证的条件相同
    C# 语言库的完整内部代码
    Visual Studio 解决方案包含数年开发的数千行代码
    您可以在一般使用条款中定义的限制内修改此源代码并在您的应用程序中使用它
    与AI编程助手(Claude、Copilot、Cursor、Codex等)完美协作,得益于完整源代码访问权限和随附的上下文文件(AGENTS.md),为LLM提供SDK内部结构的精确知识
    立即购买

轻松将 Universal Robots、Fanuc、Yaskawa、ABB 或 Staubli 机器人集成到您的 .NET、Python、LabVIEW 或 Matlab 应用程序中

UnderAutomation
联系我们Legal

© All rights reserved.