§8 xArm 850

Control, communication and programming interfaces

How people and programs talk to the arm: Studio, the SDKs, ROS, Modbus and the controller's inputs and outputs.

Start here

This section is about how people and other machines talk to the arm: the software, the network, the wires on the control box and the connector at the tool end, and how to choose between them. Read the short list below first, because one abbreviation here means something different from the rest of the site.

  • Studio, Python, C++, ROS

    UFACTORY's programming routes1

  • 16 + 16

    digital inputs and outputs on the control box23

  • 30 m

    longest I/O cable without a test of the run4

  • UFACTORY lists four ways to program the 850: UFACTORY Studio, Python, C++ and ROS1.
  • Studio runs in a web browser, served by the controller, so there is nothing to install5.
  • The control box has I/O for wiring in other equipment, such as relays, PLCs and emergency stop buttons6.
  • In this section "TCP" means the network protocol the arm and its controller use to talk to a computer7. It is not the Tool Center Point, the point on the tool that the arm positions, which Section 4 teaches8.

S2 in one line: S2 is the xArm 850 arm that picks up incoming material and moves it between receiving, staging and production910.

Look back

A question from earlier on, to keep it fresh. Skip it if you like; nothing depends on it.

q-s07-b-04Safety You pressed STOP in UFACTORY Studio. Is the arm now in the same state as after an emergency stop?
  1. Check option (a)

    Not this one. Studio's STOP is a software stop that leaves the arm's power on. The e-stop removes power from the arm.130131132

  2. Check option (b)

    Correct. Right. Studio's STOP leaves arm power on. Do not count a software stop as an e-stop.131124

q-s04-b-01 What is the TCP?
  1. Check option (a)

    Correct. Right. It is the Tool Center Point, the reference point the arm positions.8

  2. Check option (b)

    Not this one. The network address is the controller's IP address. Here TCP means Tool Center Point. The same three letters also name a network protocol, which Section 8 covers.1887

  3. Check option (c)

    Not this one. The base is where positions are measured from. The TCP is at the tool end.1338

Choose your depth

Four depths, one page. Switch at any time: every tier stays open to everyone. What the four tiers mean

1Beginner

How you talk to the arm

For: Anyone with no robotics background: a visitor, a new operator, a manager
Kind of task: Recognise and recall, with plain-language explanations and pictures

In this part you learn the ways a person or a machine can tell the arm what to do, how a computer reaches it over the network, and the one wiring rule you must never break. No programming background is needed.

Four routes

  • UFACTORY lists four routes for programming the 850: UFACTORY Studio, Python, C++ and ROS1.
  • Studio is the graphical route. The other three are code: you write a program that sends commands to the arm1112.

UFACTORY Studio

  • Studio is a graphical application for controlling the arm. You use it to set parameters, to move the arm from the screen in Live Control, and to build motion programs from Blockly blocks11.
  • You open it by typing the controller's IP address followed by port 18333 into a web browser, for example 192.168.1.201:1833313.
  • Studio is served by the controller itself, so nothing has to be installed on your computer. Chrome, Firefox, Safari and Chromium-based Edge are listed as compatible5.
  • Blockly lets you build a program by dragging and dropping blocks instead of writing code14.
  • No dedicated teach pendant for the 850 is documented. Teaching is done in the browser and by guiding the arm by hand15.

The network

  • UFACTORY recommends connecting the control box straight to your computer with an Ethernet cable. A router or a network switch are the other options16.
  • A wireless link to the router is not recommended, because it adds delay and loses packets17.
  • The arm's default address is in the range 192.168.1.xxx, and your computer must be on the same network segment as the control box18.
  • S2's own address is not known yet, and nor is how the S2 network is laid out19.

Wires to other machines

Line drawings of the 850 control box with its front and back panels labelled: emergency stop, robot power, state, power switch, AC port, network port, LAN, robot 48V, enabling switch and IO.
The control box houses the arm's control system; its front panel carries the status lights and the emergency stop2021. Image: UFACTORY
  • Besides the network, the control box has its own inputs and outputs: 16 digital inputs, 16 digital outputs, and 2 analog inputs and 2 analog outputs2322.
  • They are for connecting equipment such as pneumatic relays, PLCs and emergency stop buttons6.
  • An example from the manual: an analog output can drive a conveyor belt's speed-control input23.

The tool end has its own connector

  • At the tool end there is a 12-pin connector that supplies power and control signals to grippers and sensors24.

The rule you must never break

  • A safety signal, such as one from a door switch or an emergency stop button, must never be connected to a non-safety PLC. Doing so can defeat the safety stop and cause serious injury or death2526.
  • The control box has dedicated safety inputs for that job: an emergency stop input and a protective stop input27.

Check yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s08-b-01 How do you open UFACTORY Studio for an 850?
  1. Check option (a)

    Correct. Right. Studio is served by the controller, so there is nothing to install.135

  2. Check option (b)

    Not this one. No dedicated teach pendant for the 850 is documented. Studio runs in a web browser instead.155

  3. Check option (c)

    Not this one. UFACTORY recommends a direct Ethernet cable, and advises against a wireless link because of delay and packet loss.1617

q-s08-b-02 Which route lets you program the arm without writing code?
  1. Check option (a)

    Correct. Yes. Blockly programs are built by dragging and dropping blocks.14

  2. Check option (b)

    Not this one. Python is one of the code routes: you install the SDK and write a program.128

  3. Check option (c)

    Not this one. ROS is also a code route that UFACTORY lists, alongside Python and C++.129

q-s08-b-03Safety A door switch's safety signal needs to reach the arm. Can it go through the conveyor's ordinary PLC?
  1. Check option (a)

    Not this one. A safety signal must never be connected to a non-safety PLC. Doing so can defeat the safety stop and cause serious injury or death.2526

  2. Check option (b)

    Correct. Right. The control box has dedicated safety inputs, an emergency stop input and a protective stop input, for signals like this.252627

2Novice

The routes, and what the I/O can do

For: Someone who will work near or with the cell: operator, trainee technician
Kind of task: Explain and sequence: put steps in order, match parts to their functions

In this part you see what each programming route offers, how the arm sits on the network, and what the control box and tool-end wiring can be set up to do. It is for someone who will work near the cell or connect a simple device to it.

What each route offers

  • A Blockly program in Studio can be turned into Python code from the Blockly toolbar, so a block program can become the starting point for a code program30.
  • Studio also accepts Gcode programs. UFACTORY Gcode follows the RS-274 standard and is compatible with LinuxCNC Gcode31.
  • The Python SDK is installed from PyPI with pip install xarm-python-sdk, and it supports Python 3 only28.
  • UFACTORY publishes a C++ SDK for the 850 as well32.
  • For ROS, UFACTORY's ROS 2 package xarm_ros2 and its ROS 1 package xarm_ros both added the 850 on 2023-06-072933.

On the network

  • Whichever route you use, the arm and its controller talk to the computer over Ethernet with UFACTORY's own private TCP protocol7.
  • Studio's Settings > My Device > Device Info page shows the arm's IP address, subnet mask, broadcast address and default gateway34.
  • After an IP reset, the control box's address is 192.168.1.11135.
  • The arm also carries a user Ethernet line inside it: an RJ45 port on the base is wired through the arm to an M8 4-pole Ethernet connector on the end flange, for example for a camera at the tool36.

What the control box inputs and outputs can be set to do

  • Each configurable input CI0-CI7 can be set as General Input, Stop Moving, Safeguard Reset, Offline Task, Manual Mode, Reduced Mode or Enable Robot. The general inputs DI0-DI7 support the same list except Stop Moving, Safeguard Reset and Reduced Mode37.
  • Outputs can be General Output, or they can report the arm's status to another machine: Motion Stopped, Robot Moving, Error, Warning, Collision, Manual Mode, Reduced Mode, Offline Task Running, Robot Enabled, and Emergency Stop is Pressed38.
  • An input set as Offline Task starts stored Blockly programs when it is triggered, so another machine can start a program with an I/O signal39.
  • An input set as Enable Robot enables the arm when it is triggered40.
  • An input your program reads must be set as General Input. An input configured for a function, such as Offline Task, must not be used in any program41.
  • Out of the box, the digital inputs read high, the digital outputs are low, and the analog outputs sit at 0 V42.
  • The analog inputs and outputs work from 0 to 10 V43.

Wiring it to another machine

  • To swap digital signals with another machine or a PLC, both sides need a common GND (0 V), and the other machine should use open-drain outputs44.
  • The I/O cable must not be longer than 30 m unless testing shows a longer cable works4.
  • The digital outputs have no current protection: going past their rating can damage them permanently45.
  • The I/O can run from the control box's internal 24 V supply, which is the default, or from an external 24 V supply when more current is needed46.
  • There is also one RS-485 port, and on it the arm can only be the master47.

The tool-end connector in detail

  • The tool connector has 2 digital outputs, TO0 on pin 7 and TO1 on pin 848, and 2 digital inputs, TI0 on pin 9 and TI1 on pin 1049.
  • It also has 2 analog inputs on pins 11 and 12, and an RS-485 pair on pins 5 and 650.
  • It supplies 24 V at up to 1800 mA51.
  • A user button and an LED sit at the tool end. The button does nothing until you give it a job52.
  • A pogo-pin connector at the tool end follows the same electrical specifications as the 12-pin connector5324.
  • Studio's End Effector IO page shows the tool inputs and outputs live, refreshing at 5 Hz54.

The simulated arm is not a separate arm

  • Studio can switch to a simulated arm, but a real arm must still be connected. The real arm does not move, yet any settings you make in simulation apply to it55.
  • Studio also warns that in simulation mode the unlock-joint button still unlocks the real joints56.

Check yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s08-n-01 The conveyor's controller must start a stored Blockly program by sending a signal to one of the control box inputs. Which function should that input have?
  1. Check option (a)

    Correct. Right. An Offline Task input starts stored Blockly programs when it is triggered.39

  2. Check option (b)

    Not this one. Enable Robot enables the arm when triggered. It does not start a program; Offline Task does.4039

  3. Check option (c)

    Not this one. General Input is for an input your own program reads. Starting stored programs from outside is the Offline Task function.4139

  4. Check option (d)

    Not this one. A Manual Mode input lets the arm be dragged freely by hand while the input stays low. It starts no program.57

q-s08-n-02 An input is configured as Offline Task. Can your Blockly program also read that input?
  1. Check option (a)

    Not this one. An input configured for a function, such as Offline Task, must not be used in any program.41

  2. Check option (b)

    Correct. Right. A function input must not be used in any program.41

  3. Check option (c)

    Not this one. Converting Blockly to Python changes nothing here: the rule covers any program, and the input must be General Input.4130

q-s08-n-03Safety You switch UFACTORY Studio to the simulated arm to try some new settings. What happens to the real arm?
  1. Check option (a)

    Not this one. The simulated arm still needs the real arm connected, and settings made in simulation apply to the real arm.55

  2. Check option (b)

    Correct. Right. Treat simulation mode as working on the real arm's settings.5556

  3. Check option (c)

    Not this one. The real arm does not move in simulation mode. The risk is that settings and joint unlocking still reach it.5556

3Intermediate

Electrical detail and error handling

For: Someone who will set up, program or maintain the arm: technician, student engineer
Kind of task: Apply: work through written scenarios that need a decision (which mode, which setting, what to do about this error), with feedback on each choice. Simulation added in M2/M4 extends this; it does not define it

In this part you follow a Python command from your program to the arm, learn the electrical limits of the wiring, and learn to read the codes the arm sends back when something goes wrong. It is for someone who will set up, program or maintain the arm.

How a Python SDK command reaches the arm

  1. Your program creates an XArmAPI object, imported from xarm.wrapper, and gives it the controller's IP address58.
  2. UFACTORY's start-up template then enables motion, sets the mode, for example mode 0 for position control, and sets the state to 0, after which the arm accepts motion commands596061.
  3. The SDK sends each command to the controller over Ethernet on TCP port 502, using UFACTORY's private protocol627.
  4. In mode 0, set_position makes a straight-line move in the base coordinate system; pass wait=True if your program should wait until the move finishes6364.
  5. The call returns a code, and 0 means success65.
  • Units depend on the route. The Python SDK and Blockly use degrees for joint angles and for roll, pitch and yaw, while the raw protocol uses radians. Positions are in millimetres in all three66.
  • The SDK works in degrees because its is_radian setting is False unless you change it67.

Other ports on the same controller

  • Separately from the private protocol, the controller accepts standard Modbus TCP commands on port 502 at its IP address, and that port cannot be changed68.
  • The Python SDK defines three automatic state-report ports on the controller: 30001 (normal), 30002 (rich) and 30003 (real-time)69.
  • The report on port 30003 is sent at 100 Hz, and the other two at 5 Hz. That is Inferred: the rates come from xArm-series documents, and no 850 document states them70.

Electrical limits of the control box I/O

  • The internal 24 V I/O supply delivers 23-30 V at up to 1.8 A71. An external supply must give 20-30 V, and the input takes up to 3 A72.
  • The digital outputs are NPN open-collector outputs that pull the terminal to GND when on, rated at up to 100 mA73.
  • The digital inputs have a weak pull-up, so an input with nothing connected reads high. An input is ON at 0-5 V and OFF at 15-30 V74.
  • Configured input functions trigger on a low-level signal75.
  • Each analog output can source up to 20 mA76.
  • The analog I/O is not isolated from the control box, so the external device should share the control box's GND, and shielded or twisted-pair cable is recommended77.

Electrical limits of the tool I/O

  • Tool inputs work the other way round from the controller's: they have a pull-down, so an unconnected tool input reads low. Logic low is at most 1.0 V and logic high at least 1.6 V7874.
  • Tool digital outputs are NPN open-collector, rated at up to 100 mA sink current, with no current protection79.
  • Tool analog inputs are 12-bit and accept -0.5 to 3.3 V in voltage mode; a 4-20 mA current mode is also described80.
  • The tool's RS-485 device ID is 9. Standard Modbus RTU devices can be tested from Studio's Settings > Externals > Modbus RTU page81.
  • That page's default baud rate is 2000000. Choosing an end effector in Studio sets its own default, for example 115200 for Robotiq grippers82.

When something goes wrong

  • The controller does not push errors to you. An error or warning comes back in the reply to the next command you send83.
  • UFACTORY documents error codes in separate families: API return codes, controller warnings, controller errors, servo (joint) errors, and codes for accessories such as the gripper84.
  • Studio prefixes each code by family: C for control box errors (for example C31), S for joint servo errors (for example S23) and A for Python SDK codes (for example A-2)85.
  • API code -1 means the arm is not connected, and -2 means it is not ready86. Code 1 means there are uncleared errors, 2 uncleared warnings, and 9 that the state is not ready to move87.
  • Controller error 1 means the control box emergency stop button is pushed, 2 that the control box emergency I/O was triggered, and 3 that the three-state switch's emergency stop was pressed88.
  • Error 22 is a self-collision, 23 a joint past its limit, and 24 speed over its limit89. The SDK lists error 31 as Collision Caused Abnormal Current90.
  • Error 35 means the arm reached its safety boundary, and 37 means abnormal movement in manual mode91.

The simulation flag does not disconnect the arm

  • The Python SDK has a set_simulation_robot flag. It is a register write sent to a live controller, not a separate simulator92.
  • So a program using it is still connected to the controller that drives the real arm. That is Inferred, and the SDK documentation does not say what the controller does while the flag is on93.
  • UFACTORY's developer manual tells developers to learn the user manual and Studio first, because programming the arm directly over the protocol carries more risk94.

Platforms

  • The current C++ SDK supports Linux and Windows, with macOS support in beta95.
  • xarm_ros2 keeps one branch per ROS 2 version. Its tested environments include Ubuntu 22.04 with ROS Humble and Ubuntu 24.04 with ROS Jazzy96.

Check yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s08-i-01 A Python SDK call returns 9. What does that mean?

About:87

  1. Check option (a)

    Correct. Right. Code 1 would mean uncleared errors and 2 uncleared warnings.87

  2. Check option (b)

    Not this one. Not connected is API code -1, and -2 means not ready.86

  3. Check option (c)

    Not this one. Every SDK call returns a code, and success is 0, not 9.65

  4. Check option (d)

    Not this one. That is controller error 1, a different family from the API return codes.8884

q-s08-i-02 Nothing is connected to a control box digital input, or to a tool digital input. What does each one read?
  1. Check option (a)

    Not this one. The controller input reads high because of its weak pull-up, but the tool input has a pull-down and reads low.7478

  2. Check option (b)

    Correct. Right. The controller inputs have a weak pull-up and the tool inputs a pull-down.7478

  3. Check option (c)

    Not this one. Only the tool input reads low. The controller input has a weak pull-up, so it floats high.7478

  4. Check option (d)

    Not this one. It is the other way round: pull-up on the controller inputs, pull-down on the tool inputs.7478

q-s08-i-03Safety Your Python program turns on set_simulation_robot. Can someone now safely stand in the arm's working area?
  1. Check option (a)

    Not this one. The flag is a register write sent to a live controller, not a separate simulator. The program is still connected to the controller that drives the real arm.9293

  2. Check option (b)

    Correct. Right. Keep people out of the working area while the arm could run.929397

  3. Check option (c)

    Not this one. Studio's simulated arm also needs the real arm connected, and its settings apply to the real arm.55

4Expert

Choosing an interface

For: Someone who designs, integrates or changes the cell: integrator, engineer, the M5 team
Kind of task: Analyse and decide: weigh trade-offs, resolve contradictions, critique a configuration

In this part you weigh the interfaces against each other: how fast each one is, who else needs to reach the arm, what each one lets you read back, and how firm the evidence behind each one is. It is for someone who designs, integrates or changes the cell, including an agent that will drive it.

The candidates

  • Studio and Blockly: graphical, served by the controller, and a Blockly program can be converted to Python11530.
  • Python SDK: the XArmAPI class over UFACTORY's private TCP protocol on port 5025862. UFACTORY's own 850 documentation names the SDKs for the 850, so the SDK documentation applies to it98.
  • ROS 2: the 850 driver is started with ros2 launch xarm_api uf850_driver.launch.py, and its service examples use the /ufactory namespace rather than /xarm99100. MoveIt launch files exist for a simulated arm and for the real arm101.
  • Modbus TCP: standard Modbus TCP commands on port 502 at the controller's address68.
  • Discrete I/O: the control box's digital and analog lines, set up in Studio3738.

Rate and latency

  • In servo mode, mode 1, set_servo_angle_j and set_servo_cartesian run only the latest target received, with no buffer102.
  • In that mode the controller accepts commands at up to 250 Hz, and commands sent faster are lost. UFACTORY suggests smoothed, interpolated points at a fixed rate, preferably 100 Hz or 200 Hz103.
  • For reading state, the report on port 30003 comes at 100 Hz and those on 30001 and 30002 at 5 Hz. This is Inferred from xArm-series documents70.
  • Queued commands behave differently. By default set_cgpio_digital puts an output change into the motion queue, and sync=False applies it at once, from firmware 2.4.101104. Warning 11 means that command queue is full105.

Who else must talk to the arm

  • A PLC can start stored Blockly projects over Modbus TCP by writing up to 16 holding registers from address 0x30 with function code 0x10. Each value picks a project by number, and the projects run in order106.
  • The same can be done with plain wiring: an input set as Offline Task starts stored Blockly programs39.
  • Controller digital I/O can also be read and written over Modbus TCP, as coils and discrete inputs107.

What each route lets you read back

  • Over Modbus TCP, holding register 32 is the robot mode and 33 the robot state108; input register 32 holds the error code and 33 the warning code109.
  • Over the SDK, get_err_warn_code() returns the current error and warning codes110, and with reporting on, a callback can run whenever either code changes111.
  • The SDK's mode property works only over the socket connection with enable_report on112.
  • Discrete outputs can only report the fixed status signals they are configured for, such as Error or Robot Moving38.

How firm the evidence is

  • Every Modbus TCP register and function-code record here is Inferred. The ModbusTCP manual names no robot model, and the 850 documents that bridge UFACTORY's software to the 850 cover Studio and the SDKs, not that manual10898.
  • The 850 does accept standard Modbus TCP on port 502; that part is Verified68.
  • ROS README material is Verified for the 850 only where the text names the 850 or uf85098.

A worked selection for S2

This project's design needs three paths to the arm: one for the agent's commands, one for signals from the other stations, and one for safety. Each choice below is this project's advice, not UFACTORY's, and each one has a cost.

The agent's commands: Python SDK, position mode

  • This project's advice: drive the arm through the Python SDK in position mode, mode 0, sending only moves the supervisor has checked, and read state from the automatic reports. Do not stream servo-mode targets, and deny the calls that change safety settings113114.
  • Why: the SDK is Verified for the 850 through UFACTORY's own 850 documentation98. In mode 0 each move is a complete command that can block until it finishes, so it can be checked before it is sent6364.
  • The cost: servo mode's streamed motion is given up. Servo mode wants a steady 100 Hz or 200 Hz stream, and runs only the latest target, at the arm's fastest speed103115. Errors come back only in the reply to the next command, so the agent depends on the report ports, whose rates are Inferred8370.
  • ROS 2 is the alternative, but its README material is Verified for the 850 only where the text names the 85098.

Signals from other stations: wired inputs first

  • This project's advice: bring S4's "all clear and ready" into S2 on a wired input set as General Input and read through the SDK, not as a network message116.
  • Why: the controller's inputs and the SDK's I/O calls are documented for the 85037117, while every Modbus TCP register record is Inferred108. A wired input changes only when the device wired to it does116.
  • The cost: one on or off signal per line, a common GND and open-drain outputs on the other side, and a length limit on the cable unless a longer run is tested116. A PLC that starts stored programs over Modbus TCP would have to wait until the register map is checked on the S2 controller106116.
  • The physical I/O between S2 and S4 is not defined yet, so this is a plan, not a wiring diagram118.

Safety: hardwired, outside the agent

  • This project's advice: wire emergency stops and protective devices to the dedicated EI and SI inputs as redundant two-channel pairs, directly or through a safety-rated PLC, and keep the agent out of that path119.
  • Why: UFACTORY provides those inputs for this job, wired as redundant pairs119120, and warns never to connect a safety signal to a non-safety PLC26. Whether the controller's software safety functions run independently of the motion-command path is unknown121.
  • The cost: the agent can stop the arm only in software. The SDK's emergency_stop() is a sequence of state commands, set_state(4), motion_enable(True), set_state(0), and it does not clear errors122. It lacks the hardware emergency stop's power removal123, so it never counts as an emergency stop or safeguard in S2's risk assessment124.
  • Whether any S2 safety signal passes through a PLC today is unknown125.

Sources disagree on error C33

  • The SDK code list and the Studio manual call C33 a controller GPIO error, while the xArm Developer Manual V2.0.1 calls it abnormal current in the arm. Check which source you are reading before you act on it126.

What S2 will publish is not decided

  • What S2 publishes to the other agents or the hub, such as confirmations, faults and its own ready or busy state, is not defined127.
  • The candidates are what the controller can make available: robot mode and state, error and warning codes, and the automatic state reports. That is Inferred, not a decided interface128.
  • This project's advice: do not use Studio's simulated arm or the SDK simulation flag as the simulation substrate for the agent work, because both act on a connected controller and a real arm129.

Check yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s08-e-01 A cell PLC must start S2's stored program and read its error code over the network. Which interface fits, and why does this platform mark that evidence Inferred?
  1. Check option (a)

    Correct. Right. A PLC can start stored projects through holding registers, and an input register holds the error code. The 850 bridging records cover Studio and the SDKs, not the Modbus TCP manual.10610998

  2. Check option (b)

    Not this one. An Offline Task input can start stored programs, but an output only reports a fixed status such as Error. It cannot carry the error code itself.3938

  3. Check option (c)

    Not this one. Studio is a graphical application used in a web browser. The documented way for a PLC to start projects is Modbus TCP.115106

q-s08-e-02 The agent needs the arm's state at 100 Hz. Which automatic report port should it read?

About:70

  1. Check option (a)

    Not this one. Port 30001 is the normal report, sent at 5 Hz.6970

  2. Check option (b)

    Not this one. Port 30002 is the rich report, also sent at 5 Hz.6970

  3. Check option (c)

    Correct. Right, the real-time report. The rate is Inferred: it comes from xArm-series documents, and no 850 document states it.6970

q-s08-e-03Safety The agent will call the SDK's emergency_stop() when it sees a hazard. Can S2's risk assessment count that as an emergency stop?
  1. Check option (a)

    Not this one. Despite its name, it is a sequence of software state commands, and it does not carry the hardware emergency stop's power removal.122123

  2. Check option (b)

    Correct. Right. The hardware emergency stop and the dedicated safety inputs are what a risk assessment can rely on.12412327

  3. Check option (c)

    Not this one. A safety signal must never go through a non-safety PLC, and whether any S2 safety signal passes through a PLC is unknown.25125

Not settled

Open questions · 14

What the sources do not settle for this section. Nothing here is papered over with a plausible number.

  • Kind: Gap

    No dedicated teach pendant for the 850 is documented in the sources fetched: teaching is by browser (UFACTORY Studio) and by hand guiding. User Manual V2.3.0 lists stop categories for a 'Three-Position Enabling Device', but no source fetched names the product or says whether it is offered for the 850.

    See reference 15
  • Kind: Gap

    The IP address of the IntelliMake S2 850's control box, and how the S2 network is laid out (direct PC link, switch or router), are unknown.

    See reference 19
  • Kind: Gap

    The physical I/O that will carry signals between S2 and S4 (and the other stations) is not defined. It may differ from the simulation's signals.

    See reference 118
  • Kind: Gap

    No UFACTORY source was found that says whether the software safety functions (collision detection, safety boundary, reduced mode) are enforced independently of the motion-command path. It is also unknown whether the safety boundary checks the tool and the arm's links, or only the TCP; the documentation mentions only the TCP.

    See reference 121
  • Kind: Gap

    It is unknown whether any S2 safety signals pass through a PLC, and if so whether it is a safety-rated PLC.

    See reference 125
  • Kind: Contradiction

    Sources disagree on controller error code C33: the SDK code list and the Studio manual call it a controller GPIO/IO error, while the xArm Developer Manual V2.0.1 calls it abnormal current in the robotic arm.

    See reference 126
  • Kind: Gap

    What S2 publishes to the other agents or the hub is not defined: placement confirmations, S3 slot updates, faults and error codes, its own ready or busy state, and whether any work-order or traceability data passes through S2 (Q9, Q14).

    See reference 127
  • Kind: Contradiction

    Sources disagree on the speed of the 850's internal base-to-flange Ethernet cable: gigabit or 1000M CAT5E on the product page and in the online hardware manual, but 100M and 'Standard CAT5' in User Manual V2.3.0.

    See reference 134
  • Kind: Gap

    The factory IP address of an individual 850 controller is not documented; the manuals give only the range 192.168.1.xxx and the reset address 192.168.1.111.

    See reference 135
  • Kind: Contradiction

    The Python SDK and the Studio manual name state 2 differently: the SDK's get_state and state documentation call it 'sleeping', while the Studio manual calls it ready to receive and execute commands.

    See reference 136
  • Kind: Gap

    Whether camera C1's or S11's output reaches S2 or the shared hub, and in what form, is not documented.

    See reference 137
  • Kind: Contradiction

    UFACTORY documents disagree on the collision sensitivity range. The Studio Settings page says 1 to 5, while the Studio glossary, the Python SDK and the xArm Developer Manual say 0 to 5, with 0 disabling collision detection. A learner reading only the Settings page would not learn that the value can switch detection off.

    See reference 138
  • Kind: Contradiction

    Sources disagree on the control box's RS-485 ports: one RS-485 master on the product page and in the online hardware manual, but one master and one slave (2 × RS-485) in User Manual V2.3.0.

    See reference 139
  • Kind: Contradiction

    Sources disagree on the 850's end-effector communication protocol: the product page says Modbus RTU, and the online hardware manual's Tool RS485 section and Gripper G2 table describe RS-485 with Modbus RTU, but the specification tables of the online hardware manual and User Manual V2.3.0 say Modbus TCP. The tool port is RS-485, which suggests RTU, but this is not confirmed.

    See reference 140
Provenance

References · 140

Each number in the text points here. Every entry states its confidence class in words and keeps its evidence one click away. How to read the labels.

Key to the badges
Confidence: Verified
A manufacturer or IntelliMake document says so, or it was observed directly. It does not mean anyone measured it at S2.
Confidence: Inferred
Reasoned from Verified facts. The reasoning is printed with the record.
Confidence: Assumed
Plausible but untested. The record says how it would be checked.
Kind: Gap
Not known. No figure or answer is given in its place.
Kind: Contradiction
Sources disagree. Both sides are shown, and the site does not pick one silently.
Kind: Recommendation
Project advice drawn from the records it cites. Not a fact about the machine and not a confidence class, so the filter never hides it.
Awaiting cell access
Awaiting cell access: could be confirmed or corrected once the physical S2 cell can be observed.
This project's simulation and agent design, not the physical cell
This project's simulation and agent design, not the physical cell.
  1. Confidence: Verifiediface-001

    The record says

    UFACTORY lists four programming routes for the 850: UFACTORY Studio, Python, C++ and ROS.

    Evidence · 1 citation

    UFACTORY Studio, Python/C++/ROS

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · Specifications table, 'Programming' row

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  2. Confidence: Verifiediface-045

    The record says

    The 850 controller (AC and DC versions) has 16 digital inputs: 8 configurable inputs CI0-CI7 and 8 general digital inputs DI0-DI7.

    Evidence · 1 citation

    8×CI+8×DI(Digital In)

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · Controller table, 'I/O Interface' row

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  3. Confidence: Verifiediface-046

    The record says

    The 850 controller has 16 digital outputs: 8 configurable outputs CO0-CO7 and 8 general digital outputs DO0-DO7.

    Evidence · 1 citation

    8×CO+8×DO(Digital Out)

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · Controller table, 'I/O Interface' row

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  4. Confidence: Verifiediface-070

    The record says

    An I/O cable between the control box and other equipment must not be longer than 30 m unless extension testing shows it works.

    Evidence · 1 citation

    The length of the I/O cable that used to connect the Control Box with other mechanical and plant equipment must not exceed 30 meters unless it is feasible after the extension testing.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.1 Electrical Alarms and Cautions

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  5. Confidence: Verifiediface-003

    The record says

    UFACTORY Studio runs in a web browser served by the controller, with no software to install; Chrome, Firefox, Safari and Chromium-based Edge are listed as compatible.

    Evidence · 1 citation

    UFACTORY Studio can be accessed through a browser directly without installing any software. Now it's compatible with browsers: Google Chrome/ Firefox/ Safari/ Microsoft Edge(Chromium kernel).

    UFACTORY Studio User Manual (online), 1. Preface · UFACTORY · 1. Preface, second paragraph

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  6. Confidence: Verifiediface-050

    The record says

    The controller I/O is meant for connecting devices such as pneumatic relays, PLCs and emergency stop buttons.

    Evidence · 1 citation

    The I/Os are extremely flexible and can be used in many different devices, including pneumatic relays, PLCs, and emergency stop buttons.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4 Controller Electrical IO

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  7. Confidence: Verifiediface-023

    The record says

    The 850 arm and its controller communicate with a host over Ethernet using a private (custom) TCP protocol.

    Evidence · 2 citations

    Robotic Arm Communication Protocol | Private TCP(custom)

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · Specifications table, 'Robotic Arm Communication Protocol' row

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Communication Method | Ethernet

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · Controller table, 'Communication Method' row

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  8. Confidence: Verifiedapp-025

    The record says

    The Tool Center Point (TCP) is the reference point the arm positions. Without a TCP offset, the tool coordinate system sits at the flange centre; a TCP offset moves it to the actual tool point.

    Evidence · 2 citations

    If the TCP offset is not set, the default tool coordinate system is located at flange center.

    UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'Tool Coordinate System'

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Set the relative offset between the default tool coordinate system at flange center and the actual tool coordinate system, with distance unit of mm.

    UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'TCP Offset'

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  9. Confidence: Verifiedint-003

    The record says

    Station S2 of the Phase 1 factory is the UFactory xArm 850 cobot.

    Evidence · 2 citations

    S2 UFactory xArm 850 Cobot

    IntelliMake Phase 1 Factory: Autonomous Production Demonstrator (infographic) · IntelliMake.org · S2 station label

    © IntelliMake.org. Used with permission; redrawn for this platform. · Cleared for use by its owner · retrieved 2026-09-21

    UFactory xArm 850 | S2

    IntelliMake Phase 1 Factory: Autonomous Production Demonstrator (infographic) · IntelliMake.org · HW2 SME topic mapping table

    © IntelliMake.org. Used with permission; redrawn for this platform. · Cleared for use by its owner · retrieved 2026-09-21

  10. Confidence: Verifiedint-004

    The record says

    S2 picks and transfers incoming material between receiving, staging and production.

    Evidence · 1 citation

    Picks and transfers incoming material between receiving, staging, and production.

    IntelliMake Phase 1 Factory: Autonomous Production Demonstrator (infographic) · IntelliMake.org · S2 station description

    © IntelliMake.org. Used with permission; redrawn for this platform. · Cleared for use by its owner · retrieved 2026-09-21

  11. Confidence: Verifiediface-002

    The record says

    UFACTORY Studio is a graphical application for controlling the arm: setting parameters, moving the arm in Live Control, and building motion programs from Blockly code blocks.

    Evidence · 1 citation

    Quote not shown (over 40 words). See the source at: 1. Preface, first paragraph.

    UFACTORY Studio User Manual (online), 1. Preface · UFACTORY · 1. Preface, first paragraph

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  12. Confidence: Verifiedapp-035

    The record says

    The 850 can be programmed graphically through UFACTORY Studio or in code through Python, C++ and ROS.

    Evidence · 1 citation

    UFACTORY Studio, Python/C++/ROS

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · Technical Specifications table, 'Programming' row

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  13. Confidence: Verifiediface-005

    The record says

    UFACTORY Studio is opened by entering the controller's IP address followed by port 18333 in a browser (for example 192.168.1.201:18333).

    Evidence · 2 citations

    Enter 'IP+:18333' on the browser to access UFACTORY Studio.

    UFACTORY Studio User Manual (online), 3. Connection · UFACTORY · 3.2 Software Connection

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Access link: 192.168.1.201:18333

    UFACTORY Studio User Manual (online), 3. Connection · UFACTORY · 3.2 Software Connection, example

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  14. Confidence: Verifiediface-006

    The record says

    Blockly, inside UFACTORY Studio, is a graphical programming tool: programs are built by dragging and dropping code blocks rather than writing code.

    Evidence · 1 citation

    Blockly is a graphical programming tool that can be programmed to control the robotic arm by dragging and dropping code blocks without the need to write the code manually.

    UFACTORY Studio User Manual (online), 5. Blockly · UFACTORY · 5. Blockly, introduction

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  15. Kind: Gapcomp-042

    Not known

    No dedicated teach pendant for the 850 is documented in the sources fetched: teaching is by browser (UFACTORY Studio) and by hand guiding. User Manual V2.3.0 lists stop categories for a 'Three-Position Enabling Device', but no source fetched names the product or says whether it is offered for the 850.

    Evidence · 1 citation

    Three-Position Enabling Device Performs a Stop Category 2.

    UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · Appendix 7, 1.8 Stop Categories, p.184 (manual names the machine '850' / 'UFactory 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  16. Confidence: Verifiediface-037

    The record says

    UFACTORY recommends connecting the control box directly to the PC by Ethernet cable; a router, a network switch, or a wireless link to a router are the other options.

    Evidence · 2 citations

    1. The control box is directly connected to the PC(**Recommended connection method**).

    UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.2.3.3 Controller Networking, option 1

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    There are four ways of network settings for the robotic arm.

    UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.2.3.3 Controller Networking

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  17. Confidence: Verifiediface-038

    The record says

    A wireless link between the PC and the router is not recommended because of delay and packet loss.

    Evidence · 1 citation

    It is not recommended because of the delay and packet loss of wireless connection.

    UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.2.3.3 Controller Networking, option 3 note

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  18. Confidence: Verifiediface-039

    The record says

    The arm's default IP address is in the 192.168.1.xxx range, and the PC must be on the same network segment as the control box.

    Evidence · 1 citation

    The default IP of robotic arm is 192.168.1.xxx, please make sure that the IP address of the PC and control box are on the same network segment.

    UFACTORY Studio User Manual (online), 3. Connection · UFACTORY · 3.2 Software Connection

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  19. Kind: GapAwaiting cell accessiface-044

    Not known

    The IP address of the IntelliMake S2 850's control box, and how the S2 network is laid out (direct PC link, switch or router), are unknown.

    Awaiting cell access: this could be confirmed or corrected once the physical S2 cell can be observed.

    Evidence · 1 citation

    The default IP of robotic arm is 192.168.1.xxx

    UFACTORY Studio User Manual (online), 3. Connection · UFACTORY · 3.2 Software Connection

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  20. Confidence: Verifiedcomp-017

    The record says

    UFACTORY calls the control box the core of the 850: it houses the arm's control system.

    Evidence · 1 citation

    The control box, core part of the robotic arm, is the integration of the robotic arm control system.

    UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · Terms and Definitions, 'Control Box', p.6 (manual names the machine '850' / 'UFactory 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  21. Confidence: Verifiedcomp-021

    The record says

    The 850 control box front panel has a ROBOT PWR indicator (on when the arm is powered), a STATE indicator (flashes when the control box is powered), a LAN indicator (on when communicating normally), and an EMERGENCY STOP button.

    Evidence · 4 citations

    ROBOT power indicator ROBOT PWR The light is on, indicating that the 850 is powered on.

    UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · Hardware Section 1.1.3 Control Box Description, p.20 (manual names the machine '850' / 'UFactory 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Emergency stop button EMERGENCY STOP

    UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · same table (manual names the machine '850' / 'UFactory 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Control Box power status indicator STATE The light flashes, indicating that the control box is powered on.

    UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · same table (manual names the machine '850' / 'UFactory 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Network port indicator LAN The light is on, indicating that the 850 is communicating normally.

    UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · same table (manual names the machine '850' / 'UFactory 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  22. Confidence: Verifiediface-047

    The record says

    The 850 controller has 2 analog inputs (AI0, AI1) and 2 analog outputs (AO0, AO1).

    Evidence · 1 citation

    2×AI(Analog In) 2×AO(Analog Out)

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · Controller table, 'I/O Interface' row

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  23. Confidence: Verifiediface-067

    The record says

    The 850 manual's example for the analog outputs is driving a conveyor belt's analog speed-control input from AO0 or AO1.

    Evidence · 1 citation

    The following example shows how to use the analog speed control input to control the conveyor belt(Connect to AO0 or AO1).

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.3.2 Analog Output

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  24. Confidence: Verifiediface-079

    The record says

    The 850's tool end has a 12-pin female industrial (avionic) connector that supplies power and control signals to grippers and sensors.

    Evidence · 1 citation

    At the tool side of the robotic arm, there is an avionic socket 12-pin female industrial connector. This connector provides power and control signals for the grippers and sensors used on a particular robotic arm tool.

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2 Tool IO

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  25. Confidence: Verifiediface-071

    The record says

    A safety signal must never be connected to a non-safety PLC.

    Evidence · 1 citation

    Never connect a safety signal to a non-safety PLC.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.1 Electrical Alarms and Cautions, DANGER

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  26. Confidence: Verifiedsafety-057

    The record says

    UFACTORY warns never to connect a safety signal to a non-safety PLC, because doing so can defeat the safety stop and cause serious injury or death.

    Evidence · 1 citation

    Never connect a safety signal to a non-safety PLC.Failure to follow this warning may result in serious injury or death due to an invalid safety stop function.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.1 Electrical Alarms and Cautions

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  27. Confidence: Verifiedsafety-049

    The record says

    The 850 control box has two fixed safety inputs: the emergency stop input (EI), used only for emergency stops, and the protective stop input (SI), used for all other safety protection.

    Evidence · 1 citation

    There are two fixed safety inputs: The robotic arm emergency stop input is only used for the emergency stop of the device. The protective stop input is used for all types of safety protection.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.1 Safety IO(EISI)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  28. Confidence: Verifiediface-010

    The record says

    The Python SDK (xArm-Python-SDK) is installed from PyPI with 'pip install xarm-python-sdk' and supports Python 3 only.

    Evidence · 2 citations

    pip install xarm-python-sdk

    xArm-Python-SDK README · UFACTORY · Installation, 'Install from pypi'

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Only Python 3 is supported.

    xArm-Python-SDK README · UFACTORY · Installation

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  29. Confidence: Verifiediface-016

    The record says

    UFACTORY's ROS 2 package xarm_ros2 added support for the UFACTORY 850 on 2023-06-07.

    Evidence · 1 citation

    (2023-06-07) Added support for UFACTORY850 robotic arm

    xarm_ros2 ReadMe (humble branch) · UFACTORY · 2. Update History

    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  30. Confidence: Verifiediface-007

    The record says

    A Blockly program in UFACTORY Studio can be converted to Python code from the Blockly toolbar.

    Evidence · 1 citation

    Convert to PythonConvert to Python code.

    UFACTORY Studio User Manual (online), 5. Blockly · UFACTORY · 5.1 Interface Overview, item 3

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  31. Confidence: Verifiediface-008

    The record says

    UFACTORY Studio also accepts Gcode programs; UFACTORY Gcode follows the RS-274 standard and is compatible with LinuxCNC Gcode.

    Evidence · 1 citation

    UFACTORY Gcode refers to the RS-274 standard and is compatible with LinuxCNC Gcode

    UFACTORY Studio User Manual (online), 6. Gcode · UFACTORY · 6. Gcode, introduction

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  32. Confidence: Verifiediface-014

    The record says

    A C++ SDK (xArm-CPLUS-SDK) is published by UFACTORY for the 850, xArm 5/6/7 and Lite 6.

    Evidence · 1 citation

    C++ SDK for UFACTORY robots, 850, xArm5/6/7, and Lite6.

    xArm-CPLUS-SDK repository description (GitHub repository metadata) · UFACTORY · GitHub repository description field (fetched via the GitHub REST API)

    © UFACTORY Inc., xArm-Developer/xArm-CPLUS-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  33. Confidence: Verifiediface-022

    The record says

    UFACTORY's ROS 1 package xarm_ros also supports the 850 (added 2023-06-07); 850 users are directed to a separate ReadMe for Lite6/UF850.

    Evidence · 2 citations

    For **UFACTORY Lite 6/850** users, make sure you have followed the instructions before chapter 4.7 on this page, then switch to [ReadMe for Lite6/UF850](./ReadMe_others.md).

    xarm_ros ReadMe (ROS 1, master branch) · UFACTORY · Top of ReadMe

    © UFACTORY Inc., xArm-Developer/xarm_ros, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    (2023-06-07) Added support for __UFACTORY850__ robotic arm

    xarm_ros ReadMe (ROS 1, master branch) · UFACTORY · Update history

    © UFACTORY Inc., xArm-Developer/xarm_ros, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  34. Confidence: Verifiediface-041

    The record says

    UFACTORY Studio's Settings > My Device > Device Info page shows the arm's IP address, subnet mask, broadcast address and default gateway; the DNS address can be changed there.

    Evidence · 1 citation

    Display the IP address of the robotic arm, subnet mask, broadcast address, and default gateway. The DNS address can be modified and added.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.5.1 Device Info, Network Settings

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  35. Confidence: Verifiediface-040

    The record says

    After an IP reset, the control box's IP address is 192.168.1.111.

    Evidence · 1 citation

    The reset IP is 192.168.1.111.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.5 Reset IP, step 3

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  36. Confidence: Verifiediface-042

    The record says

    The 850 has a user Ethernet line through the arm: an RJ45 port on the base is wired by an internal 1000M cable to an M8 4-pole Ethernet connector on the end flange, for example for vision devices.

    Evidence · 1 citation

    The user Ethernet interface(RJ45) of the arm base is connected to the Ethernet interface(M8 4-pole) of the end flange through a physical internal **1000M** Ethernet cable

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.5 Ethernet Interface

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  37. Confidence: Verifiediface-058

    The record says

    Inputs CI0-CI7 can be configured as General Input, Stop Moving, Safeguard Reset, Offline Task, Manual Mode, Reduced Mode or Enable Robot; DI0-DI7 support the same except Stop Moving, Safeguard Reset and Reduced Mode.

    Evidence · 9 citations

    | Configurable Function | CI0-CI7 | DI0-DI7 |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable IO table, header

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    DI0-DI7 are not equipped with the following three functions: stop moving, safeguard reset, and reduced mode.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.1.4 NOTE

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | General Input | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable IO table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Stop Moving | Yes | No |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable IO table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Safeguard Reset | Yes | No |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable IO table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Offline Task | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable IO table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Manual Mode | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable IO table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Reduced Mode | Yes | No |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable IO table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Enable Robot | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable IO table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  38. Confidence: Verifiediface-059

    The record says

    Outputs CO0-CO7 and DO0-DO7 can be configured as General Output or as status signals: Motion Stopped, Robot Moving, Error, Warning, Collision, Manual Mode, Reduced Mode, Offline Task Running, Robot Enabled, and Emergency Stop is Pressed.

    Evidence · 12 citations

    | Configurable Function | CO0-CO7 | DO0-DO7 |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table, header

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Emergency Stop is Pressed | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Offline Task Running | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | General Output | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Motion Stopped | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Robot Moving | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Error | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Warning | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Collision | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Manual Mode | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Reduced Mode | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Robot Enabled | Yes | Yes |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, Configurable output table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  39. Confidence: Verifiediface-061

    The record says

    An input configured as Offline Task starts stored Blockly programs when triggered, so external equipment can start a program by an I/O signal.

    Evidence · 1 citation

    Offline Task: Offline Task can add multiple Blockly to be triggered through I/O.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.2 Controller IO, IO Function

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  40. Confidence: Verifiediface-062

    The record says

    An input configured as Enable Robot enables the arm when triggered.

    Evidence · 1 citation

    **Enable Robot:** Enable the robotic arm by triggering IO.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.2 Controller IO, IO Function

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  41. Confidence: Verifiediface-060

    The record says

    A controller input used by a program must be set as General Input; if it is configured for a function (for example Offline Task), it must not be used in any program.

    Evidence · 1 citation

    Quote not shown (over 40 words). See the source at: 7.2.2 Controller IO, General Input.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.2 Controller IO, General Input

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  42. Confidence: Verifiediface-063

    The record says

    By default the controller digital inputs read high, the digital outputs are low, and the analog outputs are at 0 V (range 0-10 V).

    Evidence · 3 citations

    Digital Input: CI0-CI7, DI0-DI7, High level by default.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.2 Controller IO, IO State

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Digital Output: CO0-CO7, DO0-DO7, Low level by default.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.2 Controller IO, IO State

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Analog Output: AO0, AO1, 0V by default, [0-10V].

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.2 Controller IO, IO State

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  43. Confidence: Verifiediface-064

    The record says

    The controller's analog inputs and outputs work in the 0-10 V range at 12-bit resolution.

    Evidence · 2 citations

    This type of interface can be used to set or measure voltage (0-10V) going into or out of other devices.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.3 Controller Analog IO(AIAO)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | [AIx - AG] | Resolution | - | 12 | 12 | Bit |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.3, table, [AIx - AG] Resolution

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  44. Confidence: Verifiediface-069

    The record says

    To exchange signals with other machines or PLCs over digital I/O, the two sides need a common GND (0 V) and the other machine should use open-drain outputs.

    Evidence · 1 citation

    If general GND (0V) is established and the machine uses open-drain output technology, digital I/O and other can be used device communication

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.2.3 Communicate with other Machines or PLCs

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  45. Confidence: Verifiediface-055

    The record says

    The controller's digital outputs have no current protection; exceeding the specified values can cause permanent damage.

    Evidence · 1 citation

    There is no current protection on the digital output of the Control Box. If the specified values exceeded, permanent damage may result.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, CAUTION

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  46. Confidence: Verifiediface-051

    The record says

    The controller's digital I/O can be powered from the internal 24 V supply (the default) or from an external 24 V supply when more current is needed.

    Evidence · 2 citations

    The digital I/O can be powered by a internal 24V power supply or by an external power supply by configuring the power junction box.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4 Controller Electrical IO

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    The default configuration is to use internal power, see below.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4 Controller Electrical IO

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  47. Confidence: Verifiediface-048

    The record says

    The 850 controller has one RS-485 port, and the arm can act only as master on it.

    Evidence · 2 citations

    1×RS-485 Master

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · Controller table, 'I/O Interface' row

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    When using M_A and M_B, the robotic arm can only be considered as a master.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.4 Controller RS485, note 2

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  48. Confidence: Verifiediface-080

    The record says

    The tool connector has 2 digital outputs, TO0 (pin 7) and TO1 (pin 8).

    Evidence · 3 citations

    | 1 | Brown | +24V (Power) | 7 | Black | Tool Output 0 (TO0) |

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2 Tool IO, pin table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | 2 | Blue | +24V (Power) | 8 | Grey | Tool Output 1 (TO1) |

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2 Tool IO, pin table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    8 tool Digital Output (Now only 2 effective)

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Coil Registers 32~39 (xArm-series Modbus map)

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  49. Confidence: Verifiediface-081

    The record says

    The tool connector has 2 digital inputs, TI0 (pin 9) and TI1 (pin 10).

    Evidence · 3 citations

    | 3 | White | 0V (GND) | 9 | Red | Tool Input 0 (TI0) |

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2 Tool IO, pin table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | 4 | Green | 0V (GND) | 10 | Purple | Tool Input 1 (TI1) |

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2 Tool IO, pin table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    8 tool Digital Input (Now only 2 effective)

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Discrete Input Registers 32~39 (xArm-series Modbus map)

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  50. Confidence: Verifiediface-082

    The record says

    The tool connector has 2 analog inputs, AI0 (pin 11) and AI1 (pin 12), and a user RS-485 pair on pins 5 (A) and 6 (B).

    Evidence · 3 citations

    | 5 | Pink | User 485-A | 11 | Orange | Analog input 0 (AI0) |

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2 Tool IO, pin table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | 6 | Yellow | User 485-B | 12 | Light Green | Analog input 1 (AI1) |

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2 Tool IO, pin table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    4 tool analog inputs (now only 2 effective)

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Input Registers 7~10 (xArm-series Modbus map)

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  51. Confidence: Verifiediface-083

    The record says

    The tool connector supplies 24 V (20-30 V) at up to 1800 mA.

    Evidence · 2 citations

    | Supply Current | - | - | 1800 | mA |

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2 Tool IO, Electrical Specifications

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Supply Voltage in 24V Mode | 20 | 24 | 30 | V |

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2 Tool IO, Electrical Specifications

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  52. Confidence: Verifiediface-089

    The record says

    The tool end has a user button and an LED on tool I/O TI2 and TO2: setting TO2 high with set_tgpio_digital(ionum=2, value=1) lights the LED blue, and the button's function is left for the user to define.

    Evidence · 4 citations

    The function of this button has not been defined yet, user can custom and develop it.

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.4 Lighting

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    arm.set_tgpio_digital(ionum=2, value=1)

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.4 Lighting, code

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Tool Digital IO: TI2, TO2.

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.4 Lighting

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    # SET TO2 to high levelthe LED will be Blue.

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.4 Lighting, code comment

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  53. Confidence: Verifiediface-090

    The record says

    A pogo-pin connector at the tool end follows the same electrical specifications as the tool I/O connector.

    Evidence · 1 citation

    Electrical specifications comply with Tool IO specifications.

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.3 Pogo Pin Connector

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  54. Confidence: Verifiediface-092

    The record says

    UFACTORY Studio's End Effector IO page refreshes at 5 Hz and lists tool inputs TI0-TI4, tool outputs TO0-TO4 and analog inputs TAI0-TAI1 (0-3.3 V).

    Evidence · 4 citations

    Update Frequency: 5HZ.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.1 End Effector IO

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Digital Input: TI0, TI1, TI2, TI3, TI4, low level by default

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.1 End Effector IO

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Digital Output: TO0, TO1, TO2, TO3, TO4.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.1 End Effector IO

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Robot Analog Input: TAI0, TAI1, 0V by default, [0-3.3V].

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.1 End Effector IO

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  55. Confidence: Verifiediface-142

    The record says

    UFACTORY Studio can switch to a simulated arm, which still needs a real arm connected: the real arm does not move, but settings made in simulation apply to it.

    Evidence · 2 citations

    Switch to real or simulation robotic arm, both mode needs to connect to a real robotic arm.

    UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.6 Real & Simulation robotic arm

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    When switch to simulation robotic arm, the robot will not move but the settings will apply to real robotic arm.

    UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.6

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  56. Confidence: Verifiedsafety-034

    The record says

    UFACTORY Studio warns that in simulated robotic arm mode the unlock-joint button still unlocks the real joints, and that settings made in simulation mode apply to the real arm.

    Evidence · 2 citations

    In the 'simulated robotic arm mode', clicking the unlock joint button will also unlock the real joints of the robotic arm.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.4.2 Debugging Tools, Joint

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    When switch to simulation robotic arm, the robot will not move but the settings will apply to real robotic arm.

    UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.6 Real & Simulation robotic arm

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  57. Confidence: Verifiedsafety-060

    The record says

    In UFACTORY Studio, controller input functions trigger on a low-level input signal; an input configured as Manual Mode lets the arm be dragged freely while that input stays low.

    Evidence · 2 citations

    The following functions (if configured), can be triggered by low-level input signals.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.2 Controller IO, IO Function

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    When set as Manual Mode, the robotic arm can be dragged freely when the input signal remains low level.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.2, Manual Mode

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  58. Confidence: Verifiediface-011

    The record says

    In the Python SDK the arm is controlled through the XArmAPI class (imported from xarm.wrapper), whose first argument is the controller's IP address.

    Evidence · 2 citations

    from xarm.wrapper import XArmAPI

    xArm-Python-SDK example 0000-template.py · UFACTORY · Example 0000-template.py, imports

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    :param port: ip-address(such as '192.168.1.185')

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · class XArmAPI, __init__, parameter 'port'

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  59. Confidence: Verifiedops-036

    The record says

    SDK start-up (UFACTORY template, step 4): enable motion with motion_enable(enable=True).

    Evidence · 2 citations

    4. Enable motion

    xArm-Python-SDK example 0000-template.py · UFACTORY · Docstring, step 4

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    arm.motion_enable(enable=True)

    xArm-Python-SDK example 0000-template.py · UFACTORY · code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  60. Confidence: Verifiedops-037

    The record says

    SDK start-up (UFACTORY template, step 5): set the mode, e.g. set_mode(0) for position control.

    Evidence · 2 citations

    5. Setting mode

    xArm-Python-SDK example 0000-template.py · UFACTORY · Docstring, step 5

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    arm.set_mode(0)

    xArm-Python-SDK example 0000-template.py · UFACTORY · code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  61. Confidence: Verifiedops-038

    The record says

    SDK start-up (UFACTORY template, step 6): set the state with set_state(state=0); the arm then accepts motion commands.

    Evidence · 2 citations

    6. Setting state

    xArm-Python-SDK example 0000-template.py · UFACTORY · Docstring, step 6

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    arm.set_state(state=0)

    xArm-Python-SDK example 0000-template.py · UFACTORY · code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  62. Confidence: Verifiediface-024

    The record says

    The Python SDK sends commands to the controller on TCP port 502 (TCP_CONTROL_PORT).

    Evidence · 1 citation

    TCP_CONTROL_PORT = 502

    xArm-Python-SDK source, xarm/core/config/x_config.py · UFACTORY · class SocketConf

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  63. Confidence: Verifiediface-097

    The record says

    In mode 0, set_servo_angle makes point-to-point joint moves, set_position and set_position_aa make straight-line Cartesian moves, move_arc_lines blends lines with arcs, and move_circle makes circular moves.

    Evidence · 3 citations

    Mode 0: Position Control Mode | To achieve the point-to-point motion of joint space (unit: degree/radian), the speed between each command is discontinuous.

    UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 0, Joint Motion

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Python Example: [set_position]

    UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 0, Linear Motion

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Python Example: [move_circle]

    UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 0, Circular Motion

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  64. Confidence: Verifiediface-098

    The record says

    The SDK's set_position and set_servo_angle work in the base coordinate system; pass wait=True to block until the move finishes.

    Evidence · 2 citations

    4. This interface is only used in the base coordinate system.

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · set_position, note 4

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    If you want to wait for the robot to complete this action and then return, please set the parameter wait to True.

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · set_position, note 3

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  65. Confidence: Verifiediface-124

    The record says

    Every Python SDK call returns a code; 0 means success.

    Evidence · 1 citation

    - 0: success

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · API Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  66. Confidence: Verifiediface-013

    The record says

    Units differ by interface: the Python SDK and Blockly use degrees for joint angles and roll/pitch/yaw, while the raw communication protocol uses radians; positions are in millimetres in all three.

    Evidence · 2 citations

    | J1~J6 | degree° | degree° | radianrad |

    UFACTORY 850 Hardware Manual (online), Preface · UFACTORY · Preface, 'Unit Definition' table, row J1~J6

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Parameter | Python-SDK | Blockly | Communication Protocol |

    UFACTORY 850 Hardware Manual (online), Preface · UFACTORY · Preface, 'Unit Definition' table, header

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  67. Confidence: Verifiediface-012

    The record says

    The Python SDK works in degrees by default: the XArmAPI constructor parameter is_radian defaults to False.

    Evidence · 1 citation

    :param is_radian: set the default unit is radians or not, default is False

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · class XArmAPI, __init__, parameter 'is_radian'

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  68. Confidence: Verifiediface-026

    The record says

    Separately from its private protocol, the controller accepts standard Modbus TCP commands on port 502, at the controller's IP address; the port cannot be changed.

    Evidence · 1 citation

    This page allows you to send standard Modbus TCP command, the IP is controller ip, port 502, can not be modified.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.6 Modbus TCP

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  69. Confidence: Verifiediface-034

    The record says

    The Python SDK defines automatic state-report ports 30001 (normal), 30002 (rich) and 30003 (real-time/develop) on the controller.

    Evidence · 3 citations

    TCP_REPORT_NORM_PORT = 30001

    xArm-Python-SDK source, xarm/core/config/x_config.py · UFACTORY · class SocketConf

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    TCP_REPORT_RICH_PORT = 30002

    xArm-Python-SDK source, xarm/core/config/x_config.py · UFACTORY · class SocketConf

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    TCP_REPORT_REAL_PORT = 30003

    xArm-Python-SDK source, xarm/core/config/x_config.py · UFACTORY · class SocketConf

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  70. Confidence: Inferrediface-035

    The record says

    The automatic report on port 30003 is sent at 100 Hz; the reports on ports 30001 and 30002 are sent at 5 Hz.

    Why we infer this: Both sources are UFACTORY documents written for the xArm series (the xarm_ros report_type section falls after chapter 4.7, which the ReadMe says 850 users should not follow, and the Developer Manual covers xArm 5/6/7). The 850 uses the same SDK report ports (x_config.py), so the same rates very likely apply, but no 850-specific document states them.

    Evidence · 4 citations

    | dev | 30003 | 100Hz | Not Available | Available |

    xarm_ros ReadMe (ROS 1, master branch) · UFACTORY · 5.7.10 'report_type' argument, table

    © UFACTORY Inc., xArm-Developer/xarm_ros, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    | normal | 30001 | 5Hz | Not Available | Not Available |

    xarm_ros ReadMe (ROS 1, master branch) · UFACTORY · 5.7.10 'report_type' argument, table

    © UFACTORY Inc., xArm-Developer/xarm_ros, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Default Port 30003 Frequency 100Hz

    xArm Developer Manual V2.0.1 (PDF) · UFACTORY · 2.1.6 Automatic Reporting Format, REPORT_TCP_DEVELOP (p.108)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | rich | 30002 | 5Hz | Available | Available |

    xarm_ros ReadMe (ROS 1, master branch) · UFACTORY · 5.7.10 'report_type' argument, table

    © UFACTORY Inc., xArm-Developer/xarm_ros, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  71. Confidence: Verifiediface-052

    The record says

    The internal 24 V I/O supply (PWR-GND) delivers 23-30 V (24 V typical) at up to 1.8 A.

    Evidence · 2 citations

    | [PWR - GND] | Current | 0 | - | 1.8 | A |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, power supply table, Built-in 24V row (Current)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    [PWR - GND] Voltage 23 24 30 V

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.3 electrical specifications, Built-in 24V Power Supply

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  72. Confidence: Verifiediface-053

    The record says

    An external I/O supply must provide 20-30 V (24 V typical); the input accepts up to 3 A.

    Evidence · 2 citations

    | [24V - 0V] | Current | 0 | - | 3 | A |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, power supply table, External 24V row (Current)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | [24V - 0V] | Voltage | 20 | 24 | 30 | V |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, power supply table, External 24V row (Voltage)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  73. Confidence: Verifiediface-054

    The record says

    Controller digital outputs are NPN open-collector (open-drain) outputs that pull the terminal to GND when on, rated at up to 100 mA.

    Evidence · 2 citations

    The digital output is implemented in the form of NPN. When the digital output is enabled, the corresponding connector will be driven to GND.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.2.2 Controller Digital Output(CO)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | [COx] | Current | 0 | - | 100 | mA |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, digital I/O table, [COx] Current

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  74. Confidence: Verifiediface-056

    The record says

    Controller digital inputs have a weak pull-up, so a floating input reads high; an input is ON at 0-5 V (low level) and OFF at 15-30 V.

    Evidence · 3 citations

    The digital input is implemented in the form of a weak pull-up resistor. This means that the reading of the floating input is always high.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.2.1 Controller Digital Input(CI)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | [EIx/SIx/CIx/RIx] | ON Area(low level) | 0 | - | 5 | V |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4, digital I/O table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    [EIx/SIx/CIx/RIx] OFF Area 15 - 30 V

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.3 electrical specifications, Digital Input

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  75. Confidence: Verifiediface-057

    The record says

    Configured I/O functions on the controller inputs are triggered by a low-level input signal.

    Evidence · 1 citation

    The following functions (if configured), can be triggered by low-level input signals.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.2 Controller IO, IO Function

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  76. Confidence: Verifiediface-065

    The record says

    Each controller analog output can source up to 20 mA.

    Evidence · 1 citation

    | [AOx - AG] | Current | 0 | - | 20 | mA |

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.3, table, [AOx - AG] Current

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  77. Confidence: Verifiediface-066

    The record says

    The controller's analog I/O is not isolated from the control box, so the external device should share the control box's GND, and shielded or twisted-pair cable is recommended.

    Evidence · 2 citations

    The device and Control box use the same ground (GND). The analog I/O is not isolated from the control box.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.3 Controller Analog IO(AIAO)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Use shielded cables or twisted pairs.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.3 Controller Analog IO(AIAO)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  78. Confidence: Verifiediface-084

    The record says

    Tool digital inputs have a pull-down, so a floating input reads low; logic low is at most 1.0 V and logic high at least 1.6 V.

    Evidence · 3 citations

    The digital input is already equipped with a pull-down resistor. This means that the reading of the floating input is always low.

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2.1 Tool Digital Input(TI)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Logic High Voltage | 1.6 | - | - | V |

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2.1 table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Logic Low Voltage - - 1.0 V

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2.1 Tool Digital Input, electrical specifications

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  79. Confidence: Verifiediface-085

    The record says

    Tool digital outputs are NPN open-collector outputs rated at up to 100 mA sink current, with no current protection.

    Evidence · 3 citations

    The digital output is implemented in the form of NPN with an open collector (OC).

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2.2 Tool Digital Output(TO)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Sink Current | 0 | - | 100 | mA |

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2.2 table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    There is no current protection on the digital output of the tool

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2.2 CAUTION

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  80. Confidence: Verifiediface-086

    The record says

    Tool analog inputs are non-differential, 12-bit, and accept -0.5 to 3.3 V in voltage mode; a 4-20 mA current mode is also described.

    Evidence · 4 citations

    The tool analog input is a non-differential input.

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2.3 Tool Analog Input(TAI)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Input Voltage in Voltage Mode | -0.5 | - | 3.3 | V |

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2.3 table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Pull-down Resistors in the 4mA to 20mA Current Range

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2.3 table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Resolution - 12 - Bit

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.2.3 Tool Analog Input, electrical specifications

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  81. Confidence: Verifiediface-087

    The record says

    The tool-end RS-485 device ID is 9; devices that speak standard Modbus RTU can be tested from UFACTORY Studio's Settings > Externals > Modbus RTU page.

    Evidence · 2 citations

    The id of our end tool is 9.

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.4.4 Tool RS485

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    If end effector supports standard Modbus RTU, user can debug it via '[Settings-Externals-Modbus RTU]

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.4.4 Tool RS485

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  82. Confidence: Verifiediface-088

    The record says

    The default RS-485 baud rate on UFACTORY Studio's Modbus RTU page is 2000000; choosing an end effector in Studio sets its default baud rate (2000000 for the xArm Gripper, 115200 for Robotiq grippers).

    Evidence · 2 citations

    Sets the baud rate, the default baud rate is 2000000.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.2.5 Modbus RTU

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    the default baud rate of xArm Gripper is 2000000, the default baud rate of Robotiq gripper is 115200.

    UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.1 End Effector

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  83. Confidence: Verifiediface-119

    The record says

    When the controller has an error or warning, it is returned in the reply to the next command the user sends; UFACTORY Studio's manual says this feedback is passive, not pushed.

    Evidence · 1 citation

    This error/warning signal will be fed back when the user sends any command; The feedback is passive and not actively reported.

    UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY · 12.1 Control Box Error Code and Handling

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  84. Confidence: Verifiediface-122

    The record says

    UFACTORY documents error codes in separate families: API return codes, controller warning codes, controller error codes, servo (joint) error codes, and codes for the gripper, BIO gripper, linear motor and six-axis force-torque sensor.

    Evidence · 3 citations

    - [Controller Error Code](#controller-error-code)

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Table of contents

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - [Servo Error Code](#servo-error-code)

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Table of contents

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - [API Code](#api-code)

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Table of contents

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  85. Confidence: Verifiediface-123

    The record says

    The Studio manual prefixes codes by family: C for control box errors (e.g. C31), S for joint servo errors (e.g. S23) and A for Python SDK codes (e.g. A-2).

    Evidence · 3 citations

    | C31

    UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY · 12.1 table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | S23

    UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY · 12.2 table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | A-2

    UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY · 12.3 table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  86. Confidence: Verifiediface-125

    The record says

    API code -1 means the arm is not connected, and -2 means it is not ready (motion not enabled or state not set).

    Evidence · 2 citations

    - -1: xArm is disconnect or not connect

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · API Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - -2: xArm is not ready, may be the motion is not enable or not set state

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · API Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  87. Confidence: Verifiediface-126

    The record says

    API code 1 means there are uncleared errors, 2 means uncleared warnings, and 9 means the state is not ready to move.

    Evidence · 3 citations

    - 1: there are errors that have not been cleared

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · API Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - 2: there are warnings that have not been cleared

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · API Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - 9: state is not ready to move

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · API Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  88. Confidence: Verifiediface-127

    The record says

    Controller error 1 means the control box emergency stop button is pushed, 2 means the control box emergency I/O was triggered, and 3 means the three-state switch's emergency stop was pressed.

    Evidence · 3 citations

    - 1: The Emergency Stop Button is pushed

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Error Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - 2: The Emergency IO of the Control Box is triggered

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Error Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - 3: The Emergency Stop Button of the Three-state Switch is pressed

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Error Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  89. Confidence: Verifiediface-129

    The record says

    Controller error 22 is a self-collision error, 23 means a joint angle is past its limit, and 24 means speed is over its limit.

    Evidence · 3 citations

    - 22: Self-Collision Error

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Error Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - 23: Joints Angle Exceed Limit

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Error Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - 24: Speed Exceeds Limit

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Error Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  90. Confidence: Verifiediface-130

    The record says

    The Python SDK's controller error list gives error 31 as 'Collision Caused Abnormal Current'.

    Evidence · 1 citation

    - 31: Collision Caused Abnormal Current

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Error Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  91. Confidence: Verifiediface-131

    The record says

    Controller error 35 means the arm reached its safety boundary, and 37 means abnormal movement in manual mode.

    Evidence · 2 citations

    - 35: Safety Boundary Limit

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Error Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - 37: Abnormal movement in Manual Mode

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Error Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  92. Confidence: Verifiediface-147

    The record says

    The Python SDK has set_simulation_robot(on_off) ('Set the simulation robot', True/False) and an is_simulation_robot property. In the SDK code, set_simulation_robot runs only while the SDK is connected to a controller and sends a register write (SET_SIMULATION_ROBOT) to that controller: it is a flag set on a live controller connection, not a separate simulator.

    Evidence · 5 citations

    Set the simulation robot > > :param on_off: True/False

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · def set_simulation_robot

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Is simulation robot or not

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · is_simulation_robot property

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    @xarm_is_connected(_type='set') def set_simulation_robot(self, on_off): ret = self.arm_cmd.set_simulation_robot(on_off)

    xArm-Python-SDK source, xarm/x3/base.py · UFACTORY · class Base, set_simulation_robot

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    def set_simulation_robot(self, on_off): txdata = [int(on_off)] return self.set_nu8(XCONF.UxbusReg.SET_SIMULATION_ROBOT, txdata, 1)

    xArm-Python-SDK source, xarm/core/wrapper/uxbus_cmd.py · UFACTORY · set_simulation_robot

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    if self.connected: return func(self, *args, **kwargs) else: logger.error('xArm is not connected')

    xArm-Python-SDK source, xarm/x3/decorator.py · UFACTORY · xarm_is_connected

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  93. Confidence: Inferrediface-148

    The record says

    The controller that the SDK simulation flag is set on is the real 850 control box the program is connected to, so a program using the flag is still connected to a controller that drives the real arm.

    Why we infer this: Verified: set_simulation_robot is a register write sent over the SDK's live controller connection (iface-147); the SDK connects to a controller by its IP address (ops-035); UFACTORY Studio's simulated-arm mode needs a real arm connected and applies its settings to the real arm (iface-142, safety-034). Inferred: no fetched UFACTORY document describes a stand-alone controller for the SDK to connect to, so the connection is to the real 850 controller; the SDK documentation itself does not say what the controller does while the flag is on.

    Evidence · 3 citations

    arm = XArmAPI(ip, do_not_open=True)

    xArm-Python-SDK example 0000-template.py · UFACTORY · code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    return self.set_nu8(XCONF.UxbusReg.SET_SIMULATION_ROBOT, txdata, 1)

    xArm-Python-SDK source, xarm/core/wrapper/uxbus_cmd.py · UFACTORY · set_simulation_robot

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Switch to real or simulation robotic arm, both mode needs to connect to a real robotic arm.

    UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.6 Real & Simulation robotic arm

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  94. Confidence: Inferrediface-144

    The record says

    UFACTORY's Modbus TCP developer manual tells developers to learn the user manual and UFACTORY Studio first, because programming the arm directly over the protocol carries more risk.

    Why we infer this: The Developer Manual V2.0.1 is written for the xArm series and does not name the 850; the 850 uses the same private TCP protocol family, SDKs and UFACTORY Studio, so the advice applies equally, but this is an inference.

    Evidence · 1 citation

    Before meeting the above conditions, we strongly recommend operators should refer to 'xArm User Manual' and program xArm robot by xArm Studio.

    xArm Developer Manual V2.0.1 (PDF) · UFACTORY · 1.1 Notice (p.3)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  95. Confidence: Verifiediface-015

    The record says

    The current C++ SDK supports Linux and Windows, with macOS support in beta.

    Evidence · 1 citation

    The current version supports Linux/windows/MacOS(beta)

    xArm-C++-SDK ReadMe · UFACTORY · Overview

    © UFACTORY Inc., xArm-Developer/xArm-CPLUS-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  96. Confidence: Verifiediface-017

    The record says

    xarm_ros2 keeps one code branch per ROS 2 version; its tested environments include Ubuntu 22.04 with ROS Humble and Ubuntu 24.04 with ROS Jazzy (Foxy, Galactic and Rolling are also listed).

    Evidence · 3 citations

    - Ubuntu 22.04 + ROS Humble

    xarm_ros2 ReadMe (humble branch) · UFACTORY · 1. Introduction, environment list

    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - Ubuntu 24.04 + ROS Jazzy

    xarm_ros2 ReadMe (humble branch) · UFACTORY · 1. Introduction, environment list

    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Please switch to the corresponding code branch according to different ros2 versions

    xarm_ros2 ReadMe (humble branch) · UFACTORY · 1. Introduction

    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  97. Confidence: Verifiedsafety-009

    The record says

    UFACTORY says no people or other equipment should be in the 850's working area while the arm is operating.

    Evidence · 1 citation

    When the robotic arm is in operation, make sure no people or other equipment are in the working area.

    UFACTORY 850 Hardware Manual (online), 1. Safety · UFACTORY · 1.3, DANGER list

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  98. Confidence: Verifiediface-146

    The record says

    UFACTORY's own 850 documentation names the Python, C++ and ROS SDKs as programming options for the 850, and the 850 User Manual V2.3.0 points 850 users to xarm_ros and xarm_ros2 as the '850-ROS-library'. So the xArm-Python-SDK and xArm-C++-SDK documentation and code apply to the 850. The ROS READMEs apply only in part: the xarm_ros README tells Lite 6/850 users to follow it only up to chapter 4.7 and then switch to a separate Lite6/UF850 ReadMe, and the xarm_ros2 README marks its additional tests as xArm-only. A claim drawn from the ROS READMEs is therefore Verified for the 850 only where the quoted text, or the section it sits in, names the 850 or uf850. None of this extends to the Modbus TCP manual or the xArm Developer Manual.

    Evidence · 6 citations

    Programming UFACTORY Studio, Python/C++/ROS

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · 8. Technical Specifications, table 'UFACTORY 850', 'Programming' row

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    The operator must be trained to guarantee a correct operation procedure when using SDK(Python/ROS/C++) and graphical interface UFactory studio.

    UFACTORY 850 Hardware Manual (online), 1. Safety · UFACTORY · 1. Safety, introduction

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Enable button on the UFACTOR Studio or Python SDK motion_enable(true)

    UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.1.2 Emergency Stop Button, restart steps

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    850-ROS-library: Users can view related documents at https://github.com/xArm-Developer/xArm_ros https://github.com/xArm-Developer/xarm_ros2

    UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · Error handling, re-power-on steps

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    For **UFACTORY Lite 6/850** users, make sure you have followed the instructions before chapter 4.7 on this page, then switch to [ReadMe for Lite6/UF850](./ReadMe_others.md).

    xarm_ros ReadMe (ROS 1, master branch) · UFACTORY · Top of README

    © UFACTORY Inc., xArm-Developer/xarm_ros, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Below additional tests are just for xArm

    xarm_ros2 ReadMe (humble branch) · UFACTORY · §5.7

    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  99. Confidence: Verifiediface-018

    The record says

    In xarm_ros2 the 850 driver is started with 'ros2 launch xarm_api uf850_driver.launch.py robot_ip:=<controller IP>'.

    Evidence · 1 citation

    ros2 launch xarm_api uf850_driver.launch.py robot_ip:=192.168.1.181

    xarm_ros2 ReadMe (humble branch) · UFACTORY · 5.4 xarm_api, 'Use command line (UFACTORY850)'

    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  100. Confidence: Verifiediface-019

    The record says

    For the 850, the xarm_ros2 service examples use the /ufactory namespace (for example /ufactory/set_mode), whereas the xArm 6 examples use /xarm.

    Evidence · 3 citations

    ros2 service call /ufactory/set_mode xarm_msgs/srv/SetInt16 "{data: 0}"

    xarm_ros2 ReadMe (humble branch) · UFACTORY · 5.4 xarm_api, UFACTORY850 example

    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    ros2 service call /xarm/set_mode xarm_msgs/srv/SetInt16 "{data: 0}"

    xarm_ros2 ReadMe (humble branch) · UFACTORY · 5.4 xarm_api, xArm example

    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    the services provided by xArm series and Lite 6 have different namespaces

    xarm_ros2 ReadMe (humble branch) · UFACTORY · 5.4 xarm_api, note

    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  101. Confidence: Verifiediface-020

    The record says

    xarm_ros2 provides MoveIt launch files for the 850: uf850_moveit_fake.launch.py for a simulated arm and uf850_moveit_realmove.launch.py for the real arm.

    Evidence · 2 citations

    ros2 launch xarm_moveit_config uf850_moveit_fake.launch.py [add_gripper:=true]

    xarm_ros2 ReadMe (humble branch) · UFACTORY · 5.6 xarm_moveit_config, simulated

    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    ros2 launch xarm_moveit_config uf850_moveit_realmove.launch.py robot_ip:=192.168.1.181 [add_gripper:=true]

    xarm_ros2 ReadMe (humble branch) · UFACTORY · 5.6 xarm_moveit_config, real arm

    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  102. Confidence: Verifiediface-099

    The record says

    Mode 1 is servo mode: set_servo_angle_j and set_servo_cartesian need it and run only the latest target received, with no buffer.

    Evidence · 2 citations

    Note: the use of the set_servo_angle_j interface must first be set to this mode

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · set_mode, mode 1 note

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Mode 1: Servo(ServoJ) Mode | This command has no buffer, only execute the latest received target point

    UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 1, Servo Joint Motion

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  103. Confidence: Verifiediface-100

    The record says

    In servo mode the controller accepts commands at up to 250 Hz, and commands sent faster are lost. UFACTORY suggests issuing smoothed, interpolated track points at a fixed frequency, preferably 100 Hz or 200 Hz, and for Cartesian servo recommends a command rate within 30-250 Hz.

    Evidence · 4 citations

    In servoj mode, the maximum receiving frequency of the control box is 250 Hz

    UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 1

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    It is recommended that the frequency of user issuing commands be controlled within the range of 30 Hz-250 Hz.

    UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 1, Servo Cartesian Motion

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    If the frequency of sending commands exceeds 250Hz, the redundant commands will be lost.

    UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 1, Servo Joint Motion

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    issue a smoothed track point with interpolation at a certain frequency (preferably 100Hz or 200 Hz)

    UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 1, Servo Joint Motion, suggested use

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  104. Confidence: Verifiediface-075

    The record says

    By default the SDK's set_cgpio_digital queues the output change in the motion queue (sync=True); sync=False applies it immediately (firmware 2.4.101 or later).

    Evidence · 2 citations

    :param sync: whether to execute in the motion queue, set to False to execute immediately(default is True)

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · set_cgpio_digital, parameter sync

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    only available if firmware_version >= 2.4.101

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · set_cgpio_digital, parameter sync note

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  105. Confidence: Verifiediface-132

    The record says

    Controller warning 11 means the command queue (uxbus queue) is full, and warning 14 means a command has no solution.

    Evidence · 2 citations

    - 11: uxbus queue is full

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Warn Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    - 14: command has no solution

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Warn Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  106. Confidence: Inferrediface-031

    The record says

    A PLC can start stored Blockly projects over Modbus TCP by writing up to 16 holding registers from address 0x30 with function code 0x10; each value selects a project by number (value 1 runs project '00001'), and the projects run in order.

    Why we infer this: Verified: UFACTORY's ModbusTCP User Instructions (UF_ModbusTCP_Manual, in the xArm-Python-SDK repository) state this. That manual names no robot model, and iface-026 establishes that the 850 controller accepts standard Modbus TCP on port 502, but no 850-specific UFACTORY document gives this register map or its details; the 850 bridging records (iface-145, iface-146) cover UFACTORY Studio and the SDKs, not this manual. Verified: UFACTORY's release note for firmware V2.7.0 lists, in one firmware change list, a Modbus TCP change and compatibility for xArm 850 arms whose serial number has an 'E' as the third character from the end (lim-030). Inferred: the 850 therefore runs the same series firmware that carries this Modbus TCP interface, and the interface very probably behaves the same on the 850, but this is not confirmed for the 850 until an 850 document or the physical controller shows it.

    Evidence · 3 citations

    Quote not shown (over 40 words). See the source at: Appendix, Holding Registers 48~63.

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Holding Registers 48~63

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Modbus TCP: added a method to trigger trajectory execution or Python scripts.

    UFACTORY Release Note v2.7.0 · UFACTORY · v2.7.0, 'Firmware V2.7.0' list

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Added compatibility for xArm XX1305-series and xArm 850 arms whose serial number has an "E" as the third character from the end.

    UFACTORY Release Note v2.7.0 · UFACTORY · v2.7.0, 'Firmware V2.7.0' list

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  107. Confidence: Inferrediface-032

    The record says

    Controller digital I/O can be read and written over Modbus TCP: coils 0-31 map the controller digital outputs (16 currently used) and discrete inputs 0-31 map the controller digital inputs (16 currently used).

    Why we infer this: Verified: UFACTORY's ModbusTCP User Instructions (UF_ModbusTCP_Manual, in the xArm-Python-SDK repository) state this. That manual names no robot model, and iface-026 establishes that the 850 controller accepts standard Modbus TCP on port 502, but no 850-specific UFACTORY document gives this register map or its details; the 850 bridging records (iface-145, iface-146) cover UFACTORY Studio and the SDKs, not this manual. Verified: UFACTORY's release note for firmware V2.7.0 lists, in one firmware change list, a Modbus TCP change and compatibility for xArm 850 arms whose serial number has an 'E' as the third character from the end (lim-030). Inferred: the 850 therefore runs the same series firmware that carries this Modbus TCP interface, and the interface very probably behaves the same on the 850, but this is not confirmed for the 850 until an 850 document or the physical controller shows it.

    Evidence · 4 citations

    | 0 ~ 31 | 0x00 ~ 0x1F | 32 controller Digital Output (Now only 16 effective) |

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Coil Registers

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    | 0 ~ 31 | 0x00 ~ 0x1F | 32 controller Digital Input (Now only 16 effective) |

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Discrete Input Registers

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Modbus TCP: added a method to trigger trajectory execution or Python scripts.

    UFACTORY Release Note v2.7.0 · UFACTORY · v2.7.0, 'Firmware V2.7.0' list

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Added compatibility for xArm XX1305-series and xArm 850 arms whose serial number has an "E" as the third character from the end.

    UFACTORY Release Note v2.7.0 · UFACTORY · v2.7.0, 'Firmware V2.7.0' list

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  108. Confidence: Inferrediface-029

    The record says

    In the Modbus TCP map, holding register 32 (0x20) is the robot mode and holding register 33 (0x21) is the robot state.

    Why we infer this: Verified: UFACTORY's ModbusTCP User Instructions (UF_ModbusTCP_Manual, in the xArm-Python-SDK repository) state this. That manual names no robot model, and iface-026 establishes that the 850 controller accepts standard Modbus TCP on port 502, but no 850-specific UFACTORY document gives this register map or its details; the 850 bridging records (iface-145, iface-146) cover UFACTORY Studio and the SDKs, not this manual. Verified: UFACTORY's release note for firmware V2.7.0 lists, in one firmware change list, a Modbus TCP change and compatibility for xArm 850 arms whose serial number has an 'E' as the third character from the end (lim-030). Inferred: the 850 therefore runs the same series firmware that carries this Modbus TCP interface, and the interface very probably behaves the same on the 850, but this is not confirmed for the 850 until an 850 document or the physical controller shows it.

    Evidence · 4 citations

    | 32 | 0x20 | Robot Mode |

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Holding Registers

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    | 33 | 0x21 | Robot State |

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Holding Registers

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Modbus TCP: added a method to trigger trajectory execution or Python scripts.

    UFACTORY Release Note v2.7.0 · UFACTORY · v2.7.0, 'Firmware V2.7.0' list

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Added compatibility for xArm XX1305-series and xArm 850 arms whose serial number has an "E" as the third character from the end.

    UFACTORY Release Note v2.7.0 · UFACTORY · v2.7.0, 'Firmware V2.7.0' list

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  109. Confidence: Inferrediface-030

    The record says

    In the Modbus TCP map, input register 32 (0x20) holds the robot error code and input register 33 (0x21) the warning code.

    Why we infer this: Verified: UFACTORY's ModbusTCP User Instructions (UF_ModbusTCP_Manual, in the xArm-Python-SDK repository) state this. That manual names no robot model, and iface-026 establishes that the 850 controller accepts standard Modbus TCP on port 502, but no 850-specific UFACTORY document gives this register map or its details; the 850 bridging records (iface-145, iface-146) cover UFACTORY Studio and the SDKs, not this manual. Verified: UFACTORY's release note for firmware V2.7.0 lists, in one firmware change list, a Modbus TCP change and compatibility for xArm 850 arms whose serial number has an 'E' as the third character from the end (lim-030). Inferred: the 850 therefore runs the same series firmware that carries this Modbus TCP interface, and the interface very probably behaves the same on the 850, but this is not confirmed for the 850 until an 850 document or the physical controller shows it.

    Evidence · 4 citations

    | 32 | 0x20 | Robot Error code |

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Input Registers

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    | 33 | 0x21 | Robot Warning code |

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Input Registers

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Modbus TCP: added a method to trigger trajectory execution or Python scripts.

    UFACTORY Release Note v2.7.0 · UFACTORY · v2.7.0, 'Firmware V2.7.0' list

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Added compatibility for xArm XX1305-series and xArm 850 arms whose serial number has an "E" as the third character from the end.

    UFACTORY Release Note v2.7.0 · UFACTORY · v2.7.0, 'Firmware V2.7.0' list

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  110. Confidence: Verifiediface-121

    The record says

    get_err_warn_code() returns the controller's current error code and warning code; the has_error and has_warn properties tell whether either is present.

    Evidence · 2 citations

    :return: tuple((code, [error_code, warn_code])), only when code is 0, the returned result is correct.

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · get_err_warn_code, return

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Controller have an error or not

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · Attributes, has_error

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  111. Confidence: Verifiediface-120

    The record says

    With reporting enabled, the Python SDK can call a user function whenever the error or warning code changes (register_error_warn_changed_callback), passing error_code and warn_code.

    Evidence · 2 citations

    Register the error code or warn code changed callback, only available if enable_report is True

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · register_error_warn_changed_callback

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    arm.register_error_warn_changed_callback(hangle_err_warn_changed)

    xArm-Python-SDK example 0000-template.py · UFACTORY · Example 0000-template.py

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  112. Confidence: Verifiediface-118

    The record says

    The SDK's mode property is available only over the socket connection with enable_report on.

    Evidence · 1 citation

    xArm mode, only available in socket way and enable_report is True

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · Attributes, mode

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  113. Kind: RecommendationThis project's simulation and agent design, not the physical celliface-149

    Project advice

    Command the S2 agent's motion through the Python SDK in position mode (mode 0), sending only moves the supervisor has checked, and read the arm's state from the SDK's automatic reports. Do not stream servo-mode targets, and deny the SDK calls that change safety settings.

    This is advice from this project, based on: iface-146 Verified iface-011 Verified iface-097 Verified iface-098 Verified iface-099 Verified iface-100 Verified safety-079 Verified iface-119 Verified iface-034 Verified iface-035 Inferred iface-018 Verified safety-141 Recommendation

    Why: The Python SDK applies to the 850 through UFACTORY's own 850 documentation (iface-146) and drives the arm through XArmAPI (iface-011). In mode 0, joint and straight-line moves are complete commands that can block until they finish (iface-097, iface-098), so each one can be checked before it is sent. Servo mode runs only the latest target, with no buffer, at the arm's fastest speed, and wants a steady 100 Hz or 200 Hz stream (iface-099, iface-100, safety-079): a late or wrong target moves the arm before anything can check it. The controller returns an error only in the reply to the next command (iface-119), so state is read from the automatic report ports (iface-034), whose rates are Inferred (iface-035). ROS 2 is the alternative (iface-018), but its README material is Verified for the 850 only where it names the 850 (iface-146). The SDK can also change safety settings, which safety-141 says to deny.

  114. Kind: RecommendationThis project's simulation and agent design, not the physical cellsafety-141

    Project advice

    Deny the M5 S2 agent the SDK calls that change collision sensitivity, collision detection, reduced mode or the safety boundary, or gate them behind human approval.

    This is advice from this project, based on: safety-088 Inferred safety-006 Verified safety-066 Verified safety-067 Verified

    Why: The agent could otherwise alter the arm's safety configuration through the SDK (safety-088), and UFACTORY treats any such change as creating a new system that needs a new risk assessment (safety-006). A reviewed human decision is the only point at which that re-assessment can happen.

  115. Confidence: Verifiedsafety-079

    The record says

    In servo (ServoJ) mode, the arm moves to the given joint position at the fastest speed (180°/s) with no command buffer, executing only the latest target received; UFACTORY notes that this is similar to a step response and warns, for safety, not to send a distant target in one step.

    Evidence · 2 citations

    (Note: this execution is similar to the step response, for safety considerations, do not give a distant target position at once).

    UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · Mode 1: Servo(ServoJ) Mode

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Move to the given joint position with the fastest speed (180°/s) and acceleration (unit: degree/radian). This command has no buffer, only execute the latest received target point

    UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · Mode 1: Servo(ServoJ) Mode, Servo Joint Motion

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  116. Kind: RecommendationThis project's simulation and agent design, not the physical celliface-150

    Project advice

    Bring station handshake signals, such as S4's 'all clear and ready', into S2 as wired digital inputs set as General Input and read by the program through the SDK, rather than as network messages. Use Modbus TCP registers only after their map has been checked on the S2 controller.

    This is advice from this project, based on: int-018 Verified int-022 Gap, awaiting cell access iface-058 Verified iface-060 Verified iface-073 Verified iface-069 Verified iface-070 Verified iface-029 Inferred iface-031 Inferred iface-146 Verified

    Why: The controller's digital inputs and the SDK's digital I/O calls are documented for the 850 (iface-058, iface-073, iface-060). Every Modbus TCP register record is Inferred, because the Modbus TCP manual names no robot model (iface-029, iface-031, iface-146). A wired input changes only when the device wired to it does, while a network message can come from anything that reaches the network. The costs: each line carries one on or off signal, both sides need a common GND and open-drain outputs (iface-069), and cables over 30 m need testing (iface-070). S2 consumes S4's 'all clear and ready' signal (int-018), but the physical I/O between S2 and S4 is not yet defined (int-022).

  117. Confidence: Verifiediface-073

    The record says

    In the Python SDK, controller digital I/O numbers 0-7 map to CI0-CI7 and CO0-CO7, and numbers 8-15 map to DI0-DI7 and DO0-DO7 (get_cgpio_digital / set_cgpio_digital).

    Evidence · 2 citations

    :param ionum: 0~7(CI0~CI7), 8~15(DI0~DI7) or None(both 0~15), default is None

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · get_cgpio_digital, parameter ionum

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    :param ionum: 0~7(CO0~CO7), 8~15(DO0~DO7)

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · set_cgpio_digital, parameter ionum

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  118. Kind: GapAwaiting cell accessint-022

    Not known

    The physical I/O that will carry signals between S2 and S4 (and the other stations) is not defined. It may differ from the simulation's signals.

    Awaiting cell access: this could be confirmed or corrected once the physical S2 cell can be observed.

    Related: int-018 Verified

    Evidence · 1 citation

    IO for physical may be different

    Owner statements, 2026-09-21 (verbatim) · Derek Stringfellow · Statement S7

    Derek Stringfellow, project record · Project-internal record · retrieved 2026-09-21

  119. Kind: RecommendationThis project's simulation and agent design, not the physical cellsafety-145

    Project advice

    Keep S2's safety path out of the agent and off the network: wire emergency stops and protective devices to the dedicated EI and SI inputs as redundant two-channel pairs, directly or through a safety-rated PLC, and give the agent no part in them. The agent's software stops are process controls, not safeguards.

    This is advice from this project, based on: safety-049 Verified safety-050 Verified safety-053 Verified safety-057 Verified safety-089 Inferred safety-142 Recommendation safety-125 Gap safety-131 Gap, awaiting cell access

    Why: UFACTORY provides dedicated safety inputs, EI for emergency stops and SI for all other protection (safety-049), wired as redundant pairs in two branches (safety-050), and warns never to route a safety signal through a non-safety PLC (safety-057). Most applications need extra emergency stop buttons (safety-053). Software stops leave arm power on and are not the hardware emergency stop (safety-089, safety-142). Whether the controller's software safety functions are enforced independently of the motion-command path is unknown (safety-125), so a safety path through the agent's software would share the failures of the path it is meant to guard. Whether any S2 safety signal passes through a PLC today is unknown (safety-131).

  120. Confidence: Verifiedsafety-050

    The record says

    UFACTORY says all of the 850's safety I/Os come in redundant pairs that must be wired as two separate branches, so that a single I/O failure does not lose the safety function.

    Evidence · 1 citation

    All safety I/Os exist in pairs (redundancy) and must be kept in two separate branches. A single I/O failure should not result in the loss of safety features.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.4.1 Safety IO(EISI)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  121. Kind: Gapsafety-125

    Not known

    No UFACTORY source was found that says whether the software safety functions (collision detection, safety boundary, reduced mode) are enforced independently of the motion-command path. It is also unknown whether the safety boundary checks the tool and the arm's links, or only the TCP; the documentation mentions only the TCP.

    Related: safety-073 Verified

    Evidence · 1 citation

    If the tool center point (TCP) of the robotic arm exceeds the set safety boundary, the robotic arm will stop moving.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.3.1 Safety Boundary

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  122. Confidence: Verifiediface-140

    The record says

    The SDK's emergency_stop() runs set_state(4), then motion_enable(True), then set_state(0), and does not clear errors itself.

    Evidence · 2 citations

    Emergency stop (set_state(4) -> motion_enable(True) -> set_state(0))

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · emergency_stop

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    This interface does not automatically clear the error.

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · emergency_stop, note 1

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  123. Confidence: Inferredsafety-089

    The record says

    Studio's STOP is a software stop that leaves arm power on. SDK set_state(4) and emergency_stop() are software state commands, not the hardware emergency stop, and do not carry its power-removal behaviour. Whether they leave power on is not documented.

    Why we infer this: Verified: Studio's STOP is described as a software stop with power still on (safety-035); SDK emergency_stop() is a sequence of state commands (safety-036); the physical e-stop removes arm power within 300 ms per the manual (safety-025). Inferred: set_state(4) and emergency_stop() act through the same controller state machine as Studio's STOP, so they are different mechanisms from the hardware e-stop and do not carry its behaviour.

    Evidence · 3 citations

    It's a software stop , the power is still on.

    UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.5 Enable & STOP button

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    Emergency stop (set_state(4) -> motion_enable(True) -> set_state(0))

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · def emergency_stop

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    the power supply for the robotic arm will be removed within 300ms.

    UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.1.2 Emergency Stop Button

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  124. Kind: RecommendationThis project's simulation and agent design, not the physical cellsafety-142

    Project advice

    Do not count a software stop (Studio's STOP, SDK set_state(4) or SDK emergency_stop()) as an emergency stop or safeguard in the S2 risk assessment.

    This is advice from this project, based on: safety-089 Inferred safety-035 Verified safety-036 Verified safety-025 Verified

    Why: Software stops leave arm power on and are not the hardware emergency stop (safety-089, safety-035, safety-036), which removes arm power (safety-025). Crediting them as an emergency stop would overstate the protection the cell has.

  125. Kind: GapAwaiting cell accesssafety-131

    Not known

    It is unknown whether any S2 safety signals pass through a PLC, and if so whether it is a safety-rated PLC.

    Awaiting cell access: this could be confirmed or corrected once the physical S2 cell can be observed.

    Evidence · 1 citation

    Never connect a safety signal to a non-safety PLC.

    UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.1

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  126. Kind: Contradictioniface-133

    Sources disagree

    Sources disagree on controller error code C33: the SDK code list and the Studio manual call it a controller GPIO/IO error, while the xArm Developer Manual V2.0.1 calls it abnormal current in the robotic arm.

    Evidence · 3 citations

    - 33: Controller GPIO error

    xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Error Code

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Controller IO Error

    UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY · 12.1 table, C33

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    C33 0x21 Abnormal current in the robotic arm

    xArm Developer Manual V2.0.1 (PDF) · UFACTORY · 3.2 Control Box Error Code (p.117)

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  127. Kind: Gapint-047

    Not known

    What S2 publishes to the other agents or the hub is not defined: placement confirmations, S3 slot updates, faults and error codes, its own ready or busy state, and whether any work-order or traceability data passes through S2 (Q9, Q14).

    Related: int-020 Verified int-048 Inferred

  128. Confidence: Inferredint-048

    The record says

    The information S2's controller can make available includes its robot mode and state, error and warning codes (Modbus TCP registers), and automatic state reports on ports 30001 to 30003. These are candidates for what S2 publishes, not a decided interface.

    Why we infer this: The controller exposes mode, state, error and warning registers (iface-029, iface-030) and state-report ports (iface-034). Anything S2 publishes about its own condition would come from these sources; which of them the IntelliMake hub will carry is undecided (int-047). The register map comes from a series-level document, so this is Inferred.

    Evidence · 3 citations

    | 32 | 0x20 | Robot Mode |

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Holding Registers

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    | 32 | 0x20 | Robot Error code |

    UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY · Appendix, Input Registers

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    TCP_REPORT_NORM_PORT = 30001

    xArm-Python-SDK source, xarm/core/config/x_config.py · UFACTORY · class SocketConf

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

  129. Kind: RecommendationThis project's simulation and agent design, not the physical cellsafety-143

    Project advice

    Do not use UFACTORY Studio's simulated-arm mode or the SDK simulation flag as the simulation substrate for this project's M5 simulation-first work: both act on a connected controller and real arm, so neither isolates the agent from the machine.

    This is advice from this project, based on: iface-142 Verified safety-034 Verified iface-147 Verified iface-148 Inferred

    Why: Studio's simulated-arm mode needs a real arm connected, applies its settings to the real arm and can unlock the real joints (iface-142, safety-034). The SDK flag is a register write on a live controller connection (iface-147), and that controller is the real 850 control box (iface-148). A simulation substrate for simulation-first development must run with no path to the physical arm.

  130. Confidence: Verifiedops-057

    The record says

    The Studio STOP button stops the arm immediately and clears all cached commands; it is a software stop and the power stays on.

    Evidence · 1 citation

    **STOP:** The robotic arm will stop immediately and clear all cache commands. It's a **software stop**, the power is still on.

    UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.5 Enable & STOP button

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  131. Confidence: Verifiedsafety-035

    The record says

    The STOP button in UFACTORY Studio is a software stop that leaves arm power on.

    Evidence · 1 citation

    The robotic arm will stop immediately and clear all cache commands. It's a software stop , the power is still on.

    UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.5 Enable & STOP button

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  132. Confidence: Verifiedops-059

    The record says

    Pressing the control box emergency stop makes the controller decelerate the arm in software, clears all cached commands, and removes power from the arm within 300 ms; the arm will slightly brake and fall.

    Evidence · 2 citations

    Quote not shown (over 40 words). See the source at: 2.1.2 Emergency Stop Button.

    UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.1.2 Emergency Stop Button

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    the posture of the robotic arm will slightly brake and fall.

    UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.1.2 Emergency Stop Button

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  133. Confidence: Verifiedapp-026

    The record says

    The base coordinate system is a Cartesian frame fixed to the arm's mounting base: X is front and back, Y left and right, and Z up and down.

    Evidence · 1 citation

    Quote not shown (over 40 words). See the source at: Glossary, 'Base Coordinate System'.

    UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'Base Coordinate System'

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  134. Kind: Contradictioncomp-056

    Sources disagree

    Sources disagree on the speed of the 850's internal base-to-flange Ethernet cable: gigabit or 1000M CAT5E on the product page and in the online hardware manual, but 100M and 'Standard CAT5' in User Manual V2.3.0.

    Related: comp-055 Verified

    Evidence · 2 citations

    1000M Ethernet cable, which further enhances the stability of the system. Standard CAT5E

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.5 Ethernet Interface (docs site 'UFACTORY 850 硬件手册', English version; names the machine 'UFACTORY 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    through a physical internal 100M Ethernet cable

    UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · Hardware Section 1.2.2.5, Ethernet Interface, p.27 (manual names the machine '850' / 'UFactory 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  135. Kind: Gapiface-043

    Not known

    The factory IP address of an individual 850 controller is not documented; the manuals give only the range 192.168.1.xxx and the reset address 192.168.1.111.

    Evidence · 1 citation

    The default IP of robotic arm is 192.168.1.xxx

    UFACTORY Studio User Manual (online), 3. Connection · UFACTORY · 3.2 Software Connection

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  136. Kind: Contradictioniface-117

    Sources disagree

    The Python SDK and the Studio manual name state 2 differently: the SDK's get_state and state documentation call it 'sleeping', while the Studio manual calls it ready to receive and execute commands.

    Evidence · 2 citations

    2: sleeping

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · get_state / state property, return values

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    Feedback. The robot is ready to receive and execute commands.

    UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.2 State 2

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  137. Kind: Gapint-049

    Not known

    Whether camera C1's or S11's output reaches S2 or the shared hub, and in what form, is not documented.

    Related: int-023 Verified int-024 Verified int-025 Inferred int-026 Assumed, awaiting cell access

  138. Kind: Contradictionsafety-114

    Sources disagree

    UFACTORY documents disagree on the collision sensitivity range. The Studio Settings page says 1 to 5, while the Studio glossary, the Python SDK and the xArm Developer Manual say 0 to 5, with 0 disabling collision detection. A learner reading only the Settings page would not learn that the value can switch detection off.

    Related: safety-065 Verified safety-066 Verified

    Evidence · 4 citations

    The collision sensitivity range is 1 to 5 levels.

    UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.1 Parameters

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    The collision sensitivity range is from 0 to 5 level. When it is set to 0, it means that collision detection is not enabled.

    UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, Collision Sensitivity

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    :param value: sensitivity value, 0~5

    xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · def set_collision_sensitivity

    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21

    The collision sensitivity range is from 0 to 5 level. When it is set to 0, it means that collision detection is not enabled.

    xArm Developer Manual V2.0.1 (PDF) · UFACTORY · Glossary, 'Collision Sensitivity'

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  139. Kind: Contradictionspec-077

    Sources disagree

    Sources disagree on the control box's RS-485 ports: one RS-485 master on the product page and in the online hardware manual, but one master and one slave (2 × RS-485) in User Manual V2.3.0.

    Related: spec-076 Verified

    Evidence · 3 citations

    1×RS-485 Master

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · AC/DC Controller table, 'I/O Interface' row (docs site 'UFACTORY 850 硬件手册', English version; names the machine 'UFACTORY 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    1*RS-485 Master 1*RS-485 Slave

    UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · Appendix 2, Control Box I/O Interface, p.173 (manual names the machine '850' / 'UFactory 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    I/O Ports 8*CI 8*DI 8*CO 8*DO 2*AI 2*AO 2*RS-485

    UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · Appendix 7, 1.11 Specifications, p.185 (manual names the machine '850' / 'UFactory 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

  140. Kind: Contradictionspec-082

    Sources disagree

    Sources disagree on the 850's end-effector communication protocol: the product page says Modbus RTU, and the online hardware manual's Tool RS485 section and Gripper G2 table describe RS-485 with Modbus RTU, but the specification tables of the online hardware manual and User Manual V2.3.0 say Modbus TCP. The tool port is RS-485, which suggests RTU, but this is not confirmed.

    Related: spec-081 Verified

    Evidence · 5 citations

    End Effector Communication Protocol Modbus RTU

    UFACTORY 850 product page · UFACTORY · Tech Specs > Hardware, 'End Effector Communication Protocol' row (page names the machine 'UFACTORY 850'; spec tables say 'UFactory 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    End Effector Communication Protocol Modbus TCP

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · Table 'UFACTORY 850', 'End Effector Communication Protocol' row (docs site 'UFACTORY 850 硬件手册', English version; names the machine 'UFACTORY 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    End-effector Communication Protocol Modbus TCP

    UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · Appendix 2, 1.1 Common Specifications, p.173 (manual names the machine '850' / 'UFactory 850')

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    | Communication Method | RS485 | Communication Protocol | Modbus RTU |

    UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY · Gripper G2 table

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

    If end effector supports standard Modbus RTU

    UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY · 4.4.4 Tool RS485

    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21

Image credits

  • Line drawings of the 850 control box with its front and back panels labelled: emergency stop, robot power, state, power switch, AC port, network port, LAN, robot 48V, enabling switch and IO. © UFACTORY (Shenzhen UFACTORY Co., Ltd.). Source. Used with UFACTORY's written permission (2026-09-23), on the condition that each image links back to its source page.
  • 3D model: © 2018 UFACTORY Inc., BSD-3-Clause, from UFACTORY Inc. (xArm-Developer/xarm_ros2). Licence text · Source

Sources for this section

  • IntelliMake Phase 1 Factory: Autonomous Production Demonstrator (infographic) · IntelliMake.org (IntelliMake)
    © IntelliMake.org. Used with permission; redrawn for this platform. · Cleared for use by its owner · retrieved 2026-09-21 · cited by 2 records here · Project copy; not published on this site.
  • Owner statements, 2026-09-21 (verbatim) · Derek Stringfellow (project owner)
    Derek Stringfellow, project record · Project-internal record · retrieved 2026-09-21 · cited by 1 record here · Project copy; not published on this site.
  • UFACTORY 850 Hardware Manual (online), 1. Safety · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 2 records here · Open the source
  • UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 5 records here · Open the source
  • UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 22 records here · Open the source
  • UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 14 records here · Open the source
  • UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 10 records here · Open the source
  • UFACTORY 850 Hardware Manual (online), Preface · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY 850 product page · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 7 records here · Open the source
  • UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 8 records here · Open the source
  • UFACTORY Release Note v2.7.0 · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 4 records here · Open the source
  • UFACTORY Studio User Manual (online), 1. Preface · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 2 records here · Open the source
  • UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 5 records here · Open the source
  • UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 3 records here · Open the source
  • UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 3 records here · Open the source
  • UFACTORY Studio User Manual (online), 3. Connection · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 4 records here · Open the source
  • UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 7 records here · Open the source
  • UFACTORY Studio User Manual (online), 5. Blockly · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 2 records here · Open the source
  • UFACTORY Studio User Manual (online), 6. Gcode · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY Studio User Manual (online), 7. Settings · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 13 records here · Open the source
  • xArm Developer Manual V2.0.1 (PDF) · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 4 records here · Open the source
  • xArm-C++-SDK ReadMe · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-CPLUS-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • xArm-CPLUS-SDK repository description (GitHub repository metadata) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-CPLUS-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 10 records here · Open the source
  • xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 14 records here · Open the source
  • xArm-Python-SDK example 0000-template.py · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 6 records here · Open the source
  • xArm-Python-SDK README · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • xArm-Python-SDK source, xarm/core/config/x_config.py · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 3 records here · Open the source
  • xArm-Python-SDK source, xarm/core/wrapper/uxbus_cmd.py · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 2 records here · Open the source
  • xArm-Python-SDK source, xarm/x3/base.py · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • xArm-Python-SDK source, xarm/x3/decorator.py · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • xarm_ros ReadMe (ROS 1, master branch) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xarm_ros, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 3 records here · Open the source
  • xarm_ros2 ReadMe (humble branch) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause licence · BSD-3-Clause · retrieved 2026-09-21 · cited by 6 records here · Open the source

IntelliMake diagrams are redrawn as native figures, © IntelliMake.org. UFACTORY does not endorse this platform.

All sources and attribution