Hello,
"ethercat cstruct" tells you the meaning of the mapping (see comments after the pdo-entries): Example: /* Master 0, Slave 0 * Vendor ID: 0x00000002 * Product code: 0x04602c22 * Revision number: 0x00000000 */ ec_pdo_entry_info_t slave_0_pdo_entries[] = { {0xf100, 0x01, 16}, /* CouplerState */ {0x6020, 0x01, 8}, /* Channel 1 Status */ {0x0000, 0x00, 8}, /* Gap */ {0x6020, 0x03, 16}, /* Channel 1 Data */ {0x6020, 0x04, 8}, /* Channel 2 Status */ {0x0000, 0x00, 8}, /* Gap */ {0x6020, 0x06, 16}, /* Channel 2 Data */ {0x6020, 0x07, 8}, /* Channel 3 Status */ {0x0000, 0x00, 8}, /* Gap */ {0x6020, 0x09, 16}, /* Channel 3 Data */ {0x6020, 0x0a, 8}, /* Channel 4 Status */ {0x0000, 0x00, 8}, /* Gap */ {0x6020, 0x0c, 16}, /* Channel 4 Data */ {0x6030, 0x01, 8}, /* Channel 1 Status */ {0x0000, 0x00, 8}, /* Gap */ ... {0x6050, 0x04, 8}, /* Channel 2 Status */ {0x0000, 0x00, 8}, /* Gap */ {0x6050, 0x06, 16}, /* Channel 2 Data */ {0x6000, 0x01, 1}, /* Channel 1 */ {0x6000, 0x02, 1}, /* Channel 2 */ {0x6000, 0x03, 1}, /* Channel 3 */ {0x6000, 0x04, 1}, /* Channel 4 */ {0x6070, 0x01, 1}, /* Channel 1 */ {0x6070, 0x02, 1}, /* Channel 2 */ {0x0000, 0x00, 10}, /* Gap */ }; ec_pdo_info_t slave_0_pdos[] = { {0x1aff, 1, slave_0_pdo_entries + 0}, /* Status PDO */ {0x1a02, 12, slave_0_pdo_entries + 1}, /* TxPDO Mapping Terminal 003 */ {0x1a03, 12, slave_0_pdo_entries + 13}, /* TxPDO Mapping Terminal 004 */ {0x1a04, 12, slave_0_pdo_entries + 25}, /* TxPDO Mapping Terminal 005 */ {0x1a05, 6, slave_0_pdo_entries + 37}, /* TxPDO Mapping Terminal 006 */ {0x1a00, 4, slave_0_pdo_entries + 43}, /* TxPDO Mapping Terminal 001 */ {0x1a07, 2, slave_0_pdo_entries + 47}, /* TxPDO Mapping Terminal 008 */ {0x1b01, 1, slave_0_pdo_entries + 49}, /* TxPDO Digital Align */ }; ec_sync_info_t slave_0_syncs[] = { {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE}, {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE}, {2, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE}, {3, EC_DIR_INPUT, 8, slave_0_pdos + 0, EC_WD_DISABLE}, {0xff} }; End of example. Usually analog-IO is mapped with a status + a fill byte before the value word. All analog or "complex" IO-Terminals are mapped first and aligned to 16bit. At the end the digital IO-termials with bit-mapping follow without gaps of fill bits. The mapping of a single K-Bus slave is good documented in the Beckhoff documents for the terminal. Also TwinCat can be used to find out the mapping. Regards Wilhelm. Am 04.09.2014 09:15, schrieb Bilko AS, Oguz Dilmac: > Hello > > We have a problem with configuring BK1120. We made EK1100 run without a > problem. > > We found out that they are using different protocols to communicate the > modules (BK1120 K-Bus, and EK110 E-Bus). > We searched for information on how to create the cstruct for BK1120 and > how to map the connected I/0 modules but we couldnt find an answer that > exactly answers our question. > > Until now we ran "ethercat cstruct" and copy that into our code and it > goes to run state, fine, but we need an example or explanation of how > the connected modules match the entries in cstruct, where to read or > write to the I/O. > > Thanks > _______________________________________________ etherlab-users mailing list etherlab-users@etherlab.org http://lists.etherlab.org/mailman/listinfo/etherlab-users