43 unsigned char fmmu0_41xx[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, |
43 unsigned char fmmu0_41xx[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, |
44 0x00, 0x10, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00}; |
44 0x00, 0x10, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00}; |
45 |
45 |
46 /*****************************************************************************/ |
46 /*****************************************************************************/ |
47 |
47 |
48 /* Lese- und Schreibfunktionen */ |
|
49 |
|
50 int read_1014(unsigned char *data, unsigned int channel) |
|
51 { |
|
52 return (data[0] >> channel) & 0x01; |
|
53 } |
|
54 |
|
55 void write_2004(unsigned char *data, unsigned int channel, int value) |
|
56 { |
|
57 if (value) { |
|
58 data[0] |= (1 << channel); |
|
59 } |
|
60 else { |
|
61 data[0] &= ~(1 << channel); |
|
62 } |
|
63 } |
|
64 |
|
65 int read_31xx(unsigned char *data, unsigned int channel) |
|
66 { |
|
67 return (short int) ((data[channel * 3 + 2] << 8) | data[channel * 3 + 1]); |
|
68 } |
|
69 |
|
70 void write_41xx(unsigned char *data, unsigned int channel, int value) |
|
71 { |
|
72 data[channel * 3 + 1] = (value & 0xFF00) >> 8; |
|
73 data[channel * 3 + 2] = value & 0xFF; |
|
74 } |
|
75 |
|
76 /*****************************************************************************/ |
|
77 |
|
78 /* Klemmen-Objekte */ |
48 /* Klemmen-Objekte */ |
79 |
49 |
80 ec_slave_desc_t Beckhoff_EK1100[] = |
50 ec_slave_type_t Beckhoff_EK1100[] = |
81 {{ |
51 {{ |
82 "Beckhoff", "EK1100", "Bus Coupler", |
52 "Beckhoff", "EK1100", "Bus Coupler", |
83 EC_NOSYNC_SLAVE, |
53 EC_NOSYNC_SLAVE, NULL, NULL, NULL, NULL, NULL, 0 |
84 NULL, NULL, NULL, NULL, |
|
85 NULL, |
|
86 0, 0, |
|
87 NULL, NULL |
|
88 }}; |
54 }}; |
89 |
55 |
90 ec_slave_desc_t Beckhoff_EL1014[] = |
56 ec_slave_type_t Beckhoff_EK1110[] = |
|
57 {{ |
|
58 "Beckhoff", "EK1110", "Extension terminal", |
|
59 EC_NOSYNC_SLAVE, NULL, NULL, NULL, NULL, NULL, 0 |
|
60 }}; |
|
61 |
|
62 ec_slave_type_t Beckhoff_EL1014[] = |
91 {{ |
63 {{ |
92 "Beckhoff", "EL1014", "4x Digital Input", |
64 "Beckhoff", "EL1014", "4x Digital Input", |
93 EC_SIMPLE_SLAVE, |
65 EC_SIMPLE_SLAVE, sm0_1014, NULL, NULL, NULL, fmmu0_1014, 1 |
94 sm0_1014, NULL, NULL, NULL, |
|
95 fmmu0_1014, |
|
96 1, 4, |
|
97 read_1014, NULL |
|
98 }}; |
66 }}; |
99 |
67 |
100 ec_slave_desc_t Beckhoff_EL2004[] = |
68 ec_slave_type_t Beckhoff_EL2004[] = |
101 {{ |
69 {{ |
102 "Beckhoff", "EL2004", "4x Digital Output", |
70 "Beckhoff", "EL2004", "4x Digital Output", |
103 EC_SIMPLE_SLAVE, |
71 EC_SIMPLE_SLAVE, sm0_2004, NULL, NULL, NULL, fmmu0_2004, 1 |
104 sm0_2004, NULL, NULL, NULL, |
|
105 fmmu0_2004, |
|
106 1, 4, |
|
107 NULL, write_2004 |
|
108 }}; |
72 }}; |
109 |
73 |
110 ec_slave_desc_t Beckhoff_EL3102[] = |
74 ec_slave_type_t Beckhoff_EL3102[] = |
111 {{ |
75 {{ |
112 "Beckhoff", "EL3102", "2x Analog Input diff.", |
76 "Beckhoff", "EL3102", "2x Analog Input diff.", |
113 EC_MAILBOX_SLAVE, |
77 EC_MAILBOX_SLAVE, sm0_multi, sm1_multi, sm2_31xx, sm3_31xx, fmmu0_31xx, 6 |
114 sm0_multi, sm1_multi, sm2_31xx, sm3_31xx, |
|
115 fmmu0_31xx, |
|
116 6, 2, |
|
117 read_31xx, NULL |
|
118 }}; |
78 }}; |
119 |
79 |
120 ec_slave_desc_t Beckhoff_EL3162[] = |
80 ec_slave_type_t Beckhoff_EL3162[] = |
121 {{ |
81 {{ |
122 "Beckhoff", "EL3162", "2x Analog Input", |
82 "Beckhoff", "EL3162", "2x Analog Input", |
123 EC_MAILBOX_SLAVE, |
83 EC_MAILBOX_SLAVE, sm0_multi, sm1_multi, sm2_31xx, sm3_31xx, fmmu0_31xx, 6 |
124 sm0_multi, sm1_multi, sm2_31xx, sm3_31xx, |
|
125 fmmu0_31xx, |
|
126 6, 2, |
|
127 read_31xx, NULL |
|
128 }}; |
84 }}; |
129 |
85 |
130 ec_slave_desc_t Beckhoff_EL4102[] = |
86 ec_slave_type_t Beckhoff_EL4102[] = |
131 {{ |
87 {{ |
132 "Beckhoff", "EL4102", "2x Analog Output", |
88 "Beckhoff", "EL4102", "2x Analog Output", |
133 EC_MAILBOX_SLAVE, |
89 EC_MAILBOX_SLAVE, sm0_multi, sm1_multi, sm2_41xx, NULL, fmmu0_41xx, 4 |
134 sm0_multi, sm1_multi, sm2_41xx, NULL, |
|
135 fmmu0_41xx, |
|
136 4, 2, |
|
137 NULL, write_41xx |
|
138 }}; |
90 }}; |
139 |
91 |
140 ec_slave_desc_t Beckhoff_EL4132[] = |
92 ec_slave_type_t Beckhoff_EL4132[] = |
141 {{ |
93 {{ |
142 "Beckhoff", "EL4132", "2x Analog Output diff.", |
94 "Beckhoff", "EL4132", "2x Analog Output diff.", |
143 EC_MAILBOX_SLAVE, |
95 EC_MAILBOX_SLAVE, sm0_multi, sm1_multi, sm2_41xx, NULL, fmmu0_41xx, 4 |
144 sm0_multi, sm1_multi, sm2_41xx, NULL, |
|
145 fmmu0_41xx, |
|
146 4, 2, |
|
147 NULL, write_41xx |
|
148 }}; |
96 }}; |
149 |
97 |
150 ec_slave_desc_t Beckhoff_EL5001[] = |
98 ec_slave_type_t Beckhoff_EL5001[] = |
151 {{ |
99 {{ |
152 "Beckhoff", "EL5001", "SSI-Interface", |
100 "Beckhoff", "EL5001", "SSI-Interface", // Noch nicht eingepflegt... |
153 EC_SIMPLE_SLAVE, |
101 EC_SIMPLE_SLAVE, NULL, NULL, NULL, NULL, NULL, 0 |
154 NULL, NULL, NULL, NULL, // Noch nicht eingepflegt... |
|
155 NULL, |
|
156 0, 0, |
|
157 NULL, NULL |
|
158 }}; |
102 }}; |
159 |
103 |
160 /*****************************************************************************/ |
104 /*****************************************************************************/ |
161 |
105 |
162 /** |
106 /** |
169 |
113 |
170 ec_slave_ident_t slave_idents[] = |
114 ec_slave_ident_t slave_idents[] = |
171 { |
115 { |
172 {0x00000002, 0x03F63052, Beckhoff_EL1014}, |
116 {0x00000002, 0x03F63052, Beckhoff_EL1014}, |
173 {0x00000002, 0x044C2C52, Beckhoff_EK1100}, |
117 {0x00000002, 0x044C2C52, Beckhoff_EK1100}, |
|
118 {0x00000002, 0x04562C52, Beckhoff_EK1110}, |
174 {0x00000002, 0x07D43052, Beckhoff_EL2004}, |
119 {0x00000002, 0x07D43052, Beckhoff_EL2004}, |
175 {0x00000002, 0x0C1E3052, Beckhoff_EL3102}, |
120 {0x00000002, 0x0C1E3052, Beckhoff_EL3102}, |
176 {0x00000002, 0x0C5A3052, Beckhoff_EL3162}, |
121 {0x00000002, 0x0C5A3052, Beckhoff_EL3162}, |
177 {0x00000002, 0x10063052, Beckhoff_EL4102}, |
122 {0x00000002, 0x10063052, Beckhoff_EL4102}, |
178 {0x00000002, 0x10243052, Beckhoff_EL4132}, |
123 {0x00000002, 0x10243052, Beckhoff_EL4132}, |