Beckhoff EL2522 lcec xml file
- emresensoy
- Offline
- Senior Member
-
Less
More
- Posts: 64
- Thank you received: 33
03 Dec 2025 17:44 #339692
by emresensoy
Beckhoff EL2522 lcec xml file was created by emresensoy
There is no builtin driver for EL2522,
I need help to convert ethercat xml output to lcec xml
Thanks,
I need help to convert ethercat xml output to lcec xml
Thanks,
<EtherCATInfo>
<!-- Slave 6 -->
<Vendor>
<Id>2</Id>
</Vendor>
<Descriptions>
<Devices>
<Device>
<Type ProductCode="#x09da3052" RevisionNo="#x00160000">EL2522</Type>
<Name><![CDATA[EL2522 2K. Pulse Train Ausgang]]></Name>
<Sm Enable="1" StartAddress="#x1000" ControlByte="#x26" DefaultSize="128" />
<Sm Enable="1" StartAddress="#x1080" ControlByte="#x22" DefaultSize="128" />
<Sm Enable="1" StartAddress="#x1100" ControlByte="#x24" DefaultSize="28" />
<Sm Enable="1" StartAddress="#x1280" ControlByte="#x20" DefaultSize="16" />
<RxPdo Sm="2" Fixed="1" Mandatory="1">
<Index>#x1600</Index>
<Name>PTO RxPDO-Map Control Ch.1</Name>
<Entry>
<Index>#x7000</Index>
<SubIndex>1</SubIndex>
<BitLen>1</BitLen>
<Name>Frequency select</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7000</Index>
<SubIndex>2</SubIndex>
<BitLen>1</BitLen>
<Name>Disable ramp</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7000</Index>
<SubIndex>3</SubIndex>
<BitLen>1</BitLen>
<Name>Go counter</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>13</BitLen>
</Entry>
<Entry>
<Index>#x7000</Index>
<SubIndex>17</SubIndex>
<BitLen>16</BitLen>
<Name>Frequency value</Name>
<DataType>UINT16</DataType>
</Entry>
</RxPdo>
<RxPdo Sm="2" Fixed="1" Mandatory="1">
<Index>#x1603</Index>
<Name>PTO RxPDO-Map Target Ch.1</Name>
<Entry>
<Index>#x7000</Index>
<SubIndex>18</SubIndex>
<BitLen>32</BitLen>
<Name>Target counter value</Name>
<DataType>UINT32</DataType>
</Entry>
</RxPdo>
<RxPdo Sm="2" Fixed="1" Mandatory="1">
<Index>#x1605</Index>
<Name>PTO RxPDO-Map Control Ch.2</Name>
<Entry>
<Index>#x7010</Index>
<SubIndex>1</SubIndex>
<BitLen>1</BitLen>
<Name>Frequency select</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7010</Index>
<SubIndex>2</SubIndex>
<BitLen>1</BitLen>
<Name>Disable ramp</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7010</Index>
<SubIndex>3</SubIndex>
<BitLen>1</BitLen>
<Name>Go counter</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>13</BitLen>
</Entry>
<Entry>
<Index>#x7010</Index>
<SubIndex>17</SubIndex>
<BitLen>16</BitLen>
<Name>Frequency value</Name>
<DataType>UINT16</DataType>
</Entry>
</RxPdo>
<RxPdo Sm="2" Fixed="1" Mandatory="1">
<Index>#x1608</Index>
<Name>PTO RxPDO-Map Target Ch.2</Name>
<Entry>
<Index>#x7010</Index>
<SubIndex>18</SubIndex>
<BitLen>32</BitLen>
<Name>Target counter value</Name>
<DataType>UINT32</DataType>
</Entry>
</RxPdo>
<RxPdo Sm="2" Fixed="1" Mandatory="1">
<Index>#x160b</Index>
<Name>ENC RxPDO-Map Control Ch.1</Name>
<Entry>
<Index>#x0000</Index>
<BitLen>2</BitLen>
</Entry>
<Entry>
<Index>#x7020</Index>
<SubIndex>3</SubIndex>
<BitLen>1</BitLen>
<Name>Set counter</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>12</BitLen>
</Entry>
<Entry>
<Index>#x7020</Index>
<SubIndex>16</SubIndex>
<BitLen>1</BitLen>
<Name>Reserved</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7020</Index>
<SubIndex>17</SubIndex>
<BitLen>32</BitLen>
<Name>Set counter value</Name>
<DataType>UINT32</DataType>
</Entry>
</RxPdo>
<RxPdo Sm="2" Fixed="1" Mandatory="1">
<Index>#x160d</Index>
<Name>ENC RxPDO-Map Control Ch.2</Name>
<Entry>
<Index>#x0000</Index>
<BitLen>2</BitLen>
</Entry>
<Entry>
<Index>#x7030</Index>
<SubIndex>3</SubIndex>
<BitLen>1</BitLen>
<Name>Set counter</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>12</BitLen>
</Entry>
<Entry>
<Index>#x7030</Index>
<SubIndex>16</SubIndex>
<BitLen>1</BitLen>
<Name>Reserved</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7030</Index>
<SubIndex>17</SubIndex>
<BitLen>32</BitLen>
<Name>Set counter value</Name>
<DataType>UINT32</DataType>
</Entry>
</RxPdo>
<TxPdo Sm="3" Fixed="1" Mandatory="1">
<Index>#x1a00</Index>
<Name>PTO TxPDO-Map Status Ch.1</Name>
<Entry>
<Index>#x6000</Index>
<SubIndex>1</SubIndex>
<BitLen>1</BitLen>
<Name>Sel. Ack/End counter</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6000</Index>
<SubIndex>2</SubIndex>
<BitLen>1</BitLen>
<Name>Ramp active</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>4</BitLen>
</Entry>
<Entry>
<Index>#x6000</Index>
<SubIndex>7</SubIndex>
<BitLen>1</BitLen>
<Name>Error</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>6</BitLen>
</Entry>
<Entry>
<Index>#x6000</Index>
<SubIndex>14</SubIndex>
<BitLen>1</BitLen>
<Name>Sync error</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>1</BitLen>
</Entry>
<Entry>
<Index>#x6000</Index>
<SubIndex>16</SubIndex>
<BitLen>1</BitLen>
<Name>TxPDO Toggle</Name>
<DataType>BOOL</DataType>
</Entry>
</TxPdo>
<TxPdo Sm="3" Fixed="1" Mandatory="1">
<Index>#x1a01</Index>
<Name>PTO TxPDO-Map Status Ch.2</Name>
<Entry>
<Index>#x6010</Index>
<SubIndex>1</SubIndex>
<BitLen>1</BitLen>
<Name>Sel. Ack/End counter</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6010</Index>
<SubIndex>2</SubIndex>
<BitLen>1</BitLen>
<Name>Ramp active</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>4</BitLen>
</Entry>
<Entry>
<Index>#x6010</Index>
<SubIndex>7</SubIndex>
<BitLen>1</BitLen>
<Name>Error</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>6</BitLen>
</Entry>
<Entry>
<Index>#x6010</Index>
<SubIndex>14</SubIndex>
<BitLen>1</BitLen>
<Name>Sync error</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>1</BitLen>
</Entry>
<Entry>
<Index>#x6010</Index>
<SubIndex>16</SubIndex>
<BitLen>1</BitLen>
<Name>TxPDO Toggle</Name>
<DataType>BOOL</DataType>
</Entry>
</TxPdo>
<TxPdo Sm="3" Fixed="1" Mandatory="1">
<Index>#x1a03</Index>
<Name>ENC TxPDO-Map Status Ch.1</Name>
<Entry>
<Index>#x0000</Index>
<BitLen>2</BitLen>
</Entry>
<Entry>
<Index>#x6020</Index>
<SubIndex>3</SubIndex>
<BitLen>1</BitLen>
<Name>Set counter done</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6020</Index>
<SubIndex>4</SubIndex>
<BitLen>1</BitLen>
<Name>Counter underflow</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6020</Index>
<SubIndex>5</SubIndex>
<BitLen>1</BitLen>
<Name>Counter overflow</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>8</BitLen>
</Entry>
<Entry>
<Index>#x6020</Index>
<SubIndex>14</SubIndex>
<BitLen>1</BitLen>
<Name>Sync error</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6020</Index>
<SubIndex>15</SubIndex>
<BitLen>1</BitLen>
<Name>TxPDO State</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6020</Index>
<SubIndex>16</SubIndex>
<BitLen>1</BitLen>
<Name>TxPDO Toggle</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6020</Index>
<SubIndex>17</SubIndex>
<BitLen>32</BitLen>
<Name>Counter value</Name>
<DataType>UINT32</DataType>
</Entry>
</TxPdo>
<TxPdo Sm="3" Fixed="1" Mandatory="1">
<Index>#x1a05</Index>
<Name>ENC TxPDO-Map Status Ch.2</Name>
<Entry>
<Index>#x0000</Index>
<BitLen>2</BitLen>
</Entry>
<Entry>
<Index>#x6030</Index>
<SubIndex>3</SubIndex>
<BitLen>1</BitLen>
<Name>Set counter done</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6030</Index>
<SubIndex>4</SubIndex>
<BitLen>1</BitLen>
<Name>Counter underflow</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6030</Index>
<SubIndex>5</SubIndex>
<BitLen>1</BitLen>
<Name>Counter overflow</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>8</BitLen>
</Entry>
<Entry>
<Index>#x6030</Index>
<SubIndex>14</SubIndex>
<BitLen>1</BitLen>
<Name>Sync error</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6030</Index>
<SubIndex>15</SubIndex>
<BitLen>1</BitLen>
<Name>TxPDO State</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6030</Index>
<SubIndex>16</SubIndex>
<BitLen>1</BitLen>
<Name>TxPDO Toggle</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6030</Index>
<SubIndex>17</SubIndex>
<BitLen>32</BitLen>
<Name>Counter value</Name>
<DataType>UINT32</DataType>
</Entry>
</TxPdo>
</Device>
</Devices>
</Descriptions>
</EtherCATInfo>Please Log in or Create an account to join the conversation.
- Hakan
- Offline
- Platinum Member
-
Less
More
- Posts: 1317
- Thank you received: 453
03 Dec 2025 17:51 #339693
by Hakan
Replied by Hakan on topic Beckhoff EL2522 lcec xml file
See if the output of "lcec_configgen" will work.
The following user(s) said Thank You: emresensoy
Please Log in or Create an account to join the conversation.
- emresensoy
- Offline
- Senior Member
-
Less
More
- Posts: 64
- Thank you received: 33
03 Dec 2025 18:08 #339694
by emresensoy
Replied by emresensoy on topic Beckhoff EL2522 lcec xml file
Hakan, thank you very much for your answer. I'm curious about something else. For example, there's a built-in driver for the EL3062. Where is this file or driver stored on the hard drive? How can I view its contents?
Please Log in or Create an account to join the conversation.
- Hakan
- Offline
- Platinum Member
-
Less
More
- Posts: 1317
- Thank you received: 453
03 Dec 2025 18:27 #339695
by Hakan
Replied by Hakan on topic Beckhoff EL2522 lcec xml file
Should be this file github.com/linuxcnc-ethercat/linuxcnc-et...evices/lcec_el3xxx.c
All drivers are compiled into the lcec component /usr/lib/linuxcnc/modules/lcec.so
All drivers are compiled into the lcec component /usr/lib/linuxcnc/modules/lcec.so
The following user(s) said Thank You: emresensoy
Please Log in or Create an account to join the conversation.
- emresensoy
- Offline
- Senior Member
-
Less
More
- Posts: 64
- Thank you received: 33
04 Dec 2025 07:02 - 04 Dec 2025 07:55 #339713
by emresensoy
Replied by emresensoy on topic Beckhoff EL2522 lcec xml file
with lcec_configgen, It worked with a few minor tweaks. Great.
<slave idx="6" type="generic" vid="0x00000002" pid="0x09da3052" configPdos="true">
<!--EL2522 2K. Pulse Train Ausgang-->
<syncManager idx="0" dir="in"/>
<syncManager idx="1" dir="out"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<!--PTO RxPDO-Map Control Ch.1-->
<pdoEntry idx="7000" subIdx="01" bitLen="1" halPin="ch-1-frequency-select" halType="bit"/>
<pdoEntry idx="7000" subIdx="02" bitLen="1" halPin="ch-1-disable-ramp" halType="bit"/>
<pdoEntry idx="7000" subIdx="03" bitLen="1" halPin="ch-1-go-counter" halType="bit"/>
<pdoEntry idx="7000" subIdx="11" bitLen="16" halPin="ch-1-frequency-value" halType="u32"/>
</pdo>
<pdo idx="1603">
<!--PTO RxPDO-Map Target Ch.1-->
<pdoEntry idx="7000" subIdx="12" bitLen="32" halPin="ch-1-target-counter-value" halType="u32"/>
</pdo>
<pdo idx="1605">
<!--PTO RxPDO-Map Control Ch.2-->
<pdoEntry idx="7010" subIdx="01" bitLen="1" halPin="ch-2-frequency-select" halType="bit"/>
<pdoEntry idx="7010" subIdx="02" bitLen="1" halPin="ch-2-disable-ramp" halType="bit"/>
<pdoEntry idx="7010" subIdx="03" bitLen="1" halPin="ch-2-go-counter" halType="bit"/>
<pdoEntry idx="7010" subIdx="11" bitLen="16" halPin="ch-2-frequency-value" halType="u32"/>
</pdo>
<pdo idx="1608">
<!--PTO RxPDO-Map Target Ch.2-->
<pdoEntry idx="7010" subIdx="12" bitLen="32" halPin="ch-2-target-counter-value" halType="u32"/>
</pdo>
<pdo idx="160b">
<!--ENC RxPDO-Map Control Ch.1-->
<pdoEntry idx="7020" subIdx="03" bitLen="1" halPin="ch-1-set-counter" halType="bit"/>
<pdoEntry idx="7020" subIdx="10" bitLen="1" halPin="ch-1-reserved" halType="bit"/>
<pdoEntry idx="7020" subIdx="11" bitLen="32" halPin="ch-1-set-counter-value" halType="u32"/>
</pdo>
<pdo idx="160d">
<!--ENC RxPDO-Map Control Ch.2-->
<pdoEntry idx="7030" subIdx="03" bitLen="1" halPin="ch-2-set-counter" halType="bit"/>
<pdoEntry idx="7030" subIdx="10" bitLen="1" halPin="ch-2-reserved" halType="bit"/>
<pdoEntry idx="7030" subIdx="11" bitLen="32" halPin="ch-2-set-counter-value" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<!--PTO TxPDO-Map Status Ch.1-->
<pdoEntry idx="6000" subIdx="01" bitLen="1" halPin="ch-1-sel-ack-end-counter" halType="bit"/>
<pdoEntry idx="6000" subIdx="02" bitLen="1" halPin="ch-1-ramp-active" halType="bit"/>
<pdoEntry idx="6000" subIdx="07" bitLen="1" halPin="ch-1-error" halType="bit"/>
<pdoEntry idx="6000" subIdx="0e" bitLen="1" halPin="ch-1-sm3-sync-error" halType="bit"/>
<pdoEntry idx="6000" subIdx="10" bitLen="1" halPin="ch-1-txpdo-toggle" halType="bit"/>
</pdo>
<pdo idx="1a01">
<!--PTO TxPDO-Map Status Ch.2-->
<pdoEntry idx="6010" subIdx="01" bitLen="1" halPin="ch-2-sel-ack-end-counter" halType="bit"/>
<pdoEntry idx="6010" subIdx="02" bitLen="1" halPin="ch-2-ramp-active" halType="bit"/>
<pdoEntry idx="6010" subIdx="07" bitLen="1" halPin="ch-2-error" halType="bit"/>
<pdoEntry idx="6010" subIdx="0e" bitLen="1" halPin="ch-2-sm3-sync-error" halType="bit"/>
<pdoEntry idx="6010" subIdx="10" bitLen="1" halPin="ch-2-txpdo-toggle" halType="bit"/>
</pdo>
<pdo idx="1a03">
<!--ENC TxPDO-Map Status Ch.1-->
<pdoEntry idx="6020" subIdx="03" bitLen="1" halPin="ch-1-set-counter-done" halType="bit"/>
<pdoEntry idx="6020" subIdx="04" bitLen="1" halPin="ch-1-counter-underflow" halType="bit"/>
<pdoEntry idx="6020" subIdx="05" bitLen="1" halPin="ch-1-counter-overflow" halType="bit"/>
<pdoEntry idx="6020" subIdx="0e" bitLen="1" halPin="ch-1-sm3--sync-error" halType="bit"/>
<pdoEntry idx="6020" subIdx="0f" bitLen="1" halPin="ch-1-txpdo-state" halType="bit"/>
<pdoEntry idx="6020" subIdx="10" bitLen="1" halPin="ch-1-sm3--txpdo-toggle" halType="bit"/>
<pdoEntry idx="6020" subIdx="11" bitLen="32" halPin="ch-1-counter-value" halType="u32"/>
</pdo>
<pdo idx="1a05">
<!--ENC TxPDO-Map Status Ch.2-->
<pdoEntry idx="6030" subIdx="03" bitLen="1" halPin="ch-2-set-counter-done" halType="bit"/>
<pdoEntry idx="6030" subIdx="04" bitLen="1" halPin="ch-2-counter-underflow" halType="bit"/>
<pdoEntry idx="6030" subIdx="05" bitLen="1" halPin="ch-2-counter-overflow" halType="bit"/>
<pdoEntry idx="6030" subIdx="0e" bitLen="1" halPin="ch-2-sm3--sync-error" halType="bit"/>
<pdoEntry idx="6030" subIdx="0f" bitLen="1" halPin="ch-2-txpdo-state" halType="bit"/>
<pdoEntry idx="6030" subIdx="10" bitLen="1" halPin="ch-2-sm3--txpdo-toggle" halType="bit"/>
<pdoEntry idx="6030" subIdx="11" bitLen="32" halPin="ch-2-counter-value" halType="u32"/>
</pdo>
</syncManager>
</slave>
Last edit: 04 Dec 2025 07:55 by emresensoy.
Please Log in or Create an account to join the conversation.
- emresensoy
- Offline
- Senior Member
-
Less
More
- Posts: 64
- Thank you received: 33
13 Aug 2026 08:44 - 13 Aug 2026 08:44 #348691
by emresensoy
Replied by emresensoy on topic Beckhoff EL2522 lcec xml file
Dear Mr @hakan, I want to get your mail address if possible,
mine is This email address is being protected from spambots. You need JavaScript enabled to view it.
mine is This email address is being protected from spambots. You need JavaScript enabled to view it.
Last edit: 13 Aug 2026 08:44 by emresensoy.
Please Log in or Create an account to join the conversation.
- nhof
- Offline
- New Member
-
Less
More
- Posts: 5
- Thank you received: 0
13 Aug 2026 16:49 #348706
by nhof
Replied by nhof on topic Beckhoff EL2522 lcec xml file
Hello emresensoy, I recently wrote a driver for EL2522 which is available since linuxcnc-ethercat v1.41.2.
It supports Continuous Position (CSP-like) mode currently, as seen here: github.com/linuxcnc-ethercat/linuxcnc-et...ster/examples/el2522
I hope you will find this useful, please let me know if you try the driver and encounter any problem, as I may be able to assist. Thanks.
It supports Continuous Position (CSP-like) mode currently, as seen here: github.com/linuxcnc-ethercat/linuxcnc-et...ster/examples/el2522
I hope you will find this useful, please let me know if you try the driver and encounter any problem, as I may be able to assist. Thanks.
Please Log in or Create an account to join the conversation.
Time to create page: 0.116 seconds