- Configuring LinuxCNC
- Advanced Configuration
- EtherCAT
- Adding digital inpouts to Rtelligent ECT60 cia402
Adding digital inpouts to Rtelligent ECT60 cia402
20 Apr 2024 13:35 #298727
by kate
Adding digital inpouts to Rtelligent ECT60 cia402 was created by kate
I have working setup of Rtelligent ECT60 cia402 compatible closed loop stepper controllers. All basic stuff is working with LinuxCNC/Axis but now I would like to use digital inputs from controller. I have an issue, i can't read input bits in HAL side, with they read allways FALSE even i can see bits toggling with ethercat command. I assume that I miss some configuration somewhere.
Manual of ECT60 www.rtelligent.net/upload/wenjian/Steppe...%20User%20Manual.pdf
Inputs are under 0x60FD and I can read them with:
ethercat upload -p 0 -t uint32 0x60fd 0
Then I have added lines to to ethercat-conf.xml
I can see pins under lcec.0.0.input1 and so far but thet always reads as FALSE in halmeter
I can also see same pdo values under ethercat pdos -p 0SM3: PhysAddr 0x1400, DefaultSize 0, ControlRegister 0x20, Enable 1
TxPDO 0x1a00 "TXPDO 1 Mapping Parameter "
PDO entry 0x60fd:16, 1 bit, ""
PDO entry 0x60fd:17, 1 bit, ""
PDO entry 0x60fd:18, 1 bit, ""
Manual of ECT60 www.rtelligent.net/upload/wenjian/Steppe...%20User%20Manual.pdf
Inputs are under 0x60FD and I can read them with:
ethercat upload -p 0 -t uint32 0x60fd 0
Then I have added lines to to ethercat-conf.xml
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<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="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="32" halPin="actual-torque" halType="s32"/>
<pdoEntry idx="60FD" subIdx="16" bitLen="1" halPin="input1" halType="bit"/>
<pdoEntry idx="60FD" subIdx="17" bitLen="1" halPin="input2" halType="bit"/>
<pdoEntry idx="60FD" subIdx="18" bitLen="1" halPin="input3" halType="bit"/>
<pdoEntry idx="60FD" subIdx="19" bitLen="1" halPin="input4" halType="bit"/>
<pdoEntry idx="60FD" subIdx="20" bitLen="1" halPin="input5" halType="bit"/>
<pdoEntry idx="60FD" subIdx="21" bitLen="1" halPin="input6" halType="bit"/>
</pdo>
</syncManager>
I can see pins under lcec.0.0.input1 and so far but thet always reads as FALSE in halmeter
I can also see same pdo values under ethercat pdos -p 0SM3: PhysAddr 0x1400, DefaultSize 0, ControlRegister 0x20, Enable 1
TxPDO 0x1a00 "TXPDO 1 Mapping Parameter "
PDO entry 0x60fd:16, 1 bit, ""
PDO entry 0x60fd:17, 1 bit, ""
PDO entry 0x60fd:18, 1 bit, ""
Please Log in or Create an account to join the conversation.
- scottlaird
- Offline
- Premium Member
Less
More
- Posts: 136
- Thank you received: 155
20 Apr 2024 18:53 #298744
by scottlaird
Replied by scottlaird on topic Adding digital inpouts to Rtelligent ECT60 cia402
I haven't tested the digital ins or outs enough yet, but there's actually an ECT60 driver in the latest version of the linuxcnc-ethercat package.
You can *probably* just use this in your XML:
One thing with the RTelligent EtherCAT stepper drives is that their inputs and outputs *mostly* have pre-defined uses, and you'll probably need to disable that to use them directly with LinuxCNC.
You can probably get a useful config example by just running `lcec_configgen` after updating to v1.29 or higher. It'll just print out a sample config and won't overwrite anything. Here's what I see for my ECT60 when I do that:
Let me know if you run into any problems, this is still under active development.
Alternately, if you want the `generic` config to work, you'll need (at a minimum) to wrap the individual inputs in a complex block if you want to break out individual bits of a single PDO entry into their own HAL pins. See some of the examples in the source tree (which, admittedly, need a lot of attention). Something like this example:
You can *probably* just use this in your XML:
<slave idx="1" type="ECT60" name="D1"/>
One thing with the RTelligent EtherCAT stepper drives is that their inputs and outputs *mostly* have pre-defined uses, and you'll probably need to disable that to use them directly with LinuxCNC.
You can probably get a useful config example by just running `lcec_configgen` after updating to v1.29 or higher. It'll just print out a sample config and won't overwrite anything. Here's what I see for my ECT60 when I do that:
<slave idx="7" type="ECT60" name="D29">
<!-- Enable support for Cyclic Synchronous Position mode. -->
<modParam name="enableCSP" value="true"/>
<!-- Enable support for Cyclic Synchronous Velocity mode. -->
<modParam name="enableCSV" value="false"/>
<!-- Maximum stepper Amps. -->
<modParam name="peakCurrent_amps" value="6.0"/>
<!-- Operation mode: openloop, closedloop, or foc. -->
<modParam name="controlMode" value="closedloop"/>
<!-- Number of encoder steps per revolution. -->
<modParam name="encoderResolution" value="4000"/>
<!-- Output 1 use: general, alarm, brake, in-place. -->
<modParam name="output1Func" value="alarm"/>
<!-- Output 2 use: general, alarm, brake, in-place. -->
<modParam name="output2Func" value="brake"/>
<!-- Input 3 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
<modParam name="input3Func" value="cw-limit"/>
<!-- Input 4 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
<modParam name="input4Func" value="ccw-limit"/>
<!-- Input 5 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
<modParam name="input5Func" value="home"/>
<!-- Input 6 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
<modParam name="input6Func" value="motor-offline"/>
</slave>
Let me know if you run into any problems, this is still under active development.
Alternately, if you want the `generic` config to work, you'll need (at a minimum) to wrap the individual inputs in a complex block if you want to break out individual bits of a single PDO entry into their own HAL pins. See some of the examples in the source tree (which, admittedly, need a lot of attention). Something like this example:
<syncManager idx="2" dir="out">
<pdo idx="0018">
<pdoEntry idx="0086" subIdx="00" bitLen="16" halType="complex">
<complexEntry bitLen="6"/>
<complexEntry bitLen="1" halPin="srv0-ctrl.realtime-0" halType="bit"/>
<complexEntry bitLen="1" halPin="srv0-ctrl.realtime-1" halType="bit"/>
<complexEntry bitLen="2" halPin="srv0-ctrl.opmode-low" halType="u32"/>
<complexEntry bitLen="1" halPin="srv0-ctrl.sync" halType="u32"/>
<complexEntry bitLen="1" halPin="srv0-ctrl.opmode-high" halType="bit"/>
<complexEntry bitLen="1"/>
<complexEntry bitLen="1" halPin="srv0-ctrl.restart" halType="bit"/>
<complexEntry bitLen="1" halPin="srv0-ctrl.enable" halType="bit"/>
<complexEntry bitLen="1" halPin="srv0-ctrl.drv-on" halType="bit"/>
</pdoEntry>
<pdoEntry idx="0018" subIdx="00" bitLen="32" halPin="srv0-vel-cmd" halType="s32"/>
</pdo>
Please Log in or Create an account to join the conversation.
- Configuring LinuxCNC
- Advanced Configuration
- EtherCAT
- Adding digital inpouts to Rtelligent ECT60 cia402
Time to create page: 0.057 seconds