There has been an enormous amount of work on ethercat recently that is in the ethercat linuxcnc driver
github.com/linuxcnc-ethercat/linuxcnc-ethercat
All of these new features are synced to the etherlabmaster repository via an auto build process. I believe that there are some emerging config tools.
Please review the documentation in the repo
github.com/linuxcnc-ethercat/linuxcnc-ethercat
Building a hal config from scratch is not that hard if you have a template to start with. Back when I made my first machine there was no support in pncconf for the Mesa 7i6e so I had to do it this way.
You could use my example. A lot of guys got going with this
github.com/rodw-au/linuxcnc-cia402
However, I think my xml file with the new changes could be simplified to this (with the bulk of the xml dealing with the IO module)
Code:
<masters>
<master idx="0" appTimePeriod="2000000" refClockSyncCycles="1000">
<slave idx="1" type="ECT60" name="j0">
<modParam name="peakCurrent_amps" value="2.0"/>
<modParam name="controlMode" value="openloop"/>
<modParam name="homeOffset" value="1"/>
<modParam name="input3Func" value="home"/>
<modParam name="input6Func" value="emergency-stop"/>
<modParam name="homeMode" value="17"/>
<modParam name="homeAccel" value="500"/>
<modParam name="homeSpeedFast" value="2500"/>
<modParam name="homeSpeedSlow" value="500"/>
</slave>
<slave idx="2" type="ECT60" name="j1">
<modParam name="peakCurrent_amps" value="6.0"/>
<modParam name="controlMode" value="closedloop"/>
<modParam name="homeOffset" value="1"/>
<modParam name="input3Func" value="home"/>
<modParam name="input6Func" value="emergency-stop"/>
<modParam name="homeMode" value="17"/>
<modParam name="homeAccel" value="500"/>
<modParam name="homeSpeedFast" value="2500"/>
<modParam name="homeSpeedSlow" value="500"/>
</slave>
<slave idx="3" type="generic" vid="00000a88" pid="0x0a880101" configPdos="false" name="IO">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<!-- Digtial Outputs (RTEC1616)-->
<pdoEntry idx="7000" subIdx="01" bitLen="16" halType="complex">
<complexEntry bitLen="1" halPin="out-01" halType="bit"/>
<complexEntry bitLen="1" halPin="out-02" halType="bit"/>
<complexEntry bitLen="1" halPin="out-03" halType="bit"/>
<complexEntry bitLen="1" halPin="out-04" halType="bit"/>
<complexEntry bitLen="1" halPin="out-05" halType="bit"/>
<complexEntry bitLen="1" halPin="out-06" halType="bit"/>
<complexEntry bitLen="1" halPin="out-07" halType="bit"/>
<complexEntry bitLen="1" halPin="out-08" halType="bit"/>
<complexEntry bitLen="1" halPin="out-09" halType="bit"/>
<complexEntry bitLen="1" halPin="out-10" halType="bit"/>
<complexEntry bitLen="1" halPin="out-11" halType="bit"/>
<complexEntry bitLen="1" halPin="out-12" halType="bit"/>
<complexEntry bitLen="1" halPin="out-13" halType="bit"/>
<complexEntry bitLen="1" halPin="out-14" halType="bit"/>
<complexEntry bitLen="1" halPin="out-15" halType="bit"/>
<complexEntry bitLen="1" halPin="out-16" halType="bit"/>
</pdoEntry>
<pdoEntry idx="7000" subIdx="02" bitLen="16" halPin="pwm_duty1" halType="s32"/>
<pdoEntry idx="7000" subIdx="03" bitLen="16" halPin="pwm_duty2" halType="s32"/>
<pdoEntry idx="7000" subIdx="04" bitLen="16" halPin="pwm_duty3" halType="s32"/>
<pdoEntry idx="7000" subIdx="05" bitLen="16" halPin="pwm_duty4" halType="s32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<!-- Digtial_inputs -->
<pdoEntry idx="6000" subIdx="01" bitLen="32" halType="complex">
<complexEntry bitLen="1" halPin="in-01" halType="bit"/>
<complexEntry bitLen="1" halPin="in-02" halType="bit"/>
<complexEntry bitLen="1" halPin="in-03" halType="bit"/>
<complexEntry bitLen="1" halPin="in-04" halType="bit"/>
<complexEntry bitLen="1" halPin="in-05" halType="bit"/>
<complexEntry bitLen="1" halPin="in-06" halType="bit"/>
<complexEntry bitLen="1" halPin="in-07" halType="bit"/>
<complexEntry bitLen="1" halPin="in-08" halType="bit"/>
<complexEntry bitLen="1" halPin="in-09" halType="bit"/>
<complexEntry bitLen="1" halPin="in-10" halType="bit"/>
<complexEntry bitLen="1" halPin="in-11" halType="bit"/>
<complexEntry bitLen="1" halPin="in-12" halType="bit"/>
<complexEntry bitLen="1" halPin="in-13" halType="bit"/>
<complexEntry bitLen="1" halPin="in-14" halType="bit"/>
<complexEntry bitLen="1" halPin="in-15" halType="bit"/>
<complexEntry bitLen="1" halPin="in-16" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
</slave>
</master>
</masters>