---
title: Control and Telemetry
slug: hargrave-arinc-protocol-1-1/control-and-telemetry
docTags: 
createdAt: 2025-09-24T05:42:14.331Z
---

# Conventions

## Percentage Representations

Payload values in percentages are mapped to the range of -INT16\_MAX to INT16\_MAX.

![Percentage Representation in Control and Telemetry Messages](https://app.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/l_Tre9crFVgo7xC9QqA1M_image-2.png "Percentage Representation in Control and Telemetry Messages")

## Group CID

A Group CID can be used to send a message to a group of 4 SIDs. The group CID is used in place of the device SID in broadcast messages.

![Basic CAN ID structure for Broadcast messages](https://app.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/zilljht2EAbokN3E7Mc7v_image-4.png "Basic CAN ID structure for Broadcast messages")

### Calculating Group CID

The group number, or group Controller Identifier (CID) for a device with a given SID (1-127) can be calculated as follows, please note the use of the floor division operator:

::Image[]{src="https://app.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/veT2nzVxKowkGkpU3Srda_image.png" size="60" width="366" height="72" position="center" darkWidth="366" darkHeight="72" showCaption="false"}

**Example**

A device with SID 8 will map to group 2 as demonstrated below:

::Image[]{src="https://app.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/MzLIqN9Zy0WJ-_s5Vjwle_image.png" size="60" width="376" height="129" position="center" darkWidth="376" darkHeight="129" showCaption="false"}

Group 2 will contain the following SIDs: \[5, 6, 7, 8] or represented as the range: \[5, 8].

### Calculating Index within Group

The index of a device with a given SID within it’s group can be calculated as follows, ‘mod 4’ indicates the use of the modulo operator (often represented by the % in many programming languages):

::Image[]{src="https://app.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/yZspdQ2KMDdW9KXI9aD4Z_image.png" size="60" width="418" height="47" position="center" darkWidth="418" darkHeight="47" showCaption="false"}

**Example**

A device with SID 6 is in CID group 2 which contains the following range of \[5, 8]. The index of SID 6 is calculated as, indexing is 1-based:

::Image[]{src="https://app.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/-HWAGgOrO5LoVn3PKVrcY_image.png" size="60" width="353" height="138" position="center" darkWidth="353" darkHeight="138" showCaption="false"}

### Group CID Diagram

The below diagram demonstrates the Group CID and Group Index relationship for SIDs 1-12, the pattern of groups and group indexes continues for higher SIDs.

![ARINC Diagrams-Group CID Explanaition.drawio.png](https://api.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/u2NS_UZZmuP2ev36KXEzt_arincdiagrams-groupcidexplanaitiondrawio.png)

# Throttle Control

Throttle can be controlled with one of two methods, sending a throttle message to a singular ESC or broadcasting throttle to groups of 4 ESCs at a time. Throttle commands should be sent to each ESC at a minimum frequency of 1Hz. 100Hz is typical, but the frequency should be adjusted according to system requirements.

| **CAN ID**                 | **CFC** | **CID**   | **Function Name**  | **Sender** | **Payload**                   | **Description**                                                 |
| -------------------------- | ------- | --------- | ------------------ | ---------- | ----------------------------- | --------------------------------------------------------------- |
| 0x08581400 \| (SID \<\< 2) | 10      | SID       | Direct Throttle    | System     | Signed 16bit Throttle         | Throttle for specific controller based on SID.                  |
| 0x08581600 \| (SID \<\< 2) | 11      | Group CID | Broadcast Throttle | System     | \[1,4] Signed 16bit throttles | Throttle for a group of 4 controllers addressed by a group CID. |

## Direct Throttle

A direct throttle command sends a singular throttle value to an individual motor controller on the bus.

### CAN ID - 0x08581400 | (SID \<\< 2)

The direct throttle message CAN ID is: 0x08581400 | (SID \<\< 2)

Where SID is the target device SID.

For SID 1 the CAN ID is: 0x08581404

**Advanced:**

| **FID**             | **CFC** | **CID**    |
| ------------------- | ------- | ---------- |
| Device (Default 11) | 10      | Device SID |

### CAN Payload

The CAN payload is structured as follows:

| **Bytes** | **Datatype** | **Content**                                          |
| --------- | ------------ | ---------------------------------------------------- |
| 0-1       | INT16        | Throttle Percentage Value (mapped to +/- INT16\_MAX) |

![Direct Throttle Message Payload](https://app.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/fwEA2GiVoXA_AM02JD12i_image-3.png "Direct Throttle Message Payload")

## Broadcast Throttle

A broadcast throttle sends up to 4 throttle values in a singular CAN frame to a group of up to 4 motor controllers. This can reduce bandwidth required for throttle commands compared to sending direct throttle commands to each ESC.

### CAN ID - 0x08581600 | (Group CID \<\< 2)

The CAN ID for the broadcast throttle uses the group CID instead of the SID as follows:

The direct throttle message CAN ID is: 0x08581600 | (Group CID \<\< 2)

Where group CID is the target group CID.

For group CID 2 the CAN ID is: 0x08581608

**Advanced:**

| **FID**             | **CFC** | **CID**   |
| ------------------- | ------- | --------- |
| Device (Default 11) | 11      | Group CID |

### CAN Payload

The CAN payload is structured with 1-4 INT16 throttle values as follows:

| **Bytes**      | **Datatype** | **Content**                                                            |
| -------------- | ------------ | ---------------------------------------------------------------------- |
| 0-1            | INT16        | Throttle Percentage Value for group index 1 (mapped to +/- INT16\_MAX) |
| 2-3 (Optional) | INT16        | Throttle Percentage Value for group index 2 (mapped to +/- INT16\_MAX) |
| 4-5 (Optional) | INT16        | Throttle Percentage Value for group index 3 (mapped to +/- INT16\_MAX) |
| 6-7 (Optional) | INT16        | Throttle Percentage Value for group index 4 (mapped to +/- INT16\_MAX) |

![](https://api.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/LbimjDfKuYqnf6FYqYQkK_image.png)

### Example

The below diagram demonstrates how the broadcast throttle message operates with 4 ESCs with group CID 2:

![image.png](https://api.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/oCxFhh_677l5VbyPP5V_T_image-6.png)

# Telemetry

Telemetry is broadcast over the following messages. The rate at which each message type is sent is configurable in device settings.

| **CAN ID**                 | **CFC** | **CID** | **Function Name** | **Sender** | **Payload**        | **Description**                                                                                                                  |
| -------------------------- | ------- | ------- | ----------------- | ---------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| 0x08586400 \| (SID \<\< 2) | 50      | SID     | ESC Status 1      | ESC        | 4x 16 bit Statuses | ESC Status Broadcast 1<br />* Bus Voltage
* Bus Current
* Phase Current
* Mechanical RPM                                         |
| 0x08586600 \| (SID \<\< 2) | 51      | SID     | ESC Status 2      | ESC        | 4x 16 bit Statuses | ESC Status Broadcast 2<br />* Bridge Temperature
* Motor Temperature
* Status Flags
* ms since last command                      |
| 0x08586800 \| (SID \<\< 2) | 52      | SID     | ESC Status 3      | ESC        | 4x 16 bit Statuses | ESC Status Broadcast 3<br />* Output Power Percentage
* Input Duty Cycle Percentage
* Output Duty Cycle Percentage
* Motor Angle |

## ESC Status 1&#x20;

The ESC Status 1 telemetry broadcast is sent by each ESC at a configurable frequency, default 10Hz.

### CAN ID - 0x08586400 | (SID \<\< 2)

The ESC Status 1 message CAN ID is: 0x08586400 | (SID \<\< 2)

Where SID is the SID of the device sending the message.

For SID 1 the CAN ID is: 0x08586404

**Advanced:**

| **FID**             | **CFC** | **CID**    |
| ------------------- | ------- | ---------- |
| Device (Default 11) | 50      | Device SID |

### CAN Payload

The CAN payload is structured as follows:

| **Bytes** | **Datatype** | **Content**             |
| --------- | ------------ | ----------------------- |
| 0-1       | INT16        | Bus Voltage (V) \* 100  |
| 2-3       | INT16        | Bus Current (A) \* 10   |
| 4-5       | INT16        | Phase Current (A) \* 10 |
| 6-7       | UINT16       | Mechanical RPM          |

![image.png](https://api.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/EyAUmWy40R40NzUOm-PVU_image-7.png)

## ESC Status 2

The ESC Status 2 telemetry broadcast is sent by each ESC at a configurable frequency, default 10Hz.

### CAN ID - 0x08586600 | (SID \<\< 2)

The ESC Status 2 message CAN ID is: 0x08586600 | (SID \<\< 2)

Where SID is the SID of the device sending the message.

For SID 1 the CAN ID is: 0x08586604

**Advanced:**

| **FID**             | **CFC** | **CID**    |
| ------------------- | ------- | ---------- |
| Device (Default 11) | 51      | Device SID |

### CAN Payload

The CAN payload is structured as follows:

| **Bytes** | **Datatype** | **Content**                                   |
| --------- | ------------ | --------------------------------------------- |
| 0-1       | INT16        | Bridge Temperature (°C)                       |
| 2-3       | INT16        | Motor Temperature (°C)                        |
| 4-5       | UINT16       | Status Flags                                  |
| 6-7       | UINT16       | Milliseconds (ms) since last throttle command |

![image.png](https://api.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/EzDixwqs6u6J2uli22stu_image-8.png)

### Status Flags

The status flags field of the ESC Status 2 message is a bitfield, where each bit corresponds to a flag indicating device state. The flag mapping is below.

| **Bit Position** | **Flag**                     |
| ---------------- | ---------------------------- |
| 0                | Motor Armed                  |
| 1                | Motor Running                |
| 2                | Over Temperature Error       |
| 3                | Bus Over-Current Error       |
| 4                | Phase Over-Current Error     |
| 5                | Bus Over-Voltage Error       |
| 6                | Bus Under-Voltage Error      |
| 7                | Voltage Ripple Error         |
| 8                | Signal Loss Error            |
| 9                | Motor Saturated Error        |
| 10               | Motor Over-Temperature Error |
| 11               | RPM Limit Reached Error      |
| 12               | Device In Error State        |
| 13               | Output Shorted Error         |
| 14               | Startup Checks Failed Error  |

## ESC Status 3

The ESC Status 3 telemetry broadcast is sent by each ESC at a configurable frequency, default 10Hz.

### CAN ID - 0x08586800 | (SID \<\< 2)

The ESC Status 3 message CAN ID is: 0x08586800 | (SID \<\< 2)

Where SID is the SID of the device sending the message.

For SID 1 the CAN ID is: 0x08586804

**Advanced:**

| **FID**             | **CFC** | **CID**    |
| ------------------- | ------- | ---------- |
| Device (Default 11) | 52      | Device SID |

### CAN Payload

The CAN payload is structured as follows:

| **Bytes** | **Datatype** | **Content**                                                                 |
| --------- | ------------ | --------------------------------------------------------------------------- |
| 0-1       | INT16        | Output Power Percentage (relative to configured voltage and current limits) |
| 2-3       | INT16        | Input Duty Cycle Percentage                                                 |
| 4-5       | INT16        | Output Duty Cycle Percentage                                                |
| 6-7       | INT16        | Motor Angle (Degrees)                                                       |

![image.png](https://api.archbee.com/api/optimize/MIXUvgEo5LjmssoyMwenk/o2hnMpT4g-mKuvRDjxHqz_image-9.png)

