Skip to content

Data Frame Structure

During communication between the IndyDCP server and client, data exchanged consists of a 52-byte header, a 4-byte command, and up to 200 bytes of data, collectively defined as a data frame. The data frame requested by the client to the server is called a request frame, while the data frame sent from the server in response to the request is called a response frame. The response frame is further categorized into an ACK (Acknowledgement) response frame, received upon a successful request, and a NAK (Negative Acknowledgement) response frame, received upon a failed request.

Header Command Data
52 bytes 4 bytes 0 ~ 200 bytes

Header Format

The below table is a detailed description of the header section within the data frame:

Item
Size (byte)
Detail
Robot Name 20
  • Client \rightarrow Server : "NRMK-[Robot Name]" (ASCII string)
  • Server \rightarrow Client : "NRMK-[Robot Name]" (ASCII string)
  • Reference: Empty space is filled with NULL values.
    Example: "NRMK-Indy7" (ASCII Code: 0x4E 0x52 0x4D 0x4B 0x2D 0x49 0x6E 0x64 0x79 0x52 0x50 0x00 ...)
    Robot Version 12
  • Client \rightarrow Server : NULL
  • Server \rightarrow Client : IndyFramework Version (ASCII string)
  • Example: 3.2.0 (ASCII Code: 0x32 0x2E 0x30 0x2E 0x33 0x00 ...)
    STEP Info 1
  • Client \rightarrow Server : Not Use (0x00)
  • Server \rightarrow Client : STEP HW Version (1-byte)
  • Example: STEP 1,2,3 \rightarrow 0x01, 0x02, 0x03
    Source of Frame (SoF) 1
  • Client \rightarrow Server : 0x34
  • Server \rightarrow Client : 0x12
  • Invoke ID 4 ID to differentiate between frames
    (Response frames for requests are sent back with the same ID as the request)
    Data Length 4 Data length of data area (unit: bytes, 0~200)
    Reserved 10 Reserved field
  • 4byte use robot state
  • Reserved field and Robot State

    The first 4 bytes of the reserved field, out of the total 10 bytes in the response frame header, contain the robot's status information. This allows receiving the robot's status without making specific command requests, enabling periodic updates of the robot's status with every response to a request. To retrieve only the robot's status, you can use the command 0 (check) in the command list to exchange headers and periodically monitor the robot's status. The robot states mapped to each bit (1 to 32) are detailed in the table below [table4].

    Bit Num State Detail
    1 Is Robot Running The robot is in running state.
    2 Is Robot Ready The robot is in a controllable state (all servos are On and initialization is complete)
    3 Is Emergency Stopped The robot is in Emergency state
    4 Is Collided The robot is in Collision state
    5 Is Error State The robot is in Error state
    6 Is Busy The robot is in Motion state (Motion in progress)
    7 Is Move Finished The robot is in the motion finished state
    8 Is Home The robot is in the Home Position state
    9 Is Zero The robot is in the Zero Position state
    10 Is In Resetting The robot is in resetting state
    25 Is Direct Teaching Mode The robot is in direct teaching mode
    26 Is Teaching Mode The robot is in teaching mode (manual teach, jogging, etc.)
    27 Is Program Running The robot program is in execution state (including running and paused)
    28 Is Program Paused The robot program is in paused state
    29 Is Conty Connected The robot is Connected to Conty

    Command and Data

    The format of the header is identical for request frames, ACK response frames, and NAK response frames as follows:.

    Robot Name Robot Version Step Info SoF Invoke ID Data Length Reserved

    Request Frame (IndyDCP Client → Server)

    Header Command Data
    Common
    52 byte
    Command ID
    4 bytes
    Depending on the command, the format and length vary
    0 ~ 200 bytes

    ACK Response Frame (IndyDCP Server → Client, Upon successful request execution)

    Header Command Data
    Common
    52 byte
    Command ID, same as the request frame
    4 bytes
    Depending on the command, the format and length vary
    0 ~ 200 bytes

    reference

    The basic structure of request frames and response frames is identical (maximum 256 Byte frame).

    NAK Response Frame (IndyDCP Server → Client, Upon failed request execution)

    Header Error Error code
    Common
    52 byte
    Instead of a command, it has a value of 9999 indicating an error status
    4 bytes Intiger
    It carries an error code instead of data
    4 bytes Intiger

    reference

    1) Hexadecimal data within the frame is represented with the prefix '0x', such as 0xA4, 0x23.
    2) String data such as Robot Name or Robot Version is represented as ASCII strings.
    3) Values (or data values) for all items, except for a few, are represented in binary format. Boolean is 1 byte, Integer is 4 bytes, and floating-point number is an 8-byte floating point (double).