Dynamixel  2.9.5
RoadNarrows Robotics Dynamixel Package
cModPktProtocol.doxy
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // Package: Dynamixel
4 //
5 // File: cModPktProtocol.doxy
6 //
7 // Version:
8 // $LastChangedDate: 2014-06-25 13:09:23 -0600 (Wed, 25 Jun 2014) $
9 // $Rev: 3669 $
10 //
11 // Description:
12 // Defines Dynamixel Bus Packet Protocol
13 //
14 ////////////////////////////////////////////////////////////////////////////////
15 
16 /*! \file */
17 
18 /*!
19  * \addtogroup dyna_bus_proto
20 \section dbp_intro Intro
21 The Dynamixel Bus packats are tranmitted over a half-duplex serial interface
22 at baud rates up to 3Mbs. The host initiates communication by transmitting a
23 request and then waits for a response, if any, from the servo.
24 There are two broad versions of the protocol:
25  - Version 1: Dynamixel product line (e.g. AX, MX, etc).
26  - Version 2: Dynamixel Pro product line.
27 
28 Currently, only Version 1 of the protocol is supported.
29 
30 \section dbp_pkt_types Supported Packets Types
31 \termblock
32 \term \b Ping \termdata Pings the specified servo. \endterm
33 \term \b Read \termdata Read byte/word from the specified servo. \endterm
34 \term \b Write \termdata Write byte/word to the specified servo. \endterm
35 \term \b SyncWrite
36  \termdata Synchonize write data to a specified set of servos.
37 \endterm
38 \endtermblock
39 
40 \section dbp_pkt_fields Packet Fields
41 \termblock
42 \term \e Field \termdata \e Pos \termdata \e Len \termdata \e Values
43  \termdata \e Notes
44 \endterm
45 \term FRAME \termdata 0 \termdata 2 \termdata 0xffff
46  \termdata All tx/rx packets begin with the frame bytes.
47 \endterm
48 \term id \termdata 2 \termdata 1 \termdata 0-253, 254
49  \termdata Servo identifier: 0-253, BROADCAST: 254
50 \endterm
51 \term len \termdata 3 \termdata 1 \termdata 2-255
52  \termdata Length of packet excluding FRAME, len, and chksum.
53 \endterm
54 \term inst \termdata 4 \termdata 1 \termdata enum
55  \termdata Instruction. PING: 1, READ: 2, WRITE: 3, SYNC_WRITE: 131
56 \endterm
57 \term addr \termdata 5 \termdata 1 \termdata 0-255
58  \termdata Address of servo control table data.
59 \endterm
60 \term val_len \termdata 6 \termdata 1 \termdata 1, 2
61  \termdata Length of servo control table data.
62 \endterm
63 \term val \termdata - \termdata 1 \termdata byte
64  \termdata Byte read/written from/to servo control.
65 \endterm
66 \term val_lsb \termdata - \termdata 1 \termdata byte
67  \termdata Word LSB read/written from/to servo control table.
68 \endterm
69 \term val_msb \termdata - \termdata 1 \termdata byte
70  \termdata Word MSB read/written from/to servo control table.
71 \endterm
72 \term chksum \termdata len+3 \termdata 1 \termdata byte
73  \termdata Checksum over packet excluding FRAME.
74 \endterm
75 \endtermblock
76 
77 \section dbp_pkt Packet Formats
78 \subsection dbp_pkt_ping Ping
79 \beginhtml
80 <table class="rn-std" style="margin-bottom:10px;">
81 <tr>
82  <td style="text-align:center; width:5em;">TX (6)</td>
83  <td style="text-align:center; width:5em;">0xff</td>
84  <td style="text-align:center; width:5em;">0xff</td>
85  <td style="text-align:center; width:5em;">id</td>
86  <td style="text-align:center; width:5em;">2</td>
87  <td style="text-align:center; width:5em;">PING</td>
88  <td style="text-align:center; width:5em;">chksum</td>
89 </tr>
90 </table>
91 <table class="rn-std" style="margin-bottom:10px;">
92 <tr>
93  <td style="text-align:center; width:5em;">RX (6)</td>
94  <td style="text-align:center; width:5em;">0xff</td>
95  <td style="text-align:center; width:5em;">0xff</td>
96  <td style="text-align:center; width:5em;">id</td>
97  <td style="text-align:center; width:5em;">2</td>
98  <td style="text-align:center; width:5em;">PING</td>
99  <td style="text-align:center; width:5em;">chksum</td>
100 </tr>
101 </table>
102 \endhtml
103 
104 \subsection dbp_pkt_read_byte Read Byte
105 \beginhtml
106 <table class="rn-std" style="margin-bottom:10px;">
107 <tr>
108  <td style="text-align:center; width:5em;">TX (8)</td>
109  <td style="text-align:center; width:5em;">0xff</td>
110  <td style="text-align:center; width:5em;">0xff</td>
111  <td style="text-align:center; width:5em;">id</td>
112  <td style="text-align:center; width:5em;">4</td>
113  <td style="text-align:center; width:5em;">READ</td>
114  <td style="text-align:center; width:5em;">addr</td>
115  <td style="text-align:center; width:5em;">1</td>
116  <td style="text-align:center; width:5em;">chksum</td>
117 </tr>
118 </table>
119 <table class="rn-std" style="margin-bottom:10px;">
120 <tr>
121  <td style="text-align:center; width:5em;">RX (8)</td>
122  <td style="text-align:center; width:5em;">0xff</td>
123  <td style="text-align:center; width:5em;">0xff</td>
124  <td style="text-align:center; width:5em;">id</td>
125  <td style="text-align:center; width:5em;">4</td>
126  <td style="text-align:center; width:5em;">READ</td>
127  <td style="text-align:center; width:5em;">addr</td>
128  <td style="text-align:center; width:5em;">val</td>
129  <td style="text-align:center; width:5em;">chksum</td>
130 </tr>
131 </table>
132 \endhtml
133 
134 \subsection dbp_pkt_read_word Read Word
135 \beginhtml
136 <table class="rn-std" style="margin-bottom:10px;">
137 <tr>
138  <td style="text-align:center; width:5em;">TX (8)</td>
139  <td style="text-align:center; width:5em;">0xff</td>
140  <td style="text-align:center; width:5em;">0xff</td>
141  <td style="text-align:center; width:5em;">id</td>
142  <td style="text-align:center; width:5em;">4</td>
143  <td style="text-align:center; width:5em;">READ</td>
144  <td style="text-align:center; width:5em;">addr</td>
145  <td style="text-align:center; width:5em;">2</td>
146  <td style="text-align:center; width:5em;">chksum</td>
147 </tr>
148 </table>
149 <table class="rn-std" style="margin-bottom:10px;">
150 <tr>
151  <td style="text-align:center; width:5em;">RX (9)</td>
152  <td style="text-align:center; width:5em;">0xff</td>
153  <td style="text-align:center; width:5em;">0xff</td>
154  <td style="text-align:center; width:5em;">id</td>
155  <td style="text-align:center; width:5em;">5</td>
156  <td style="text-align:center; width:5em;">READ</td>
157  <td style="text-align:center; width:5em;">addr</td>
158  <td style="text-align:center; width:5em;">val_lsb</td>
159  <td style="text-align:center; width:5em;">val_msb</td>
160  <td style="text-align:center; width:5em;">chksum</td>
161 </tr>
162 </table>
163 \endhtml
164 
165 \subsection dbp_pkt_write_byte Write Byte
166 \beginhtml
167 <table class="rn-std" style="margin-bottom:10px;">
168 <tr>
169  <td style="text-align:center; width:5em;">TX (8)</td>
170  <td style="text-align:center; width:5em;">0xff</td>
171  <td style="text-align:center; width:5em;">0xff</td>
172  <td style="text-align:center; width:5em;">id</td>
173  <td style="text-align:center; width:5em;">4</td>
174  <td style="text-align:center; width:5em;">WRITE</td>
175  <td style="text-align:center; width:5em;">addr</td>
176  <td style="text-align:center; width:5em;">val</td>
177  <td style="text-align:center; width:5em;">chksum</td>
178 </tr>
179 </table>
180 <table class="rn-std" style="margin-bottom:10px;">
181 <tr>
182  <td style="text-align:center; width:5em;">RX (6)</td>
183  <td style="text-align:center; width:5em;">0xff</td>
184  <td style="text-align:center; width:5em;">0xff</td>
185  <td style="text-align:center; width:5em;">id</td>
186  <td style="text-align:center; width:5em;">2</td>
187  <td style="text-align:center; width:5em;">WRITE</td>
188  <td style="text-align:center; width:5em;">chksum</td>
189 </tr>
190 </table>
191 \endhtml
192 
193 \subsection dbp_pkt_write_word Write Word
194 \beginhtml
195 <table class="rn-std" style="margin-bottom:10px;">
196 <tr>
197  <td style="text-align:center; width:5em;">TX (9)</td>
198  <td style="text-align:center; width:5em;">0xff</td>
199  <td style="text-align:center; width:5em;">0xff</td>
200  <td style="text-align:center; width:5em;">id</td>
201  <td style="text-align:center; width:5em;">5</td>
202  <td style="text-align:center; width:5em;">WRITE</td>
203  <td style="text-align:center; width:5em;">addr</td>
204  <td style="text-align:center; width:5em;">val_lsb</td>
205  <td style="text-align:center; width:5em;">val_msb</td>
206  <td style="text-align:center; width:5em;">chksum</td>
207 </tr>
208 </table>
209 <table class="rn-std" style="margin-bottom:10px;">
210 <tr>
211  <td style="text-align:center; width:5em;">RX (6)</td>
212  <td style="text-align:center; width:5em;">0xff</td>
213  <td style="text-align:center; width:5em;">0xff</td>
214  <td style="text-align:center; width:5em;">id</td>
215  <td style="text-align:center; width:5em;">2</td>
216  <td style="text-align:center; width:5em;">WRITE</td>
217  <td style="text-align:center; width:5em;">chksum</td>
218 </tr>
219 </table>
220 \endhtml
221 
222 \subsection dbp_pkt_sync_write_byte Sync Write Byte
223 \beginhtml
224 <table class="rn-std" style="margin-bottom:10px;">
225 <tr>
226  <td style="text-align:center; width:6em;">TX (len+4)</td>
227  <td style="text-align:center; width:5em;">0xff</td>
228  <td style="text-align:center; width:5em;">0xff</td>
229  <td style="text-align:center; width:5em;">BROADCAST</td>
230  <td style="text-align:center; width:5em;">4+2*n</td>
231  <td style="text-align:center; width:5em;">SYNC_WRITE</td>
232  <td style="text-align:center; width:5em;">addr</td>
233  <td style="text-align:center; width:5em;">1</td>
234  <td style="text-align:center; width:5em;">id_1</td>
235  <td style="text-align:center; width:5em;">val_1</td>
236  <td style="text-align:center; width:3em;">...</td>
237  <td style="text-align:center; width:5em;">id_n</td>
238  <td style="text-align:center; width:5em;">val_n</td>
239  <td style="text-align:center; width:5em;">chksum</td>
240 </tr>
241 </table>
242 <p>no response</p>
243 \endhtml
244 
245 
246 \subsection dbp_pkt_sync_write_word Sync Write Word
247 \beginhtml
248 <table class="rn-std" style="margin-bottom:10px;">
249 <tr>
250  <td style="text-align:center; width:6em;">TX (len+4)</td>
251  <td style="text-align:center; width:5em;">0xff</td>
252  <td style="text-align:center; width:5em;">0xff</td>
253  <td style="text-align:center; width:5em;">BROADCAST</td>
254  <td style="text-align:center; width:5em;">4+3*n</td>
255  <td style="text-align:center; width:5em;">SYNC_WRITE</td>
256  <td style="text-align:center; width:5em;">addr</td>
257  <td style="text-align:center; width:5em;">2</td>
258  <td style="text-align:center; width:5em;">id_1</td>
259  <td style="text-align:center; width:5em;">val_lsb_1</td>
260  <td style="text-align:center; width:5em;">val_msb_1</td>
261  <td style="text-align:center; width:3em;">...</td>
262  <td style="text-align:center; width:5em;">id_n</td>
263  <td style="text-align:center; width:5em;">val_lsb_n</td>
264  <td style="text-align:center; width:5em;">val_msb_n</td>
265  <td style="text-align:center; width:5em;">chksum</td>
266 </tr>
267 </table>
268 <p>no response</p>
269 \endhtml
270 
271  */
272 \endhtml
273 
274 
275  */