hses-protocol
SKILL.md
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 reply0x08: Command not defined0x09: Invalid element number0x1f: 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-hsescrate family
Detailed Reference
For complete protocol details including all command payloads, response formats, and example packets, see:
- references/protocol-overview.md - Protocol structure and header format
- references/sequence-diagrams.md - Communication flow diagrams
- references/robot-commands-status.md - Status and alarm commands
- references/robot-commands-variables.md - Variable read/write commands
- references/robot-commands-control.md - Control and motion commands
- references/file-commands.md - File operation commands
- references/data-types.md - Variable types and position formats
- references/error-codes.md - Error code definitions
Weekly Installs
17
Repository
masayuki-kono/a…t-skillsFirst Seen
Jan 25, 2026
Security Audits
Installed on
cursor16
opencode5
gemini-cli5
codex5
github-copilot4
cline4