HSES Protocol Specification
This skill provides the complete specification for the HSES (High Speed Ethernet Server) protocol used to communicate with Yaskawa robot controllers.
When to Use
- Understanding HSES protocol message structure and formats
- Implementing or debugging HSES communication
- Looking up specific command IDs, attributes, or error codes
- Understanding the binary protocol layout (headers, payloads)
Protocol Overview
HSES is a UDP-based communication protocol for Yaskawa robots.
Communication Specifications
| Property |
Value |
| Protocol |
UDP |
| Robot Control Port |
10040 |
| File Control Port |
10041 |
| Endianness |
Little-endian |
Message Structure
+------------------+
| Header (32 bytes)|
+------------------+
| Payload (≤479B) |
+------------------+
Header Layout (32 bytes)
| Offset |
Size |
Field |
Description |
| 0-3 |
4 |
Magic |
"YERC" |
| 4-5 |
2 |
Header size |
Always 0x20 (32) |
| 6-7 |
2 |
Payload size |
Variable |
| 8 |
1 |
Reserved |
Always 0x03 |
| 9 |
1 |
Division |
0x01=Robot, 0x02=File |
| 10 |
1 |
ACK |
0x00=Request, 0x01=Response |
| 11 |
1 |
Request ID |
Incremental session ID |
| 12-15 |
4 |
Block number |
See block numbering rules |
| 16-23 |
8 |
Reserved |
"99999999" |
| 24-31 |
8 |
Sub-header |
Command-specific |
Block Number Rules
| Context |
Value |
| Request |
Always 0 |
| Single response |
0x8000_0000 |
| Multi-response data (not last) |
Increment from previous |
| Multi-response data (last) |
Previous + 0x8000_0000 |
| ACK packet |
Same as corresponding data |
Request Sub-header (bytes 24-31)
| Offset |
Size |
Field |
| 24-25 |
2 |
Command ID |
| 26-27 |
2 |
Instance |
| 28 |
1 |
Attribute |
| 29 |
1 |
Service |
| 30-31 |
2 |
Padding (0x00) |
Response Sub-header (bytes 24-31)
| Offset |
Size |
Field |
| 24 |
1 |
Service + 0x80 |
| 25 |
1 |
Status |
| 26 |
1 |
Added status size |
| 27 |
1 |
Padding |
| 28-29 |
2 |
Added status (error code) |
| 30-31 |
2 |
Padding (0x00) |
Response Status Values:
0x00: Normal reply
0x08: Command not defined
0x09: Invalid element number
0x1f: Abnormal reply (check added status)
0x28: Instance does not exist
Robot Commands (Division = 0x01)
Command Reference Table
| Command ID |
Name |
Description |
| 0x70 |
Alarm data reading |
Read current alarm |
| 0x71 |
Alarm history reading |
Read alarm history |
| 0x72 |
Status reading |
Read robot status |
| 0x73 |
Executing job info |
Read current job info |
| 0x74 |
Axis configuration |
Read axis config |
| 0x75 |
Position data reading |
Read robot position |
| 0x76 |
Position error reading |
Read position error |
| 0x77 |
Torque data reading |
Read torque data |
| 0x78 |
I/O data |
Read/write I/O |
| 0x79 |
Register data |
Read/write registers |
| 0x7A |
Byte variable (B) |
8-bit unsigned |
| 0x7B |
Integer variable (I) |
16-bit signed |
| 0x7C |
Double variable (D) |
32-bit signed |
| 0x7D |
Real variable (R) |
32-bit float |
| 0x7E |
String variable (S) |
16-byte string |
| 0x7F |
Position variable (P) |
Robot position |
| 0x80 |
Base position (BP) |
Base position |
| 0x81 |
External axis (EX) |
External axis |
| 0x82 |
Alarm reset |
Reset/cancel alarms |
| 0x83 |
HOLD/Servo control |
HOLD and servo ON/OFF |
| 0x84 |
Cycle mode switch |
Step/cycle/continuous |
| 0x85 |
PP message display |
Show message on pendant |
| 0x86 |
Job START |
Start job execution |
| 0x87 |
Job select |
Select job |
| 0x88 |
Management time |
Get management time |
| 0x89 |
System information |
Get system info |
| 0x8A |
Move (Cartesian) |
Move command |
| 0x8B |
Move (Pulse) |
Move command |
| 0x8C |
String (S) 32-byte |
32-byte string variable |
| 0x300 |
Plural I/O |
Multiple I/O |
| 0x301 |
Plural register |
Multiple registers |
| 0x302 |
Plural B variable |
Multiple byte vars |
| 0x303 |
Plural I variable |
Multiple integer vars |
| 0x304 |
Plural D variable |
Multiple double vars |
| 0x305 |
Plural R variable |
Multiple real vars |
| 0x306 |
Plural S variable |
Multiple string vars |
| 0x307 |
Plural P variable |
Multiple position vars |
| 0x308 |
Plural BP variable |
Multiple base pos vars |
| 0x309 |
Plural EX variable |
Multiple ext axis vars |
| 0x30A |
Alarm data (sub code) |
Alarm with sub strings |
| 0x30B |
Alarm history (sub) |
History with sub strings |
| 0x30C |
Plural S 32-byte |
Multiple 32-byte strings |
| 0x0411 |
Encoder temperature |
Read encoder temp |
| 0x0413 |
Converter temperature |
Read converter temp |
Service Types
| Service |
Value |
Description |
| Get_Attribute_Single |
0x0E |
Read single attribute |
| Get_Attribute_All |
0x01 |
Read all attributes |
| Set_Attribute_Single |
0x10 |
Write single attribute |
| Set_Attribute_All |
0x02 |
Write all attributes |
File Commands (Division = 0x02)
File commands use Command ID = 0x00 and are distinguished by Service code.
| Service |
Name |
Direction |
Description |
| 0x09 |
File delete |
- |
Delete file on controller |
| 0x15 |
File loading |
PC → FS100 |
Upload file to controller |
| 0x16 |
File saving |
FS100 → PC |
Download file from controller |
| 0x32 |
File list |
FS100 → PC |
Get directory listing |
File Transfer Protocol
Downloading file from controller (File Saving, Service 0x16):
- Send request with filename
- Receive file data blocks from controller
- Send ACK for each data block
- Continue until final block (bit 31 set in block number)
Uploading file to controller (File Loading, Service 0x15):
- Send request with filename
- Receive ACK for command acceptance
- Send file data blocks to controller
- Receive ACK for each data block
- Set bit 31 on final block
Status Data Structure
Status Data 1 (Command 0x72, Instance 1)
| Bit |
Meaning when ON |
| 0 |
Step mode |
| 1 |
One-cycle mode |
| 2 |
Continuous mode |
| 3 |
Running |
| 4 |
Speed limited |
| 5 |
Teach mode |
| 6 |
Play mode |
| 7 |
Remote mode |
| 8-15 |
Reserved |
Status Data 2 (Command 0x72, Instance 2)
| Bit |
Meaning when ON |
| 0 |
Hold pending |
| 1 |
Hold by external |
| 2 |
Hold by command |
| 3 |
Servo ON (ready) |
| 4 |
Error |
| 5 |
Alarm |
| 6-15 |
Reserved |
Common Error Codes (Added Status)
| Code |
Meaning |
| 0x1010 |
Cannot operate (mode/state) |
| 0x1018 |
Servo not ready |
| 0x2010 |
Cannot operate in teach mode |
| 0x2050 |
In hold state |
| 0x2060 |
System already in requested state |
| 0x3040 |
Job not found |
| 0x3400 |
File not found |
| 0x4040 |
Invalid variable index |
Related Skills
For implementing HSES communication in Rust, see:
- moto-hses-usage: Client library usage guide for the
moto-hses crate family
Detailed Reference
For complete protocol details including all command payloads, response formats, and example packets, see: