XML file for EasyCAT board (LAN9252)

More
06 Sep 2023 03:43 #280048 by stirra
I am working on a modular control setup using AB&T's EasyCAT lan9252 boards.  Currently I have one wired up to spi on a Nucleo F401RE board, and can communicate with it using the AB&T Navigator and Configurator apps (under Windows).  I can see it from Linuxcnc using "ethercat slaves" and "ethercat pdos".  Before I start from scratch figuring out the xml file, does anybody have one built already?  I'm using the default 64x64 configuration on the EasyCAT (64 bytes input, 64 bytes output).  I was hoping that "ethercat xml" would generate something close, but it doesn't put any of the linuxcnc hal elements in.

Thanks,
-- Ralph

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

More
06 Sep 2023 15:22 #280113 by a.bausano
Hello stirra,
this is what You are looking for:

<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1000">
<slave idx="0" type="generic" vid="0000079A" pid="00DEFEDE" configPdos="true">
<syncManager idx="0" dir="out">
<pdo idx="1600">
<pdoEntry idx="5" subIdx="01" bitLen="8" halPin="Byte0" halType="u32"/>
<pdoEntry idx="5" subIdx="02" bitLen="8" halPin="Byte1" halType="u32"/>
<pdoEntry idx="5" subIdx="03" bitLen="8" halPin="Byte2" halType="u32"/>
<pdoEntry idx="5" subIdx="04" bitLen="8" halPin="Byte3" halType="u32"/>
<pdoEntry idx="5" subIdx="05" bitLen="8" halPin="Byte4" halType="u32"/>
<pdoEntry idx="5" subIdx="06" bitLen="8" halPin="Byte5" halType="u32"/>
<pdoEntry idx="5" subIdx="07" bitLen="8" halPin="Byte6" halType="u32"/>
<pdoEntry idx="5" subIdx="08" bitLen="8" halPin="Byte7" halType="u32"/>
<pdoEntry idx="5" subIdx="09" bitLen="8" halPin="Byte8" halType="u32"/>
<pdoEntry idx="5" subIdx="10" bitLen="8" halPin="Byte9" halType="u32"/>
<pdoEntry idx="5" subIdx="11" bitLen="8" halPin="Byte10" halType="u32"/>
<pdoEntry idx="5" subIdx="12" bitLen="8" halPin="Byte11" halType="u32"/>
<pdoEntry idx="5" subIdx="13" bitLen="8" halPin="Byte12" halType="u32"/>
<pdoEntry idx="5" subIdx="14" bitLen="8" halPin="Byte13" halType="u32"/>
<pdoEntry idx="5" subIdx="15" bitLen="8" halPin="Byte14" halType="u32"/>
<pdoEntry idx="5" subIdx="16" bitLen="8" halPin="Byte15" halType="u32"/>
<pdoEntry idx="5" subIdx="17" bitLen="8" halPin="Byte16" halType="u32"/>
<pdoEntry idx="5" subIdx="18" bitLen="8" halPin="Byte17" halType="u32"/>
<pdoEntry idx="5" subIdx="19" bitLen="8" halPin="Byte18" halType="u32"/>
<pdoEntry idx="5" subIdx="20" bitLen="8" halPin="Byte19" halType="u32"/>
<pdoEntry idx="5" subIdx="21" bitLen="8" halPin="Byte20" halType="u32"/>
<pdoEntry idx="5" subIdx="22" bitLen="8" halPin="Byte21" halType="u32"/>
<pdoEntry idx="5" subIdx="23" bitLen="8" halPin="Byte22" halType="u32"/>
<pdoEntry idx="5" subIdx="24" bitLen="8" halPin="Byte23" halType="u32"/>
<pdoEntry idx="5" subIdx="25" bitLen="8" halPin="Byte24" halType="u32"/>
<pdoEntry idx="5" subIdx="26" bitLen="8" halPin="Byte25" halType="u32"/>
<pdoEntry idx="5" subIdx="27" bitLen="8" halPin="Byte26" halType="u32"/>
<pdoEntry idx="5" subIdx="28" bitLen="8" halPin="Byte27" halType="u32"/>
<pdoEntry idx="5" subIdx="29" bitLen="8" halPin="Byte28" halType="u32"/>
<pdoEntry idx="5" subIdx="30" bitLen="8" halPin="Byte29" halType="u32"/>
<pdoEntry idx="5" subIdx="31" bitLen="8" halPin="Byte30" halType="u32"/>
<pdoEntry idx="5" subIdx="32" bitLen="8" halPin="Byte31" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="1" dir="in">
<pdo idx="1a00">
<pdoEntry idx="5" subIdx="01" bitLen="8" halPin="Byte0" halType="u32"/>
<pdoEntry idx="5" subIdx="02" bitLen="8" halPin="Byte1" halType="u32"/>
<pdoEntry idx="5" subIdx="03" bitLen="8" halPin="Byte2" halType="u32"/>
<pdoEntry idx="5" subIdx="04" bitLen="8" halPin="Byte3" halType="u32"/>
<pdoEntry idx="5" subIdx="05" bitLen="8" halPin="Byte4" halType="u32"/>
<pdoEntry idx="5" subIdx="06" bitLen="8" halPin="Byte5" halType="u32"/>
<pdoEntry idx="5" subIdx="07" bitLen="8" halPin="Byte6" halType="u32"/>
<pdoEntry idx="5" subIdx="08" bitLen="8" halPin="Byte7" halType="u32"/>
<pdoEntry idx="5" subIdx="09" bitLen="8" halPin="Byte8" halType="u32"/>
<pdoEntry idx="5" subIdx="10" bitLen="8" halPin="Byte9" halType="u32"/>
<pdoEntry idx="5" subIdx="11" bitLen="8" halPin="Byte10" halType="u32"/>
<pdoEntry idx="5" subIdx="12" bitLen="8" halPin="Byte11" halType="u32"/>
<pdoEntry idx="5" subIdx="13" bitLen="8" halPin="Byte12" halType="u32"/>
<pdoEntry idx="5" subIdx="14" bitLen="8" halPin="Byte13" halType="u32"/>
<pdoEntry idx="5" subIdx="15" bitLen="8" halPin="Byte14" halType="u32"/>
<pdoEntry idx="5" subIdx="16" bitLen="8" halPin="Byte15" halType="u32"/>
<pdoEntry idx="5" subIdx="17" bitLen="8" halPin="Byte16" halType="u32"/>
<pdoEntry idx="5" subIdx="18" bitLen="8" halPin="Byte17" halType="u32"/>
<pdoEntry idx="5" subIdx="19" bitLen="8" halPin="Byte18" halType="u32"/>
<pdoEntry idx="5" subIdx="20" bitLen="8" halPin="Byte19" halType="u32"/>
<pdoEntry idx="5" subIdx="21" bitLen="8" halPin="Byte20" halType="u32"/>
<pdoEntry idx="5" subIdx="22" bitLen="8" halPin="Byte21" halType="u32"/>
<pdoEntry idx="5" subIdx="23" bitLen="8" halPin="Byte22" halType="u32"/>
<pdoEntry idx="5" subIdx="24" bitLen="8" halPin="Byte23" halType="u32"/>
<pdoEntry idx="5" subIdx="25" bitLen="8" halPin="Byte24" halType="u32"/>
<pdoEntry idx="5" subIdx="26" bitLen="8" halPin="Byte25" halType="u32"/>
<pdoEntry idx="5" subIdx="27" bitLen="8" halPin="Byte26" halType="u32"/>
<pdoEntry idx="5" subIdx="28" bitLen="8" halPin="Byte27" halType="u32"/>
<pdoEntry idx="5" subIdx="29" bitLen="8" halPin="Byte28" halType="u32"/>
<pdoEntry idx="5" subIdx="30" bitLen="8" halPin="Byte29" halType="u32"/>
<pdoEntry idx="5" subIdx="31" bitLen="8" halPin="Byte30" halType="u32"/>
<pdoEntry idx="5" subIdx="32" bitLen="8" halPin="Byte31" halType="u32"/>
</pdo>
</syncManager>
</slave>
</master>
</masters>

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

More
06 Sep 2023 21:08 #280151 by stirra
Thank you for that fast response! This xml certainly gets me farther, as I no longer get an error running 'halcmd -W lcec_conf', but I also don't see any pins show up.

Output from STM32 connected to Easycat PRO board:
asyCAT - Generic EtherCAT slave                                                
STANDARD MODE                                                                   
64 Byte Out                                                                     
64 Byte In                                                                      
Sync = ASYNC                                                                    
Detected chip 9252  Rev 1                                                       
initialized

Output from 'ethercat slaves -v':
=== Master 0, Slave 0 ===
Device: Main
State: PREOP
Flag: +
Identity:
  Vendor Id:       0x0000079a
  Product code:    0xdefede64
  Revision number: 0x00005a01
  Serial number:   0x00000000
DL information:
  FMMU bit operation: no
  Distributed clocks: yes, 64 bit
  DC system time transmission delay: 0 ns
Port  Type  Link  Loop    Signal  NextSlave  RxTime [ns]  Diff [ns]   NextDc [ns]
   0  MII   down  closed  no              -            -           -           -
   1  MII   up    open    yes             -     17878930  2611501901           0
   2  N/C   down  closed  no              -            -           -           -
   3  N/A   down  closed  no              -            -           -           -
General:
  Group: SSC_Device
  Image name:
  Order number: EasyCAT 64+64 rev 1
  Device name: Generic 64+64 bytes rev 1
  Flags:
    Enable SafeOp: no
    Enable notLRW: no
  Current consumption: 0 mA

Output from halcmd show pin:
Component Pins:
Owner   Type  Dir         Value  Name
     4  u32   OUT    0x00000001  lcec.conf.master-count
     4  u32   OUT    0x00000001  lcec.conf.slave-count

Output from dmesg:
[1461622.670983] EtherCAT DEBUG 0-0: Slave did not respond to state query.
[1461622.678913] EtherCAT 0: Slave states on main device: INIT.
[1461622.679524] EtherCAT DEBUG 0: Sending broadcast-write to measure transmission delays on main link.
[1461622.679805] EtherCAT DEBUG 0: 1 slaves responded to delay measuring on main link.
[1461622.679814] EtherCAT 0: Scanning bus.
[1461622.679817] EtherCAT DEBUG 0: Scanning slave 0 on main link.
[1461622.680931] EtherCAT DEBUG 0-0: Slave has the System Time register.
[1461622.681503] EtherCAT DEBUG 0-0: Assigning SII access to EtherCAT.
[1461622.681785] EtherCAT DEBUG 0-0: Determining SII size.
[1461622.682638] EtherCAT DEBUG 0-0: Found category type 10 with size 272. Proceeding to offset 338.
[1461622.683502] EtherCAT DEBUG 0-0: Found category type 30 with size 16. Proceeding to offset 356.
[1461622.684341] EtherCAT DEBUG 0-0: Found category type 40 with size 1. Proceeding to offset 359.
[1461622.685206] EtherCAT DEBUG 0-0: Found category type 41 with size 8. Proceeding to offset 369.
[1461622.686049] EtherCAT DEBUG 0-0: Found category type 50 with size 260. Proceeding to offset 631.
[1461622.686915] EtherCAT DEBUG 0-0: Found category type 51 with size 260. Proceeding to offset 893.
[1461622.687854] EtherCAT DEBUG 0-0: Found category type 60 with size 24. Proceeding to offset 919.
[1461623.063232] EtherCAT DEBUG 0-0: Slave announces to support no mailbox protocols.
[1461623.063400] EtherCAT DEBUG 0-0: Unknown category type 0x003C.
[1461623.063402] EtherCAT 0: Bus scanning completed in 384 ms.
[1461623.063404] EtherCAT 0: Using slave 0 as DC reference clock.
[1461623.063405] EtherCAT ERROR 0: Failed to calculate bus topology.
[1461623.063406] EtherCAT DEBUG 0-0: ec_slave_calc_transmission_delays_rec(delay = 0 ns)
[1461623.063409] EtherCAT DEBUG 0: No app_time received up to now.
[1461623.078975] EtherCAT DEBUG 0-0: Changing state from INIT to PREOP (forced).
[1461623.078980] EtherCAT DEBUG 0-0: Configuring...
[1461623.079589] EtherCAT DEBUG 0-0: Now in INIT.
[1461623.079591] EtherCAT DEBUG 0-0: Clearing FMMU configurations...
[1461623.079858] EtherCAT DEBUG 0-0: Clearing sync manager configurations...
[1461623.080129] EtherCAT DEBUG 0-0: Clearing DC assignment...
[1461623.080395] EtherCAT DEBUG 0-0: Slave does not support mailbox communication.
[1461623.080399] EtherCAT DEBUG 0-0: Assigning SII access to PDI.
[1461623.081208] EtherCAT DEBUG 0-0: Now in PREOP.
[1461623.081210] EtherCAT DEBUG 0-0: Assigning SII access back to EtherCAT.
[1461623.081480] EtherCAT DEBUG 0-0: Finished configuration.
[1461623.081482] EtherCAT DEBUG 0-0: Ready for requests.
[1461623.086840] EtherCAT 0: Slave states on main device: PREOP.

I seem to be missing some step to get it out of PREOP state.

Thanks again.
-- Ralph

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

More
07 Sep 2023 13:01 #280203 by a.bausano
Sorry,
I didn't see that was the 64 bytes configuration, try with this (only one slave configured):

<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1000">
<slave idx="0" type="generic" vid="0000079A" pid="DEFEDE64" configPdos="true">
<syncManager idx="0" dir="out">
<pdo idx="1600">
<pdoEntry idx="5" subIdx="01" bitLen="8" halPin="OutByte0" halType="u32"/>
<pdoEntry idx="5" subIdx="02" bitLen="8" halPin="OutByte1" halType="u32"/>
<pdoEntry idx="5" subIdx="03" bitLen="8" halPin="OutByte2" halType="u32"/>
<pdoEntry idx="5" subIdx="04" bitLen="8" halPin="OutByte3" halType="u32"/>
<pdoEntry idx="5" subIdx="05" bitLen="8" halPin="OutByte4" halType="u32"/>
<pdoEntry idx="5" subIdx="06" bitLen="8" halPin="OutByte5" halType="u32"/>
<pdoEntry idx="5" subIdx="07" bitLen="8" halPin="OutByte6" halType="u32"/>
<pdoEntry idx="5" subIdx="08" bitLen="8" halPin="OutByte7" halType="u32"/>
<pdoEntry idx="5" subIdx="09" bitLen="8" halPin="OutByte8" halType="u32"/>
<pdoEntry idx="5" subIdx="10" bitLen="8" halPin="OutByte9" halType="u32"/>
<pdoEntry idx="5" subIdx="11" bitLen="8" halPin="OutByte10" halType="u32"/>
<pdoEntry idx="5" subIdx="12" bitLen="8" halPin="OutByte11" halType="u32"/>
<pdoEntry idx="5" subIdx="13" bitLen="8" halPin="OutByte12" halType="u32"/>
<pdoEntry idx="5" subIdx="14" bitLen="8" halPin="OutByte13" halType="u32"/>
<pdoEntry idx="5" subIdx="15" bitLen="8" halPin="OutByte14" halType="u32"/>
<pdoEntry idx="5" subIdx="16" bitLen="8" halPin="OutByte15" halType="u32"/>
<pdoEntry idx="5" subIdx="17" bitLen="8" halPin="OutByte16" halType="u32"/>
<pdoEntry idx="5" subIdx="18" bitLen="8" halPin="OutByte17" halType="u32"/>
<pdoEntry idx="5" subIdx="19" bitLen="8" halPin="OutByte18" halType="u32"/>
<pdoEntry idx="5" subIdx="20" bitLen="8" halPin="OutByte19" halType="u32"/>
<pdoEntry idx="5" subIdx="21" bitLen="8" halPin="OutByte20" halType="u32"/>
<pdoEntry idx="5" subIdx="22" bitLen="8" halPin="OutByte21" halType="u32"/>
<pdoEntry idx="5" subIdx="23" bitLen="8" halPin="OutByte22" halType="u32"/>
<pdoEntry idx="5" subIdx="24" bitLen="8" halPin="OutByte23" halType="u32"/>
<pdoEntry idx="5" subIdx="25" bitLen="8" halPin="OutByte24" halType="u32"/>
<pdoEntry idx="5" subIdx="26" bitLen="8" halPin="OutByte25" halType="u32"/>
<pdoEntry idx="5" subIdx="27" bitLen="8" halPin="OutByte26" halType="u32"/>
<pdoEntry idx="5" subIdx="28" bitLen="8" halPin="OutByte27" halType="u32"/>
<pdoEntry idx="5" subIdx="29" bitLen="8" halPin="OutByte28" halType="u32"/>
<pdoEntry idx="5" subIdx="30" bitLen="8" halPin="OutByte29" halType="u32"/>
<pdoEntry idx="5" subIdx="31" bitLen="8" halPin="OutByte30" halType="u32"/>
<pdoEntry idx="5" subIdx="32" bitLen="8" halPin="OutByte31" halType="u32"/>
<pdoEntry idx="5" subIdx="33" bitLen="8" halPin="OutByte32" halType="u32"/>
<pdoEntry idx="5" subIdx="34" bitLen="8" halPin="OutByte33" halType="u32"/>
<pdoEntry idx="5" subIdx="35" bitLen="8" halPin="OutByte34" halType="u32"/>
<pdoEntry idx="5" subIdx="36" bitLen="8" halPin="OutByte35" halType="u32"/>
<pdoEntry idx="5" subIdx="37" bitLen="8" halPin="OutByte36" halType="u32"/>
<pdoEntry idx="5" subIdx="38" bitLen="8" halPin="OutByte37" halType="u32"/>
<pdoEntry idx="5" subIdx="39" bitLen="8" halPin="OutByte38" halType="u32"/>
<pdoEntry idx="5" subIdx="40" bitLen="8" halPin="OutByte39" halType="u32"/>
<pdoEntry idx="5" subIdx="41" bitLen="8" halPin="OutByte40" halType="u32"/>
<pdoEntry idx="5" subIdx="42" bitLen="8" halPin="OutByte41" halType="u32"/>
<pdoEntry idx="5" subIdx="43" bitLen="8" halPin="OutByte42" halType="u32"/>
<pdoEntry idx="5" subIdx="44" bitLen="8" halPin="OutByte43" halType="u32"/>
<pdoEntry idx="5" subIdx="45" bitLen="8" halPin="OutByte44" halType="u32"/>
<pdoEntry idx="5" subIdx="46" bitLen="8" halPin="OutByte45" halType="u32"/>
<pdoEntry idx="5" subIdx="47" bitLen="8" halPin="OutByte46" halType="u32"/>
<pdoEntry idx="5" subIdx="48" bitLen="8" halPin="OutByte47" halType="u32"/>
<pdoEntry idx="5" subIdx="49" bitLen="8" halPin="OutByte48" halType="u32"/>
<pdoEntry idx="5" subIdx="50" bitLen="8" halPin="OutByte49" halType="u32"/>
<pdoEntry idx="5" subIdx="51" bitLen="8" halPin="OutByte50" halType="u32"/>
<pdoEntry idx="5" subIdx="52" bitLen="8" halPin="OutByte51" halType="u32"/>
<pdoEntry idx="5" subIdx="53" bitLen="8" halPin="OutByte52" halType="u32"/>
<pdoEntry idx="5" subIdx="54" bitLen="8" halPin="OutByte53" halType="u32"/>
<pdoEntry idx="5" subIdx="55" bitLen="8" halPin="OutByte54" halType="u32"/>
<pdoEntry idx="5" subIdx="56" bitLen="8" halPin="OutByte55" halType="u32"/>
<pdoEntry idx="5" subIdx="57" bitLen="8" halPin="OutByte56" halType="u32"/>
<pdoEntry idx="5" subIdx="58" bitLen="8" halPin="OutByte57" halType="u32"/>
<pdoEntry idx="5" subIdx="59" bitLen="8" halPin="OutByte58" halType="u32"/>
<pdoEntry idx="5" subIdx="60" bitLen="8" halPin="OutByte59" halType="u32"/>
<pdoEntry idx="5" subIdx="61" bitLen="8" halPin="OutByte60" halType="u32"/>
<pdoEntry idx="5" subIdx="62" bitLen="8" halPin="OutByte61" halType="u32"/>
<pdoEntry idx="5" subIdx="63" bitLen="8" halPin="OutByte62" halType="u32"/>
<pdoEntry idx="5" subIdx="64" bitLen="8" halPin="OutByte63" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="1" dir="in">
<pdo idx="1a00">
<pdoEntry idx="5" subIdx="01" bitLen="8" halPin="InpByte0" halType="u32"/>
<pdoEntry idx="5" subIdx="02" bitLen="8" halPin="InpByte1" halType="u32"/>
<pdoEntry idx="5" subIdx="03" bitLen="8" halPin="InpByte2" halType="u32"/>
<pdoEntry idx="5" subIdx="04" bitLen="8" halPin="InpByte3" halType="u32"/>
<pdoEntry idx="5" subIdx="05" bitLen="8" halPin="InpByte4" halType="u32"/>
<pdoEntry idx="5" subIdx="06" bitLen="8" halPin="InpByte5" halType="u32"/>
<pdoEntry idx="5" subIdx="07" bitLen="8" halPin="InpByte6" halType="u32"/>
<pdoEntry idx="5" subIdx="08" bitLen="8" halPin="InpByte7" halType="u32"/>
<pdoEntry idx="5" subIdx="09" bitLen="8" halPin="InpByte8" halType="u32"/>
<pdoEntry idx="5" subIdx="10" bitLen="8" halPin="InpByte9" halType="u32"/>
<pdoEntry idx="5" subIdx="11" bitLen="8" halPin="InpByte10" halType="u32"/>
<pdoEntry idx="5" subIdx="12" bitLen="8" halPin="InpByte11" halType="u32"/>
<pdoEntry idx="5" subIdx="13" bitLen="8" halPin="InpByte12" halType="u32"/>
<pdoEntry idx="5" subIdx="14" bitLen="8" halPin="InpByte13" halType="u32"/>
<pdoEntry idx="5" subIdx="15" bitLen="8" halPin="InpByte14" halType="u32"/>
<pdoEntry idx="5" subIdx="16" bitLen="8" halPin="InpByte15" halType="u32"/>
<pdoEntry idx="5" subIdx="17" bitLen="8" halPin="InpByte16" halType="u32"/>
<pdoEntry idx="5" subIdx="18" bitLen="8" halPin="InpByte17" halType="u32"/>
<pdoEntry idx="5" subIdx="19" bitLen="8" halPin="InpByte18" halType="u32"/>
<pdoEntry idx="5" subIdx="20" bitLen="8" halPin="InpByte19" halType="u32"/>
<pdoEntry idx="5" subIdx="21" bitLen="8" halPin="InpByte20" halType="u32"/>
<pdoEntry idx="5" subIdx="22" bitLen="8" halPin="InpByte21" halType="u32"/>
<pdoEntry idx="5" subIdx="23" bitLen="8" halPin="InpByte22" halType="u32"/>
<pdoEntry idx="5" subIdx="24" bitLen="8" halPin="InpByte23" halType="u32"/>
<pdoEntry idx="5" subIdx="25" bitLen="8" halPin="InpByte24" halType="u32"/>
<pdoEntry idx="5" subIdx="26" bitLen="8" halPin="InpByte25" halType="u32"/>
<pdoEntry idx="5" subIdx="27" bitLen="8" halPin="InpByte26" halType="u32"/>
<pdoEntry idx="5" subIdx="28" bitLen="8" halPin="InpByte27" halType="u32"/>
<pdoEntry idx="5" subIdx="29" bitLen="8" halPin="InpByte28" halType="u32"/>
<pdoEntry idx="5" subIdx="30" bitLen="8" halPin="InpByte29" halType="u32"/>
<pdoEntry idx="5" subIdx="31" bitLen="8" halPin="InpByte30" halType="u32"/>
<pdoEntry idx="5" subIdx="32" bitLen="8" halPin="InpByte31" halType="u32"/>
<pdoEntry idx="5" subIdx="33" bitLen="8" halPin="InpByte32" halType="u32"/>
<pdoEntry idx="5" subIdx="34" bitLen="8" halPin="InpByte33" halType="u32"/>
<pdoEntry idx="5" subIdx="35" bitLen="8" halPin="InpByte34" halType="u32"/>
<pdoEntry idx="5" subIdx="36" bitLen="8" halPin="InpByte35" halType="u32"/>
<pdoEntry idx="5" subIdx="37" bitLen="8" halPin="InpByte36" halType="u32"/>
<pdoEntry idx="5" subIdx="38" bitLen="8" halPin="InpByte37" halType="u32"/>
<pdoEntry idx="5" subIdx="39" bitLen="8" halPin="InpByte38" halType="u32"/>
<pdoEntry idx="5" subIdx="40" bitLen="8" halPin="InpByte39" halType="u32"/>
<pdoEntry idx="5" subIdx="41" bitLen="8" halPin="InpByte40" halType="u32"/>
<pdoEntry idx="5" subIdx="42" bitLen="8" halPin="InpByte41" halType="u32"/>
<pdoEntry idx="5" subIdx="43" bitLen="8" halPin="InpByte42" halType="u32"/>
<pdoEntry idx="5" subIdx="44" bitLen="8" halPin="InpByte43" halType="u32"/>
<pdoEntry idx="5" subIdx="45" bitLen="8" halPin="InpByte44" halType="u32"/>
<pdoEntry idx="5" subIdx="46" bitLen="8" halPin="InpByte45" halType="u32"/>
<pdoEntry idx="5" subIdx="47" bitLen="8" halPin="InpByte46" halType="u32"/>
<pdoEntry idx="5" subIdx="48" bitLen="8" halPin="InpByte47" halType="u32"/>
<pdoEntry idx="5" subIdx="49" bitLen="8" halPin="InpByte48" halType="u32"/>
<pdoEntry idx="5" subIdx="50" bitLen="8" halPin="InpByte49" halType="u32"/>
<pdoEntry idx="5" subIdx="51" bitLen="8" halPin="InpByte50" halType="u32"/>
<pdoEntry idx="5" subIdx="52" bitLen="8" halPin="InpByte51" halType="u32"/>
<pdoEntry idx="5" subIdx="53" bitLen="8" halPin="InpByte52" halType="u32"/>
<pdoEntry idx="5" subIdx="54" bitLen="8" halPin="InpByte53" halType="u32"/>
<pdoEntry idx="5" subIdx="55" bitLen="8" halPin="InpByte54" halType="u32"/>
<pdoEntry idx="5" subIdx="56" bitLen="8" halPin="InpByte55" halType="u32"/>
<pdoEntry idx="5" subIdx="57" bitLen="8" halPin="InpByte56" halType="u32"/>
<pdoEntry idx="5" subIdx="58" bitLen="8" halPin="InpByte57" halType="u32"/>
<pdoEntry idx="5" subIdx="59" bitLen="8" halPin="InpByte58" halType="u32"/>
<pdoEntry idx="5" subIdx="60" bitLen="8" halPin="InpByte59" halType="u32"/>
<pdoEntry idx="5" subIdx="61" bitLen="8" halPin="InpByte60" halType="u32"/>
<pdoEntry idx="5" subIdx="62" bitLen="8" halPin="InpByte61" halType="u32"/>
<pdoEntry idx="5" subIdx="63" bitLen="8" halPin="InpByte62" halType="u32"/>
<pdoEntry idx="5" subIdx="64" bitLen="8" halPin="InpByte63" halType="u32"/>
</pdo>
</syncManager>
</slave>
</master>
</masters>

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

More
07 Sep 2023 15:48 #280210 by stirra
The new xml file causes lcec to throw an error.  The old xml file with an Easycat configured for 32x32 in/out still shows no pins with the previous xml file.  Any more ideas?
ralph@ralph:~/linuxcnc/configs/easycat$ halcmd loadusr -W lcec_conf easycat-64.xml
rtapi_shmem_new failed due to shmget(key=0xacb572c7): Invalid argument
lcec_conf: ERROR: couldn't allocate user/RT shared memory
<commandline>:0: waitpid failed lcec_conf lcec_conf
<commandline>:0: lcec_conf exited without becoming ready

ralph@ralph:~/linuxcnc/configs/easycat$ halcmd loadusr -W lcec_conf easycat-conf.xml
ralph@ralph:~/linuxcnc/configs/easycat$ halcmd show pin
Component Pins:
Owner   Type  Dir         Value  Name
     4  u32   OUT    0x00000001  lcec.conf.master-count
     4  u32   OUT    0x00000001  lcec.conf.slave-count

ralph@ralph:~/linuxcnc/configs/easycat$ ethercat slaves
0  0:0  PREOP  +  Generic 32+32 bytes rev 1

Thanks again.
-- Ralph

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

More
07 Sep 2023 20:42 #280229 by a.bausano
Hello stirra,
I have checked the XML file (64 bytes) again, and it seems correct. I can't try it, but from the trace, it seems there is a problem during the allocation of the shared memory. I'm not an expert on Linux, maybe there's a problem with root / sudo administrator rights? The 32 bytes XML file is not correct, the ID of the slave is wrong, and for this reason it doesn't try to start.

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

More
08 Sep 2023 04:02 #280242 by stirra
Now we're making progress! I have pins showing up now. Steps needed to get there were:

1) run 'halcmd loadrt lcec' - but this gave duplicate name errors, so

2) in the easycat-conf.xml file, I changed all the "Bytexx" names in the output
section to "out-bytexx", and all the "Bytexx" names in the input section to
"in-bytexx".

3) run 'halcmd addf lcec.read-all servo-thread' and 'halcmd addf lcec.write-all servo-thread'

Now a long list of pins is shown with 'halcmd show pin', lcec.state-op is TRUE, but the values of the pins aren't changing, even though the microcontroller is writing incrementing numbers into several PDO byte registers. I feel like I'm getting really, really close to success. I'll worry about figuring out the 64 byte configuration problem later.

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

More
08 Sep 2023 16:25 #280279 by stirra
It looks like I have some problem on the microcontroller end, as Wireshark does not show anything but 0's in the ethercat packet data. Puzzling, as the lan9252 initializes successfully, which requires SPI to be working, and the EasyCAT library code is filling the buffer with non-zero values. May have to dig out the logic analyzer and look at the SPI mosi stream.

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

More
09 Sep 2023 00:38 #280303 by stirra
I see data going out the mosi pin to the lan9252 that looks reasonable, but on wireshark I only see 00 data in the LWR datagrams. The lan9252 initialized successfully, but it sure seems like it isn't transmitting the data in its buffer.

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

More
11 Sep 2023 04:02 #280446 by stirra
Finally got it working. The xml file had an error. The pdoEntry lines for the input pins need to have idx="6", not idx="5". The output lines are idx="5". Looks like a copy-paste mistake in the original xml file. I have certainly learned a bunch anyway.

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

Time to create page: 0.161 seconds
Powered by Kunena Forum