Technical Article

Introduction to Epson Programming Language

April 07, 2022 by Shawn Dietrich

A common staple in the pharmaceutical industry, Epson robots come in a variety of models, programmed with the SPEL+ language. Learn the unique traits of the language before diving deeper into a programming example.

Check out our previous articles presenting similar examples of other popular robot brands:

Epson SCARA robot
Figure 1. Epson SCARA Robot model. Image used courtesy of Epson


Epson Robot Product Line

Epson robots are well-known in the pharmaceutical industry for their SCARA robots as well as their speed. They also have an "all-in-one" series which is a robot arm - six-axis or SCARA - that doesn’t require a standalone controller, it's integrated into the body of the robot. Most other robot manufacturers will require a standalone controller to house the drive modules and PC where the program and logic reside. Epson robots are known to have a competitive price point coupled with fast cycle times.

The Epson robot product line consists of the following.


    The Epson SCARA line is quite extensive with three main models; G-Series, LS-B Series, and the RS-Series. With these three main models, the range for reach goes from 175mm to 1000mm, and payload capacities ranging from 1kg to 4kg.

  • 6-Axis

    Epson’s six-axis robot product line consists of five different models with maxim reach ranging from 600mm to 1400mm and payloads reaching up to 12kg.

  • All-In-One

    As mentioned above the all-in-one robot is a single robot arm that doesn’t require a controller. The all-in-one robot allows for a compact cost-effective robot solution


Epson all-in-one robot

Figure 2. Epson’s All-In-One 6-axis robot includes a built-in controller. Power cable and teach pendent connect directly to the base of the robot Image used courtesy of Epson


SPEL+ Programming

Similar to other robot manufacturers, Epson has developed its own programming language that is loosely based on structured text. RC+ is the software used to program Epson robots in SPEL+ language. SPEL+ is a textual programming language and is similar to ABB’s RAPID language. Unlike Fanuc, which uses the placement of IF…JMP for program navigation, SPEL+ has the ability to use “Do…While” statements, similar to a “WHILE” statement found in the RAPID programming language.

SPEL+ VS Structured Text

If you are familiar with structured text programming in PLCs, or with programming in lower-level text languages, grasping the SPEL+ structure should be fairly straightforward. Standard data types are used when defining variables in program files or functions. The following sections list some of the unique traits that define the SPEL+ language.

Declaration of Variables

Variables can be stored and declared in a program file or they can be declared at the beginning of a function. If the variable is declared within the program file it is referred to as being a module scoped variable or global if the keyword is used. If the variable is declared within the function only commands within that function will have access to it. Typically in structured text language, you would declare all variables in a variable table or tag table depending on the software.


A function is merely a group of program statements or commands between a function declaration and “Fend” which signals the end of the function. Similar to other robot code standards, parameters can be passed into the function to make the code more flexible. With SPEL+, a function does not always need to return a variable, but can with the use of the “As” clause at the end of a function. When declaring local parameters in a function, you will need to specify a data type. When calling that function, be sure to pass that correct data type to the function or you will get a program error.

Passing variables to a function is common for math operations, or if the motion in the function is dependent on changing values, such as the size of an object, or perhaps an orientation angle which may be different for each workpiece.


A program command or a program statement is a predefined instruction that the robot controller understands and will execute when called. Most commands will have parameters that will need to be passed into the command to refine or improve the operation. A command can be thought of as a pre-defined function block where data is passed into the block. This data is then manipulated or used to perform an action and once complete, the data is passed out. Multiple commands can be used on one line when separated with a semicolon. However, if this is to be done, be sure to comment accordingly as multiple commands in a single line can become very confusing.

An example of a typical command would be a “MOVE” command.



In this example, the robot moves in a linear motion to recorded point #5 and decelerates to a brief stop before executing the next command or move instruction. There are optional parameters such as CP, which is a continuous non-stopping path move or Till, which can interrupt the robot and halt it mid-move, and many more.

A short example code with a series of movement commands:





In this example, the robot would move smoothly with constant velocity to point 6, then to point 7, and finally come to a stop at point 8.


Epson RC+ Express software

Figure 3. Epson RC+ Express software on the teach pendant is designed for rapid robot commissioning and deployment. Image used courtesy of Epson



As you can see above the SPEL+ language is very similar to other robot languages, but as always, there are a few differences. Similar to learning any software, the help file is very useful especially when looking up different commands and how to use them. The SPEL+ language is very flexible and easy to understand, whether you are a first-time robot programmer or a seasoned veteran.