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