Skip to content

EtherCAT Communication Protocol

1. Equipment Basic Information

FieldContent
Device NameBrainCo-Revo2Slave
Vendor NameBrainCo
Vendor ID0x00BC0000
Product Code0x00009252
Revision No0x00000001
  • Specific object dictionary configuration

2.Synchronization Manager and PDO Mapping

2.1 Synchronization Manager Configuration

SM IndexFunctionCorresponding PDO Index
SM2 (0x1C12)Master → Slave Output0x1600
SM3 (0x1C13)Slave → Master Input0x1A00

2.2 RxPDO(0x1600)

SubindexObjectsDescription
0x010x7000:01Multiple finger control modes
0x020x7000:02Multiple finger control parameters1(6xINT16)
0x030x7000:03Multiple finger control parameters2(6xUINT16)
0x040x7010:01Single finger control mode
0x050x7010:02Single finger target joint ID
0x060x7010:03Single finger control parameter1(INT16)
0x070x7010:04Single finger control parameter2(UINT16)

Control mode definition

shell
# define CTRL_MODE_POS_TIME   0x01  // Position + Time control
# define CTRL_MODE_POS_SPD    0x02  // Position + Speed control
# define CTRL_MODE_SPD        0x03  // Speed control
# define CTRL_MODE_CURRENT    0x04  // Current control
# define CTRL_MODE_PWM        0x05  // PWM duty cycle

Target Joint ID Definition

shell
typedef enum {
    // 拇指尖部
    THUMB_FLEX,
    // 拇指根部
    THUMB_ABDUCT,
    // 食指
    INDEX_FINGER,
    // 中指
    MIDDLE_FINGER,
    // 无名指
    RING_FINGER,
    // 小指
    PINKY
} finger_index_t;

2.3 Finger TxPDO(0x1A00)

SubindexObjectsDescription
0x010x6000:01Joint position(6xUINT16)
0x020x6000:02Joint speed(6xINT16)
0x030x6000:03Joint current(6xINT16)
0x040x6000:04Joint status(6xUINT16)
  • Position of 6 finger motors (Pos) → UINT16 ×6
  • Speed of 6 finger motors (Spd) → INT16 ×6
  • Current of 6 finger motors (Cur) → INT16 ×6
  • Status of 6 finger motors (State) → UINT16 ×6
  • Total: 48 bytes. The master station can map these directly to variables.

2.4 Capacitive Tactile TxPDO Dictionary(0x6010)

IndexSub-indexField NameTypeQuantityDescription
0x60100x01force_normalUINT165Normal force
0x60100x02force_tangentialUINT165Tangential force
0x60100x03force_directionUINT16)5Direction of tangential force
0x60100x04proximityUINT325Proximity value
0x60100x05touch_statusUINT165Tactile state
  • Normal force of 5 fingers (force_normal) → UINT16 ×5

  • Tangential force of 5 fingers (force_tangential) → INT16 ×5

  • Tangential force direction of 5 fingers (force_direction) → INT16 ×5

  • Proximity value of 5 fingers (proximity) → UINT32 ×5

  • Tactile status of 5 fingers (touch_status) → UINT16 ×5

  • Total: 60 bytes. The master station can map these directly to variables.

  • Normal and tangential forces are 16-bit unsigned data. The unit is 0.01 N, so a value of 1000 represents 10 N (1000 * 0.01 N). The measurement range is from 0 to 25 N.

  • The direction of the tangential force is 16-bit unsigned data. The unit is in degrees, with a range of 0 to 359 degrees. The direction near the fingertip is 0 degrees, rotating clockwise up to a maximum of 359 degrees. When the value is 65535 (0xFFFF), it indicates an invalid tangential force direction.

  • Proximity value is 32-bit unsigned data.

  • The tactile status register is 16 bits, divided into high and low bytes representing different information:

    • Upper 8 bits: Indicate the packet sequence number for the sensor's internal data updates. If this value increases or changes, it means data has been updated.
    • Lower 8 bits: Indicate the sensor's current status. The bits are defined as follows:
      1. Bit 0: Original value is invalid.
      2. Bit 1: Original value has not been updated for a prolonged period.
      3. Bit 2: Trigger timeout.

3.Configuration parameter dictionary(Object 0x8000)

3.1 General configuration fields

SubindexParameter NameTypeDescription
0x01hand_typeUINT8(WR)0=left hand,1=right hand
0x02led_switchUINT8(WR)Back of hand light switch
0x03buzzer_switchUINT8(WR)Buzzer switch
0x04vibrator_switchUINT8(WR)Vibrating motor switch
0x05unit_modeUINT8(WR)0=Dimensionless, 1=Physical unit
0x06pos_calibrationUINT8 (WO)Manual position calibration
0x07auto_calibrationUINT8(WR)Automatic calibration on startup
0x08turbo_modeUINT8(WR)Turbo
0x09turbo_param[0] ,turbo_param[1]2XUINT16(WR)Turbo

3.2 Current field for protecting each joint

SubindexParameter NameTypeDescription
0x0Athumb_flex_pro_curUINT16(WR)Thumb flex protects current
0x0Bthumb_aux_pro_curUINT16(WR)Thumb abduct protection current
0x0Cindex_pro_curUINT16(WR)Index finger protection current
0x0Dmid_pro_curUINT16(WR)Middle finger protection current
0x0Ering_pro_curUINT16(WR)Ring finger protective current
0x0Fpink_pro_curUINT16(WR)Little finger protection current
0x10thumb_aux_lock_curUINT16(WR)Thumb abduct joint locking current

3.3 Firmware information field

SubindexParameter NameTypeDescription
0x11ctrl_wrist_fw_versionSTRING(20)(RO)Control board firmware version (string: high.mid.low)
0x12ctrl_snSTRING(18)(WR)Control panel device serial number(SN)
0x13wrist_fw_versionSTRING(20)(RO)Wristband firmware version (string: high, medium, low)
0x14wrist_snSTRING(18)(WR)Wrist brace device serial number(SN)
0x15foe_file_typeUINT8(WO)FoE File type identifier: 1=Wrist board, 2=Control board
0x16foe_auth_codeSTRING(8)(WO)FoE Document authentication code

4.Tactile SDO Parameter Dictionary(Object 0x8010)

IndexSub-indexField NameTypeLengthDescription
0x80101thumb_calibrationuint8(WO)1Thumb Calibration
0x80102index_calibrationuint8(WO)1Index finger calibration
0x80103mid_calibrationuint8(WO)1Middle Finger Calibration
0x80104ring_calibrationuint8(WO)1Ring Finger Calibration
0x80105pinky_calibrationuint8(WO)1Pinky Calibration
0x80106touch_vendoruint8(RO)1Tactile manufacturer(1:Capacitive 2:pressure-sensitive)
0x80107thumb_acq_param_updateuint8(WO)1Thumb channel value adjustment
0x80108index_acq_param_updateuint8(WO)1Index finger channel value adjustment
0x80109mid_acq_param_updateuint8(WO)1Middle finger channel value adjustment
0x801010ring_acq_param_updateuint8(WO)1Ring finger channel value adjustment
0x801011prink_acq_param_updateuint8(WO)1Little finger channel value adjustment
0x801012reserved1uint8(RO)1Reserved
0x801013thumb_touch_fw_versionstring(RO)20Thumb tactile firmware version
0x801014index_touch_fw_versionstring(RO)20Index Finger tactile Firmware Version
0x801015mid_touch_fw_versionstring(RO)20Middle finger tactile firmware version
0x801016ring_touch_fw_versionstring(RO)20Ring finger tactile firmware version
0x801017pink_touch_fw_versionstring(RO)20Pinky Finger Tactile Firmware Version

5. Control Mode and Parameter Description

The dexterous hand control protocol supports individual and simultaneous control of the 6 finger joints. The supported control methods include position, speed, current, and PWM duty cycle. These methods adapt to both normalized (percentage) and physical unit modes. Sign indicates direction: positive values for closing (bending) direction, and negative values for opening (straightening) direction.

5.1 Control mode number (suitable for single/multi-finger control)

Control Mode NumberMode Nameparam1 Descriptionparam2 Description
0x01Position + Time controlTarget positionExercise time(ms)
0x02Position + Speed controlTarget positionMovement speed
0x03Speed ControlTarget SpeedNone
0x04Current ControlTarget CurrentNone
0x05PWM Duty Cycle ControlPWM RatioNone

5.2 PWM Control Instructions

  • The PWM duty cycle is a unitless ratio, range -1000 ~ +1000

5.3 Unit mode explanation

a)Percentage mode(unit_mode = 0)

ParameterMeaningRange
PositionPercentage of itinerary0 ~ 1000
SpeedPercentage of maximum speed-1000 ~ 1000
CurrentPercentage of maximum current (1000mA)-1000 ~ 1000

b)Physical quantity mode(unit_mode = 1)

ParameterMeaningUnit
LocationFinger angle position°
SpeedFinger angular velocity°/s
CurrentActual motor control currentmA

5.4 Difference between multi-finger control and single-finger control

TypeAddress AreaControl Mode FieldControl Parameter Structure
Multi finger controlRxPDO 0x7000mult_finger_ctrl_modeparam1[6] + param2[6]
Single finger controlRxPDO 0x7010finger_ctrl_modefinger_id + param1 + param2
  • Multi-finger control sets the target for all 6 fingers at once
  • Single-finger control is used for precise adjustments or debugging of a single finger

6. FoE Firmware Upgrade Protocol Description

Revo 2 Pro and Touch version of the dexterous hand support firmware upgrades via the EtherCAT FoE (File over EtherCAT) protocol, suitable for the independent upgrade needs of the wrist board and control board.

6.1 Upgrade type and certification information

Upgrade TypeFile NameUpgrade Authentication Code
Wrist board firmwareRevo2EC_x.x.x_$time.binBRCW2025
Control board firmwareRevo2_Vx.x.x_$time.binBRCC2025

6.2 FoE Upgrade process

The complete FoE upgrade process includes four steps: authentication, defining the firmware type, transferring the firmware, and writing it to flash:

1. Master station writes the upgrade type and authentication code

  • SDO 0x8000:0x15: Write upgrade type (1 = wrist board, 2 = control board)
  • SDO 0x8000:0x16: Write authentication code (e.g., "BRCW2025")

2. Master station sends the firmware file via FoE

  • The file name must exactly match the expected value (e.g., Revo2EC_0.0.1_2506231346.bin).

3. Slave station reception and verification

  • Check if the authentication code matches.
  • Write firmware to the corresponding Flash partition.

4. Upgrade Completed

  • It is recommended that the master station resets the device or rescan the EtherCAT bus.

6.3 Precautions

  • The file name is case-sensitive and must match exactly.
  • PDO communication will be interrupted during the flash writing process.
  • The device will automatically restart with the new firmware after the upgrade is completed.
  • It is recommended to restart the EtherCAT bus after the upgrade finishes.

6.4 Upgrade timing diagram

img

6.5 Firmware file header structure

To ensure the legality and version identification of the firmware upgrade files.,All .bin files upgraded through FoE,The following header structure has been automatically added by the packaging tool.(A total of 16 bytes):

Field NameLengthDescription
Magic Number8 bytesFixed identifier used to identify device type:
wrist board → "BRCW2025"
Control panel → "BRCC2025"
Firmware Version4 bytesThe structure of the firmware version number is as follows:
The highest byte is a reserved field.(0x00),
The last three bytes correspond to the major version number.(Major)、
Minor version number(Minor)、Revision number(Patch)。
For example, the version number 1.2.3 Represented as:0x00010203
Reserved field4 bytesReserved field, currently 0x00, reserved for future expansion.

This structure is automatically written to the file header by the packaging tool, and users do not need to add it manually, nor should they modify it.

** Upgrade Verification Logic**

  • After the FoE file is received, first check if the Magic Number matches the current upgrade type;
  • If it does not match, the upgrade is rejected; if it matches, proceed to the burning process.
  • The firmware header data is used for upgrade determination and will not be written into the Flash application area.