Hi Michael,
 
If a sync manager is designed to work in output, I don't think you can 
configure it as input or vice versa. In your case, you switched the SM1 from 
output to input. Look in the documentation of the EK1828 to see what direction 
each SM should have.
 
Philippe

________________________________

De : [email protected] 
[mailto:[email protected]] De la part de Michael Wenz
Envoyé : 3 juillet 2013 04:42
À : [email protected]
Objet : [etherlab-users] EtherCAT master 1.5.2: ec_sync_info_t



Hello,

 

I am using EtherCAT 1.5.2. The slave is from Beckhoff. It has the following 
configuration:

 

/* Master 0, Slave 5, "EK1828"

* Vendor ID:       0x00000002

* Product code:    0x07242c52

* Revision number: 0x00110000

*/

 

ec_pdo_entry_info_t slave_5_pdo_entries[] = {

    {0x0000, 0x00, 4}, /* Pad */

    {0x7000, 0x01, 1}, /* Output */

    {0x7010, 0x01, 1}, /* Output */

    {0x7020, 0x01, 1}, /* Output */

    {0x7030, 0x01, 1}, /* Output */

    {0x7040, 0x01, 1}, /* Output */

    {0x7050, 0x01, 1}, /* Output */

    {0x7060, 0x01, 1}, /* Output */

    {0x7070, 0x01, 1}, /* Output */

    {0x0000, 0x00, 4}, /* Pad */

    {0x6000, 0x01, 1}, /* Input */

    {0x6010, 0x01, 1}, /* Input */

    {0x6020, 0x01, 1}, /* Input */

    {0x6030, 0x01, 1}, /* Input */

    {0x0000, 0x00, 4}, /* Pad */

};

 

ec_pdo_info_t slave_5_pdos[] = {

    {0x1600, 2, slave_5_pdo_entries + 0}, /* Channel 5 */

    {0x1601, 1, slave_5_pdo_entries + 2}, /* Channel 6 */

    {0x1602, 1, slave_5_pdo_entries + 3}, /* Channel 7 */

    {0x1603, 1, slave_5_pdo_entries + 4}, /* Channel 8 */

    {0x1604, 1, slave_5_pdo_entries + 5}, /* Channel 9 */

    {0x1605, 1, slave_5_pdo_entries + 6}, /* Channel 10 */

    {0x1606, 1, slave_5_pdo_entries + 7}, /* Channel 11 */

    {0x1607, 2, slave_5_pdo_entries + 8}, /* Channel 12 */

    {0x1a00, 1, slave_5_pdo_entries + 10}, /* Channel 1 */

    {0x1a01, 1, slave_5_pdo_entries + 11}, /* Channel 2 */

    {0x1a02, 1, slave_5_pdo_entries + 12}, /* Channel 3 */

    {0x1a03, 2, slave_5_pdo_entries + 13}, /* Channel 4 */

};

 

ec_sync_info_t slave_5_syncs[] = {

    {0, EC_DIR_OUTPUT, 4, slave_5_pdos + 0, EC_WD_ENABLE},

    {1, EC_DIR_OUTPUT, 4, slave_5_pdos + 4, EC_WD_ENABLE},

    {2, EC_DIR_INPUT, 4, slave_5_pdos + 8, EC_WD_DISABLE},

    {0xff}

};

 

How is the array slave_5_syncs determined? 

First I have tried following array in my implementation.

ec_sync_info_t slave_5_newsyncs[] = {

    {0, EC_DIR_OUTPUT, 8, slave_5_pdos + 0, EC_WD_ENABLE},

    {1, EC_DIR_INPUT, 4, slave_5_pdos + 8, EC_WD_DISABLE},

    {0xff}

};

 

But then it is only possible to write the outputs. It is not possible to read 
the inputs. The input values are always 0. But when using slave_5_syncs it is 
also possible to read the inputs.

 

Thank you in advance.

 

Best regards

               Michael

_______________________________________________
etherlab-users mailing list
[email protected]
http://lists.etherlab.org/mailman/listinfo/etherlab-users

Reply via email to