Difference between revisions of "CAN Protocol"
Alexalspach (Talk | contribs) (→ID (Message Identifier)) |
Alexalspach (Talk | contribs) (→ID (Message Identifier)) |
||
Line 45: | Line 45: | ||
====Command Identifiers==== | ====Command Identifiers==== | ||
− | + | {|style=" border-collapse: separate; border-spacing: 15; border-width: 2px; border-style: solid; border-color: #CCCCCC; padding: 0px; text-align: left; width: 800px" | |
+ | | style="padding: 3px 5px 2px 5px; background: #F0F0F0" | Variable Name | ||
+ | | style="padding: 3px 5px 2px 5px; background: #F0F0F0" | Value | ||
+ | | style="padding: 3px 5px 2px 5px; background: #F0F0F0" | Description | ||
+ | | style="padding: 3px 5px 2px 5px; background: #F0F0F0" | Source | ||
+ | | style="padding: 3px 5px 2px 5px; background: #F0F0F0" | Destination | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_SYSTEM_ON | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x01 | ||
+ | | style="padding: 2px 5px 2px 5px; | Start periodic communication | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_SYSTEM_OFF | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x02 | ||
+ | | style="padding: 2px 5px 2px 5px; | Stop periodic communication | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_PERIOD | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x03 | ||
+ | | style="padding: 2px 5px 2px 5px; | Set communication frequency | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_MODE_JOINT | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x04 | ||
+ | | style="padding: 2px 5px 2px 5px; | Command Transmission Mode | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_MODE_TASK | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x05 | ||
+ | | style="padding: 2px 5px 2px 5px; | Command Transmission Mode | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_TORQUE_1 | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x06 | ||
+ | | style="padding: 2px 5px 2px 5px; | Index finger (1) torque command | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_TORQUE_2 | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x07 | ||
+ | | style="padding: 2px 5px 2px 5px; | Middle finger (2) toque command | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_TORQUE_3 | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x08 | ||
+ | | style="padding: 2px 5px 2px 5px; | Pinky finger (3) torque command | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_TORQUE_4 | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x09 | ||
+ | | style="padding: 2px 5px 2px 5px; | Thumb torque command | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_POSITION_1 | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x0a | ||
+ | | style="padding: 2px 5px 2px 5px; | (unused) | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_POSITION_2 | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x0b | ||
+ | | style="padding: 2px 5px 2px 5px; | (unused) | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_POSITION_3 | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x0c | ||
+ | | style="padding: 2px 5px 2px 5px; | (unused) | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_SET_POSITION_4 | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x0d | ||
+ | | style="padding: 2px 5px 2px 5px; | (unused) | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_QUERY_STATE_DATA | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x0e | ||
+ | | style="padding: 2px 5px 2px 5px; | Request joint state | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_COMMON | ||
+ | |- | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_CMD_QUERY_STATE_DATA | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x0e | ||
+ | | style="padding: 2px 5px 2px 5px; | Joint state response | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_SUB_01<br>ID_DEVICE_SUB_02<br>ID_DEVICE_SUB_03<br>ID_DEVICE_SUB_04 | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | |- | ||
+ | | style="padding: 5px 5px 2px 5px; | ID_CMD_QUERY_CONTROL_DATA | ||
+ | | style="padding: 2px 5px 2px 5px; | 0x0f | ||
+ | | style="padding: 2px 5px 2px 5px; | Joint state response | ||
+ | | style="padding: 2px 5px 5px 5px; | ID_DEVICE_SUB_01<br>ID_DEVICE_SUB_02<br>ID_DEVICE_SUB_03<br>ID_DEVICE_SUB_04 | ||
+ | | style="padding: 2px 5px 2px 5px; | ID_DEVICE_MAIN | ||
+ | |- | ||
+ | <br> | ||
+ | |||
+ | ID_CMD_SET_SYSTEM_ON || 0x01 || Start periodic communication || ID_DEVICE_MAIN || ID_COMMON | ||
====Source and Destination Identifiers==== | ====Source and Destination Identifiers==== |
Revision as of 12:06, 19 October 2012
Contents |
CAN Communication
Baud-Rate
The CAN communication baud-rate is 1Mbps.
Non-Periodic Communication
Messages can be sent to initialize or stop CAN communication.
Periodic Communication
The Allegro Hand control software attempts to communicate with the real or simulated hand at a regular control interval. Every 3 milliseconds the joint torques are calculated and the joint angles are updated.
CAN Frames
Standard CAN Packet
The standard CAN packet used for communication contains 8 bytes.
typedef struct{ unsigned char STD_EXT; unsigned long msg_id; //message identifier unsigned char data_length; // char data[8]; // data array } can_msg;
ID (Message Identifier)
The 4 byte integer CAN message is split into the command ID (26 bits), destination ID (3bits) and source ID (3 bits).
1 | 8 | 16 | 24 | 26 | 27 | 29 | 30 | 32 |
Command ID | Dest. ID | Source ID |
Command Identifiers
Variable Name | Value | Description | Source | Destination |
ID_CMD_SET_SYSTEM_ON | 0x01 | Start periodic communication | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_SYSTEM_OFF | 0x02 | Stop periodic communication | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_PERIOD | 0x03 | Set communication frequency | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_MODE_JOINT | 0x04 | Command Transmission Mode | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_MODE_TASK | 0x05 | Command Transmission Mode | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_TORQUE_1 | 0x06 | Index finger (1) torque command | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_TORQUE_2 | 0x07 | Middle finger (2) toque command | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_TORQUE_3 | 0x08 | Pinky finger (3) torque command | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_TORQUE_4 | 0x09 | Thumb torque command | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_POSITION_1 | 0x0a | (unused) | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_POSITION_2 | 0x0b | (unused) | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_POSITION_3 | 0x0c | (unused) | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_SET_POSITION_4 | 0x0d | (unused) | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_QUERY_STATE_DATA | 0x0e | Request joint state | ID_DEVICE_MAIN | ID_COMMON |
ID_CMD_QUERY_STATE_DATA | 0x0e | Joint state response | ID_DEVICE_SUB_01 ID_DEVICE_SUB_02 ID_DEVICE_SUB_03 ID_DEVICE_SUB_04 |
ID_DEVICE_MAIN |
ID_CMD_QUERY_CONTROL_DATA | 0x0f | Joint state response | ID_DEVICE_SUB_01 ID_DEVICE_SUB_02 ID_DEVICE_SUB_03 ID_DEVICE_SUB_04 |
ID_DEVICE_MAIN |
Whos here now: Members 0 Guests 0 Bots & Crawlers 1 |