[etherlab-users] EtherCAT master 1.5.2: ec_sync_info_t

Michael Wenz Michael.Wenz at itk-engineering.de
Wed Jul 3 10:41:34 CEST 2013


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.etherlab.org/pipermail/etherlab-users/attachments/20130703/0d8e849f/attachment-0002.htm>


More information about the Etherlab-users mailing list