10 |
10 |
11 #include <linux/delay.h> |
11 #include <linux/delay.h> |
12 #include <linux/slab.h> |
12 #include <linux/slab.h> |
13 #include <linux/module.h> |
13 #include <linux/module.h> |
14 |
14 |
15 #include "../include/EtherCAT_si.h" |
|
16 #include "master.h" |
15 #include "master.h" |
17 |
16 |
18 /*****************************************************************************/ |
17 /*****************************************************************************/ |
19 |
18 |
20 /** |
19 /** |
21 Schreibt ein CANopen-SDO (service data object). |
20 Schreibt ein CANopen-SDO (service data object). |
22 */ |
21 */ |
23 |
22 |
24 int EtherCAT_rt_canopen_sdo_write(ec_slave_t *slave, /**< EtherCAT-Slave */ |
23 int ecrt_slave_sdo_write(ec_slave_t *slave, /**< EtherCAT-Slave */ |
25 uint16_t sdo_index, /**< SDO-Index */ |
24 uint16_t sdo_index, /**< SDO-Index */ |
26 uint8_t sdo_subindex, /**< SDO-Subindex */ |
25 uint8_t sdo_subindex, /**< SDO-Subindex */ |
27 uint32_t value, /**< Neuer Wert */ |
26 uint32_t value, /**< Neuer Wert */ |
28 size_t size /**< Größe des Datenfeldes */ |
27 size_t size /**< Größe des Datenfeldes */ |
29 ) |
28 ) |
196 /*****************************************************************************/ |
195 /*****************************************************************************/ |
197 |
196 |
198 /** |
197 /** |
199 Schweibt ein CANopen-SDO (Variante mit Angabe des Masters und der Adresse). |
198 Schweibt ein CANopen-SDO (Variante mit Angabe des Masters und der Adresse). |
200 |
199 |
201 Siehe EtherCAT_rt_canopen_sdo_write() |
200 Siehe ecrt_slave_sdo_write() |
202 |
201 |
203 \return 0 wenn alles ok, < 0 bei Fehler |
202 \return 0 wenn alles ok, < 0 bei Fehler |
204 */ |
203 */ |
205 |
204 |
206 int EtherCAT_rt_canopen_sdo_addr_write(ec_master_t *master, |
205 int ecrt_master_sdo_write(ec_master_t *master, |
207 /**< EtherCAT-Master */ |
206 /**< EtherCAT-Master */ |
208 const char *addr, |
207 const char *addr, |
209 /**< Addresse, siehe |
208 /**< Addresse, siehe ec_master_slave_address() */ |
210 ec_master_slave_address() */ |
209 uint16_t index, |
211 uint16_t index, |
210 /**< SDO-Index */ |
212 /**< SDO-Index */ |
211 uint8_t subindex, |
213 uint8_t subindex, |
212 /**< SDO-Subindex */ |
214 /**< SDO-Subindex */ |
213 uint32_t value, |
215 uint32_t value, |
214 /**< Neuer Wert */ |
216 /**< Neuer Wert */ |
215 size_t size |
217 size_t size |
216 /**< Größe des Datenfeldes */ |
218 /**< Größe des Datenfeldes */ |
217 ) |
219 ) |
|
220 { |
218 { |
221 ec_slave_t *slave; |
219 ec_slave_t *slave; |
222 if (!(slave = ec_master_slave_address(master, addr))) return -1; |
220 if (!(slave = ec_master_slave_address(master, addr))) return -1; |
223 return EtherCAT_rt_canopen_sdo_write(slave, index, subindex, value, size); |
221 return ecrt_slave_sdo_write(slave, index, subindex, value, size); |
224 } |
222 } |
225 |
223 |
226 /*****************************************************************************/ |
224 /*****************************************************************************/ |
227 |
225 |
228 /** |
226 /** |
229 Liest ein CANopen-SDO (Variante mit Angabe des Masters und der Adresse). |
227 Liest ein CANopen-SDO (Variante mit Angabe des Masters und der Adresse). |
230 |
228 |
231 Siehe EtherCAT_rt_canopen_sdo_read() |
229 Siehe ecrt_slave_sdo_read() |
232 |
230 |
233 \return 0 wenn alles ok, < 0 bei Fehler |
231 \return 0 wenn alles ok, < 0 bei Fehler |
234 */ |
232 */ |
235 |
233 |
236 int EtherCAT_rt_canopen_sdo_addr_read(ec_master_t *master, |
234 int ecrt_master_sdo_read(ec_master_t *master, |
237 /**< EtherCAT-Slave */ |
235 /**< EtherCAT-Slave */ |
238 const char *addr, |
236 const char *addr, |
239 /**< Addresse, siehe |
237 /**< Addresse, siehe ec_master_slave_address() */ |
240 ec_master_slave_address() */ |
238 uint16_t index, |
241 uint16_t index, |
239 /**< SDO-Index */ |
242 /**< SDO-Index */ |
240 uint8_t subindex, |
243 uint8_t subindex, |
241 /**< SDO-Subindex */ |
244 /**< SDO-Subindex */ |
242 uint32_t *value |
245 uint32_t *value |
243 /**< Speicher für gel. Wert */ |
246 /**< Speicher für gel. Wert */ |
244 ) |
247 ) |
|
248 { |
245 { |
249 ec_slave_t *slave; |
246 ec_slave_t *slave; |
250 if (!(slave = ec_master_slave_address(master, addr))) return -1; |
247 if (!(slave = ec_master_slave_address(master, addr))) return -1; |
251 return EtherCAT_rt_canopen_sdo_read(slave, index, subindex, value); |
248 return ecrt_slave_sdo_read(slave, index, subindex, value); |
252 } |
249 } |
253 |
250 |
254 /*****************************************************************************/ |
251 /*****************************************************************************/ |
255 |
252 |
256 EXPORT_SYMBOL(EtherCAT_rt_canopen_sdo_write); |
253 EXPORT_SYMBOL(ecrt_slave_sdo_write); |
257 EXPORT_SYMBOL(EtherCAT_rt_canopen_sdo_read); |
254 EXPORT_SYMBOL(ecrt_slave_sdo_read); |
258 EXPORT_SYMBOL(EtherCAT_rt_canopen_sdo_addr_write); |
255 EXPORT_SYMBOL(ecrt_master_sdo_write); |
259 EXPORT_SYMBOL(EtherCAT_rt_canopen_sdo_addr_read); |
256 EXPORT_SYMBOL(ecrt_master_sdo_read); |
260 |
257 |
261 /*****************************************************************************/ |
258 /*****************************************************************************/ |
262 |
259 |
263 /* Emacs-Konfiguration |
260 /* Emacs-Konfiguration |
264 ;;; Local Variables: *** |
261 ;;; Local Variables: *** |