# Fanuc (Pro)

{% hint style="warning" %}
Please note that this interface is only included in realvirtual.io Professional
{% endhint %}

The **Fanuc Interface** component allows direct communication between Unity and FANUC industrial robots using the **SNPX (Robot Interface / SRTP)** protocol. It enables real-time control of robot drives, digital and analog I/O, and access to internal robot variables — supporting use cases like digital twins, simulation, and live operation.

<figure><img src="https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-2adf9fbfe30e2fc1e0b0c8841cc74586c4fb70f0%2Ffanucdemo.png?alt=media" alt=""><figcaption></figcaption></figure>

### Overview

This interface connects Unity to a FANUC controller over TCP/IP (default port `60008`), allowing you to:

* Read/write digital and analog signals
* Track drive and axis positions

### Requirements

To use the SNPX-based communication, your FANUC controller must support the Robot Interface protocol. This can be configured during workcell creation in ROBOGUIDE.

#### Enabling SNPX

You must enable one of the following options when setting up your virtual or physical controller:

* **R650 FRA Params**:
  * Select **"FANUC America Corp."** in the *Advanced* tab of ROBOGUIDE's Workcell Wizard (Step 7)
  * Add option **R553 – HMI Device SNPX**
* **R651 FRL Params**:
  * Select **"FANUC Ltd."** in the same Advanced tab
  * No additional options required

Also ensure that:

* TCP port `60008` (Robot IF Server) is open and accessible
* The controller and Unity application are on the same network or subnet

### Inspector Fields

<figure><img src="https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-0c2e98c26d4222f678b676235770b764e513d53e%2Ffanucinterface.png?alt=media" alt=""><figcaption></figcaption></figure>

| Field                    | Description                                                    |
| ------------------------ | -------------------------------------------------------------- |
| **Active**               | Enables or disables the interface                              |
| **Is Connected**         | Shows live connection status with the controller               |
| **Address**              | IP address of the FANUC robot (e.g., `192.168.0.179`)          |
| **Drives**               | Assign Unity `Drive` components to robot axes (supports J1–J9) |
| **Num Inputs / Outputs** | Displays how many input/output signals are currently active    |
| **Thread Status**        | Indicates the state of the background communication thread     |
| **Connect Button**       | Triggers the connection process to the controller              |

### Signal Mapping

The **Fanuc Interface** uses string-based signal names to map FANUC robot I/O into Unity. These names follow a `PREFIX + NUMBER` format and are parsed automatically on startup.

<figure><img src="https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-bf8e45e83499db3556acc18b12c8fe7ef51ae71d%2Ffanuc-examplerobotoutput.png?alt=media" alt=""><figcaption><p>Example of a configured digital output DO3</p></figcaption></figure>

#### Supported Signal Prefixes

| Prefix | Direction | Description                                     |
| ------ | --------- | ----------------------------------------------- |
| `DI`   | Input     | Device-level digital inputs                     |
| `DO`   | Output    | Device-level digital outputs                    |
| `UI`   | Input     | User-defined digital inputs                     |
| `UO`   | Output    | User-defined digital outputs                    |
| `RI`   | Input     | Remote robot digital inputs                     |
| `RO`   | Output    | Remote robot digital outputs                    |
| `SDI`  | Input     | Safety digital inputs                           |
| `SDO`  | Output    | Safety digital outputs                          |
| `WI`   | Input     | Welding-specific digital inputs                 |
| `WO`   | Output    | Welding-specific digital outputs                |
| `AI`   | Input     | Analog integer inputs (e.g., sensor values)     |
| `AO`   | Output    | Analog integer outputs (e.g., analog actuators) |

**Examples:**

* `DO0` – Digital Output 0
* `UI5` – User Input 5
* `AO3` – Analog Output 3
* `WI2` – Welding Input 2

Signals are case-insensitive in Unity but are documented here in uppercase for clarity.
