This page shows how to use the Yaskawa SDK from LabVIEW, to read and control a Yaskawa Motoman controller through its High Speed Ethernet Server. The library is a set of VIs grouped in `UnderAutomation.Yaskawa.lvlib`, compatible with LabVIEW 2010 to 2024 on Windows. Nothing is installed on the controller.

## Download

The [releases of Yaskawa.vi](https://github.com/underautomation/Yaskawa.vi/releases) contain one zip per LabVIEW version, `UnderAutomation.Yaskawa_LabVIEW_<year>.zip`. Each zip contains:

- `UnderAutomation.Yaskawa.lvproj`: the project, with the example `Examples/1. Main demo.vi`;
- `UnderAutomation.Yaskawa/UnderAutomation.Yaskawa.lvlib`: the library of VIs;
- `UnderAutomation.Yaskawa/lib/UnderAutomation.Yaskawa.dll`: the .NET library called by the VIs.

On Windows, unblock the zip before you extract it: right click, `Properties`, check `Unblock`.

The sources are on GitHub: [github.com/underautomation/Yaskawa.vi](https://github.com/underautomation/Yaskawa.vi). Questions and bug reports go to its issues.

<p align="center">
  <img
    src="https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/project.png"
    alt="Items of the Yaskawa LabVIEW library"
  />
</p>

## Example application

`Examples/1. Main demo.vi` connects to the robot and shows the main functions: status and alarms, servo and jobs, files, positions and motion, registers.

<p align="center">
  <img
    height="250"
    src="https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/main-demo-connect-to-robot.png"
    alt="Connection tab of the LabVIEW example"
  />
  <img
    height="250"
    src="https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/main-demo-alarms-and-status.png"
    alt="Alarms and status tab of the LabVIEW example"
  />
</p>
<p align="center">
  <img
    height="250"
    src="https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/main-demo-servo-job.png"
    alt="Servo and job tab of the LabVIEW example"
  />
  <img
    height="250"
    src="https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/main-demo-file-handling.png"
    alt="Files tab of the LabVIEW example"
  />
</p>
<p align="center">
  <img
    height="250"
    src="https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/main-demo-positon-move.png"
    alt="Position and motion tab of the LabVIEW example"
  />
  <img
    height="250"
    src="https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/main-demo-read-write-registers.png"
    alt="Registers tab of the LabVIEW example"
  />
</p>

## Connection and license

`ConnectToRobot.vi` connects to the robot with its IP address. It returns the robot reference that the other VIs take as input. `RegisterLicense.vi` registers your license key. Without a key, the library runs for 30 days.

![Connect to robot](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/connect-to-robot.png)

The VIs that change the state of the controller (servo, motion, job start, file write) need the remote mode and the settings of [Connect to your robot](/yaskawa/documentation/connect).

## VIs of the library

### Alarms

`AlarmReset.vi` resets the alarms. `GetAlarm.vi` reads one of the 4 alarms that the controller reports.

![Alarm reset](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/alarm-reset.png)

![Get alarm](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/get-alarm.png)

### Files

`GetFileList.vi`, `GetFile.vi`, `LoadFile.vi` and `DeleteFile.vi` list, download, upload and delete the files of the controller.

![Get file list](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/get-file-list.png)

![Get file](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/get-file.png)

![Load file](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/load-file.png)

![Delete file](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/delete-file.png)

### Jobs

`SelectJob.vi` and `StartJob.vi` select and start a job. `GetExecutingJobInformation.vi` reads the name, the line and the step of the executing job.

![Select job](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/select-job.png)

![Start job](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/start-job.png)

![Get executing job information](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/get-executing-job-information.png)

### Positions and motion

`GetCartesianPosition.vi` and `GetJointPosition.vi` read the position of the robot. `MoveCartesian.vi` and `MoveJoints.vi` move it.

![Get Cartesian position](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/get-cartesian-position.png)

![Get joint position](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/get-joint-position.png)

![Move Cartesian](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/move-cartesian.png)

![Move joints](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/move-joints.png)

### Status and system

`GetStatusInformation.vi`, `GetSystemInformation.vi` and `GetTorque.vi` read the status of the controller, its software version and the torque of each axis. `Display.vi` shows a message on the pendant.

![Get status information](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/get-status-information.png)

![Get system information](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/get-system-information.png)

![Get torque](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/get-torque.png)

![Display](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/display.png)

### Variables and I/O

`ReadIO.vi` reads the I/O signals. Other VIs read the variables: registers, byte, integer, double integer, real and string variables (16 and 32 bytes), position variables, base and external axis positions.

![Read IO](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/read-io.png)

![Read registers](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/read-registers.png)

![Read position variables](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/read-position-variables.png)

### Commands

`ServoCommand.vi` switches the servo on and off. `SwitchingCommand.vi` selects the cycle mode: step, cycle or continuous.

![Servo command](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/servo-command.png)

![Switching command](https://raw.githubusercontent.com/underautomation/Yaskawa.vi/refs/heads/main/.github/assets/switching-command.png)

## Compatibility

| Item             | Supported                                                            |
| ---------------- | -------------------------------------------------------------------- |
| LabVIEW          | 2010 to 2024, one folder per version                                 |
| Operating system | Windows                                                              |
| Controllers      | YRC1000 (micro), MOTOMAN NEXT, DX100 / DX200, FS100, ERC / XRC / MRC |

## What to read next

- [Connect to your robot](/yaskawa/documentation/connect): the settings of the controller.
- [High Speed Ethernet Server overview](/yaskawa/documentation/high-speed-ethernet-server): what each function does. The VIs have the names of the .NET methods.
- [Licensing](/yaskawa/documentation/license): the 30 day trial and the license key.