Unnamed CATIO-A Device Configuration (help!)

More
22 May 2025 09:28 #328900 by MTate01
I am trying to get an un-named, un-branded etherCAT IO module to work - the company I work for had picked it up some years ago for a project that fell through. I don't have an ESI for the board, and so I am trying to rely on what i can read from etherCAT. attached are images of the device with a switch and LED wired (next problem) 

here is my output of ethercat xml -p1:
?xml version="1.0" ?>
<EtherCATInfo>
  <!-- Slave 1 -->
  <Vendor>
    <Id>591240</Id>
  </Vendor>
  <Descriptions>
    <Devices>
      <Device>
        <Type ProductCode="#x00109252" RevisionNo="#x00058100">IMC IO EtherCAT</Type>
        <Name><![CDATA[IMC IO MODEL with EtherCAT]]></Name>
        <Sm Enable="1" StartAddress="#x1000" ControlByte="#x26" DefaultSize="128" />
        <Sm Enable="1" StartAddress="#x1100" ControlByte="#x22" DefaultSize="128" />
        <Sm Enable="1" StartAddress="#x1200" ControlByte="#x64" DefaultSize="0" />
        <Sm Enable="1" StartAddress="#x1400" ControlByte="#x20" DefaultSize="0" />
        <RxPdo Sm="2" Fixed="1" Mandatory="1">
          <Index>#x1600</Index>
          <Name>RxPDO-Map</Name>
          <Entry>
            <Index>#x7000</Index>
            <SubIndex>1</SubIndex>
            <BitLen>8</BitLen>
            <Name></Name>
            <DataType>UINT8</DataType>
          </Entry>
        </RxPdo>
        <TxPdo Sm="3" Fixed="1" Mandatory="1">
          <Index>#x1a00</Index>
          <Name>TxPDO-Map</Name>
          <Entry>
            <Index>#x6000</Index>
            <SubIndex>1</SubIndex>
            <BitLen>8</BitLen>
            <Name></Name>
            <DataType>UINT8</DataType>
          </Entry>
        </TxPdo>
      </Device>
    </Devices>
  </Descriptions>
</EtherCATInfo>

and so i tried to add it to my ethercat-conf.xml file as such (the following is an extract from a working config):
<slave idx="1" type="generic" vid="0x00090588" pid="0x00109252" configPdos="false">
   <syncManager idx="2" dir="out">
     <pdo idx="1600">
       <pdoEntry idx="7000" subIdx="01" bitLen="8" halPin="imcio-do0" halType="bit"/>
     </pdo>
   </syncManager>
   <syncManager idx="3" dir="in">
     <pdo idx="1a00">
       <pdoEntry idx="6000" subIdx="01" bitLen="8" halPin="imcio-di0" halType="bit"/>
     </pdo>
   </syncManager>
  </slave>
I tried adjusting configPdos to true, as well as false with as little provided information as possible... still won't enter SAFEOP or OP state and instead errors out and back to PREOP E. here is the output from halcmd dmesg -w:
[270386.928285] EtherCAT ERROR 0-1: Failed to set SAFEOP state, slave refused state change (PREOP + ERROR).
[270386.929285] EtherCAT ERROR 0-1: AL status message 0x0017: "Invalid sync manager configuration".

Can anyone help me with configuring this module? 

 
Attachments:

Please Log in or Create an account to join the conversation.

More
22 May 2025 09:59 #328901 by Hakan
Generally, try the output of "lcec_configgen" for this slave and see if that helps.
Then if no success, hook it up to TwinCAT and see if you can find anything helpful there.
And of course googleing, found this forum.linuxcnc.org/ethercat/53438-etherc...pindle-estop-and-mpg
 

Please Log in or Create an account to join the conversation.

More
23 May 2025 05:44 #328959 by MTate01
Replied by MTate01 on topic Unnamed CATIO-A Device Configuration (help!)
lcec_configgen resulted in a fairly similar output to what I had already configured.

From that additional post you linked, they found the config files for what seems to be a very similar IO board/device to mine, but the ESI (xml file) seems to be rather... convoluted?

I have attached it, but unfortunately didnt' reveal enough information for me to figure out anything new - and thus i'm still stuck on PREOP E. 

I'm also not sure how TwinCAT is supposed to work - but i'll keep playing with that and hopefully have some luck. maybe you could suggest which package I need? 

Here's my whole ethercat-conf.xml as a side note, in case you see something wrong with it:
[code]<masters>
 <master idx="0" appTimePeriod="1000000" refClockSyncCycles="1000">
  <slave idx="0" type="generic" vid="00000A88" pid="0a880013" configPdos="true">
    <!-- Joint 0 -->
    <syncManager idx="0" dir="out">
    </syncManager>
    <syncManager idx="1" dir="out">
    </syncManager>
    <syncManager idx="2" dir="out">
      <pdo idx="1600">
        <pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32" />
        <pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="target-position" halType="s32" />
        <pdoEntry idx="60b8" subIdx="00" bitLen="16" halPin="touchprobefunction0" halType="bit"/>
      </pdo>
      <pdo idx="1601">
        <pdoEntry idx="6081" subIdx="00" bitLen="32" halPin="profile-velocity" halType="u32"/>
        <pdoEntry idx="6083" subIdx="00" bitLen="32" halPin="target-accel" halType="u32" />
        <pdoEntry idx="6084" subIdx="00" bitLen="32" halPin="target-decel" halType="u32" />
        <pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
      </pdo>
      <pdo idx="1602">
        <pdoEntry idx="60ff" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32"/>
      </pdo>
    </syncManager>
    <syncManager idx="3" dir="in">
      <pdo idx="1a00">
        <pdoEntry idx="603f" subIdx="00" bitLen="16" halPin="errorcode" halType="bit" />
        <pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32" />
        <pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
        <pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32" />
        <pdoEntry idx="60b9" subIdx="00" bitLen="16" halPin="touchprobestat" halType="bit"/>
        <pdoEntry idx="60ba" subIdx="00" bitLen="32" halPin="touchprobe1pos" halType="s32"/>
        <pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="digitalinputs" halType="s32"/>
      </pdo>
      <pdo idx="1a01">
        <pdoEntry idx="606c" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
      </pdo>
    </syncManager>
    <dcConf assignActivate="300" sync0Cycle="1000000"/>
  </slave>
  <slave idx="1" type="generic" vid="0x00090588" pid="0x00109252" configPdos="false">
    <!--IMC IO MODEL with EtherCAT-->
    <syncManager idx="0" dir="out"/>
    <syncManager idx="1" dir="out"/>
    <syncManager idx="2" dir="out">
        <pdo idx="1600">
            <pdoEntry idx="7000" subIdx="01" bitLen="8" halPin="imcio-do0" halType="bit"/>
        </pdo>
    </syncManager>
    <syncManager idx="3" dir="in">
        <pdo idx="1a00">
            <pdoEntry idx="6000" subIdx="01" bitLen="8" halPin="imcio-di0" halType="bit"/>
        </pdo>
    <dcConf assignActivate="300" sync0Cycle="0"/>
  </slave>
 </master>
</masters>
 [/code]
Attachments:

Please Log in or Create an account to join the conversation.

More
23 May 2025 09:01 #328965 by Hakan
Twincat is a Windows program, a huge one with a learning curve so if you haven't use it before then it's not worthwhile now. It's anyway only an easier way to view data from the drive and it would be some detective work to see why yours doesn't go OP.
Google is your friend, or actually the search on this forum.
I found this forum.linuxcnc.org/ethercat/52997-ethercat-catio-module-help with what seems like a working config.
And you you should definitely do a
ethercat rescan
just to make sure the master's data about the client is up-to-date.
The following user(s) said Thank You: rodw, MTate01

Please Log in or Create an account to join the conversation.

More
27 May 2025 01:27 #329186 by Soccer Kid
Replied by Soccer Kid on topic Unnamed CATIO-A Device Configuration (help!)
Hello friend, please refer to the following code. I have the same module and it has been tested and is available. The corresponding pulse counting and other modules only require you to add PDO as needed.
<!-- IO -->
<slave idx="5" type="generic" vid="90588" pid="109252" configPdos="true">
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="0x2300" subIdx="00" bitLen="16" halPin="out00" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="2020" subIdx="00" bitLen="32" halPin="encoder" halType="u32"/>
<pdoEntry idx="2000" subIdx="0" bitLen="16" halType="complex">
<complexEntry bitLen="1" halPin="in-1" halType="bit"/>
<complexEntry bitLen="1" halPin="in-2" halType="bit"/>
<complexEntry bitLen="1" halPin="in-3" halType="bit"/>
<complexEntry bitLen="1" halPin="in-4" halType="bit"/>
<complexEntry bitLen="1" halPin="in-5" halType="bit"/>
<complexEntry bitLen="1" halPin="in-6" halType="bit"/>
<complexEntry bitLen="1" halPin="in-7" halType="bit"/>
<complexEntry bitLen="1" halPin="in-8" halType="bit"/>
<complexEntry bitLen="1" halPin="in-9" halType="bit"/>
<complexEntry bitLen="1" halPin="in-10" halType="bit"/>
<complexEntry bitLen="1" halPin="in-11" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
</slave>
The following user(s) said Thank You: MTate01

Please Log in or Create an account to join the conversation.

Time to create page: 0.251 seconds
Powered by Kunena Forum