[etherlab-users] Using BK1120

Bilko AS, Oguz Dilmac odilmac at bilko-automation.com
Fri Sep 12 18:43:28 CEST 2014


Hi Mr Wilhelm,

I managed to read necessary objects and construct cstruct output myself.
It looks OK when I compare it with the cstruct output.

But still I can't access IO.

For test, I tried to write to a 8 channel digital output device (AKD DT 
004, But twincat reads it as KL2408)
I get the pdo entry offset using *ecrt_slave_config_reg_pdo_entry* function.
I pass the first channel object index and subindex (which is for this 
case 0x7000:01) as parameters. Result seems OK.
For only one device attached to coupler I get "2". I guess first two 
bytes are reserved for the control word of the coupler.
But nothing happens when I write to this domain data.

I couldn't find any information about control word of the coupler. 
Should I set something?
Also I couldn't find any information about terminal tables too. How 
should I set them?

If you can send me a link of some documents I'd be very grateful.

Best regards,
Oguz.

09.09.2014 22:02 tarihinde, Bilko AS, Oguz Dilmac yazdı:
> Hi,
>
> Infact we are using kollmorgen ECT 000 bus coupler. I examined the 
> device documents more carefully.
> Thank you for the tips. I think I understand it now.
>
> Best regards,
> Oguz.
>
> 04.09.2014 11:35 tarihinde, Dr.-Ing. Wilhelm Hagemeister yazdı:
>> 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
>>>
>>
>>
>

-- 
Oguz Dilmac
ARGE Bolumu

Bilko AS, R&D Department
====================================
Perpa Ticaret Merkezi B Blok Kat 13 Nr. 2568
TR-34384 Okmeydani Istanbul Turkey
Tel : +90 212 220 07 40  Fax :   +90 212 210 47 01
e-mail : odilmac at bilko-automation.com
web site : http://www.bilko-automation.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.etherlab.org/pipermail/etherlab-users/attachments/20140912/74d588d9/attachment-0004.htm>


More information about the Etherlab-users mailing list