25 |
25 |
26 // EtherCAT |
26 // EtherCAT |
27 ec_master_t *master = NULL; |
27 ec_master_t *master = NULL; |
28 ec_domain_t *domain1 = NULL; |
28 ec_domain_t *domain1 = NULL; |
29 |
29 |
30 // Prozessdaten |
30 // Datenfelder |
31 uint8_t *dig_out1; |
31 void *r_ssi; |
32 uint16_t *ssi_value; |
32 void *r_inc; |
33 uint16_t *inc_value; |
|
34 |
33 |
35 uint32_t angle0; |
34 // Kanäle |
|
35 uint32_t k_angle, k_pos; |
36 |
36 |
37 ec_field_init_t domain1_fields[] = { |
37 ec_field_init_t domain1_fields[] = { |
38 {(void **) &dig_out1, "2", "Beckhoff", "EL2004", ec_opvalue, 0, 1}, |
38 {&r_ssi, "1", "Beckhoff", "EL5001", ec_ipvalue, 0, 1}, |
39 {(void **) &ssi_value, "3", "Beckhoff", "EL5001", ec_ipvalue, 0, 1}, |
39 {&r_inc, "0:3", "Beckhoff", "EL5101", ec_ipvalue, 0, 1}, |
40 {(void **) &inc_value, "0:4", "Beckhoff", "EL5101", ec_ipvalue, 0, 1}, |
|
41 {} |
40 {} |
42 }; |
41 }; |
43 |
42 |
44 /*****************************************************************************/ |
43 /*****************************************************************************/ |
45 |
44 |
48 static unsigned int counter = 0; |
47 static unsigned int counter = 0; |
49 |
48 |
50 // Prozessdaten lesen und schreiben |
49 // Prozessdaten lesen und schreiben |
51 EtherCAT_rt_domain_xio(domain1); |
50 EtherCAT_rt_domain_xio(domain1); |
52 |
51 |
53 angle0 = (uint32_t) *inc_value; |
52 k_angle = EC_READ_U16(r_inc); |
|
53 k_pos = EC_READ_U32(r_ssi); |
54 |
54 |
55 if (counter) { |
55 if (counter) { |
56 counter--; |
56 counter--; |
57 } |
57 } |
58 else { |
58 else { |
59 counter = ABTASTFREQUENZ; |
59 counter = ABTASTFREQUENZ; |
60 printk(KERN_INFO "angle0 = %i\n", angle0); |
60 printk(KERN_INFO "k_angle = %i\n", k_angle); |
|
61 printk(KERN_INFO "k_pos = %i\n", k_pos); |
61 } |
62 } |
62 |
63 |
63 // Timer neu starten |
64 // Timer neu starten |
64 timer.expires += HZ / ABTASTFREQUENZ; |
65 timer.expires += HZ / ABTASTFREQUENZ; |
65 add_timer(&timer); |
66 add_timer(&timer); |