- Posts: 116
- Thank you received: 10
EtherCAT driver for a 6 axis robot
- ftree
- Offline
- Premium Member
-
Less
More
4 years 5 months ago - 4 years 5 months ago #242513
by ftree
Replied by ftree on topic EtherCAT driver for a 6 axis robot
An excerpt from the EtherCAT xml.
I am looking at the single bit pdo settings. The above appears to be padded by 26 bits. What is best practice for the above? Something like this?
Code:
<RxPdo Fixed="true" Mandatory="true" Sm="2">
<Index>#x1600</Index>
<Name>Robot Control</Name>
<Entry>
<Index>#x7200</Index>
<SubIndex>1</SubIndex>
<BitLen>1</BitLen>
<Name>Deactivate</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7200</Index>
<SubIndex>2</SubIndex>
<BitLen>1</BitLen>
<Name>Activate</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7200</Index>
<SubIndex>3</SubIndex>
<BitLen>1</BitLen>
<Name>Home</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7200</Index>
<SubIndex>4</SubIndex>
<BitLen>1</BitLen>
<Name>Reset Error</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7200</Index>
<SubIndex>5</SubIndex>
<BitLen>1</BitLen>
<Name>Sim Mode</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7200</Index>
<SubIndex>6</SubIndex>
<BitLen>1</BitLen>
<Name>Recovery Mode</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0</Index>
<SubIndex>0</SubIndex>
<BitLen>26</BitLen>
</Entry>
</RxPdo>
I am looking at the single bit pdo settings. The above appears to be padded by 26 bits. What is best practice for the above? Something like this?
Code:
<syncManager idx="2" dir="out" />
<pdo idx="1600">
<pdoEntry idx="7200" subIdx="00" bitLen="32" halType="Complex">
<complexEntry bitLen="1" halPin="robot.ctrl.deactivate" halType="bit" />
<complexEntry bitLen="1" halPin="robot.ctrl.activate" halType="bit" />
<complexEntry bitLen="1" halPin="robot.ctrl.home" halType="bit" />
<complexEntry bitLen="1" halPin="robot.ctrl.reset-errror" halType="bit" />
<complexEntry bitLen="1" halPin="robot.ctrl.sim-mode" halType="bit" />
<complexEntry bitLen="1" halPin="robot.ctrl.recovery-mode" halType="bit" />
<complexEntry bitLen="26" />
</pdoEntry>
Last edit: 4 years 5 months ago by ftree.
Please Log in or Create an account to join the conversation.
- TheRoslyak
- Offline
- Elite Member
-
Less
More
- Posts: 238
- Thank you received: 37
4 years 5 months ago #242515
by TheRoslyak
Replied by TheRoslyak on topic EtherCAT driver for a 6 axis robot
<pdoEntry idx="7200" subIdx="01" bitLen="1" halPin="robot.ctrl.deactivate" halType="bit" />
<pdoEntry idx="7200" subIdx="02" bitLen="1" halPin="robot.ctrl.activate" halType="bit" />
....
<pdoEntry idx="7200" subIdx="05" bitLen="1" halPin="robot.ctrl.recovery-mode" halType="bit" />
<pdoEntry idx="7200" subIdx="02" bitLen="1" halPin="robot.ctrl.activate" halType="bit" />
....
<pdoEntry idx="7200" subIdx="05" bitLen="1" halPin="robot.ctrl.recovery-mode" halType="bit" />
Please Log in or Create an account to join the conversation.
- ftree
- Offline
- Premium Member
-
Less
More
- Posts: 116
- Thank you received: 10
4 years 5 months ago - 4 years 5 months ago #242516
by ftree
Replied by ftree on topic EtherCAT driver for a 6 axis robot
Thanks! Rx PDOs wip. Weaving my way though documentation. Reading up about halTypes.
Code:
<syncManager idx="2" dir="out" />
<pdo idx="1600">
<pdoEntry idx="7200" subIdx="01" bitLen="1" halPin="robot.ctrl.deactivate" halType="bit" />
<pdoEntry idx="7200" subIdx="02" bitLen="1" halPin="robot.ctrl.activate" halType="bit" />
<pdoEntry idx="7200" subIdx="03" bitLen="1" halPin="robot.ctrl.home" halType="bit" />
<pdoEntry idx="7200" subIdx="04" bitLen="1" halPin="robot.ctrl.reset-errror" halType="bit" />
<pdoEntry idx="7200" subIdx="05" bitLen="1" halPin="robot.ctrl.sim-mode" halType="bit" />
<pdoEntry idx="7200" subIdx="06" bitLen="1" halPin="robot.ctrl.recovery-mode" halType="bit" />
</pdo>
<pdo idx="1601">
<pdoEntry idx="7310" subIdx="01" bitLen="16" halPin="robot.motion.id" halType="u16"/>
<pdoEntry idx="7310" subIdx="02" bitLen="1" halPin="robot.motion.set-point" halType="bit"/>
<pdoEntry idx="7310" subIdx="03" bitLen="1" halPin="robot.motion.pause" halType="bit"/>
<pdoEntry idx="7310" subIdx="04" bitLen="1" halPin="robot.motion.clear" halType="bit"/>
<pdoEntry idx="7310" subIdx="05" bitLen="1" halPin="robot.motion.reset-pstop" halType="bit"/>
</pdo>
<pdo idx="1602">
<pdoEntry idx="7305" subIdx="00" bitLen="32" halPin="robot.move.cmd" halType="u32"/>
<pdoEntry idx="7306" subIdx="01" bitLen="32" halPin="robot.move.001" halType="complex"/>
<pdoEntry idx="7306" subIdx="02" bitLen="32" halPin="robot.move.002" halType="complex"/>
<pdoEntry idx="7306" subIdx="03" bitLen="32" halPin="robot.move.003" halType="complex"/>
<pdoEntry idx="7306" subIdx="04" bitLen="32" halPin="robot.move.004" halType="complex"/>
<pdoEntry idx="7306" subIdx="05" bitLen="32" halPin="robot.move.005" halType="complex"/>
<pdoEntry idx="7306" subIdx="06" bitLen="32" halPin="robot.move.006" halType="complex"/>
</pdo>
<pdo idx="1610">
<pdoEntry idx="7400" subIdx="00" bitLen="32" halPin="robot.brakes.allowed" halType="u32" />
</pdo>
<pdo idx="1611">
<pdoEntry idx="7410" subIdx="01" bitLen="1" halPin="robot.brakes.ctrl-allowed" halType="bit" />
<pdoEntry idx="7410" subIdx="02" bitLen="1" halPin="robot.brakes.engaged" halType="bit" />
</pdo>
<pdo idx="1620">
<pdoEntry idx="0000" subIdx="00" bitLen="32" halPin="robot.dynamic-data.cfg0" halType="u32" />
</pdo>
<pdo idx="1621">
<pdoEntry idx="0000" subIdx="00" bitLen="32" halPin="robot.dynamic-data.cfg1" halType="u32" />
</pdo>
<pdo idx="1622"
<pdoEntry idx="0000" subIdx="00" bitLen="32" halPin="robot.dynamic-data.cfg2" halType="u32" />
</pdo>
<pdo idx="1623">
<pdoEntry idx="0000" subIdx="00" bitLen="32" halPin="robot.dynamic-data.cfg3" halType="u32" />
</pdo>
</syncManager>
Last edit: 4 years 5 months ago by ftree.
Please Log in or Create an account to join the conversation.
- rodw
- Offline
- Platinum Member
-
Less
More
- Posts: 12170
- Thank you received: 4153
4 years 5 months ago #242521
by rodw
Replied by rodw on topic EtherCAT driver for a 6 axis robot
I could not find a specific reference to it but I think the Linuxcnc motmod (motion module) is now user definable in master branch (as of recently)
Also the interpreter is modular but nobody has ever written an alternative to G code.
So it could be possible to write a new language to control your robot and convert that language to ethercat motion primitives.
But it would be a big task...
Also the interpreter is modular but nobody has ever written an alternative to G code.
So it could be possible to write a new language to control your robot and convert that language to ethercat motion primitives.
But it would be a big task...
Please Log in or Create an account to join the conversation.
- db1981
- Offline
- Platinum Member
-
Less
More
- Posts: 790
- Thank you received: 276
4 years 5 months ago #242522
by db1981
Replied by db1981 on topic EtherCAT driver for a 6 axis robot
oh, i have not seen the cyclic modes.
If they realy work cyclic without the motion que thing, then velocity control with joint pos feedback will work...
Kinematics, singularys etc. are another chapter.....
If they realy work cyclic without the motion que thing, then velocity control with joint pos feedback will work...
Kinematics, singularys etc. are another chapter.....
Please Log in or Create an account to join the conversation.
- ftree
- Offline
- Premium Member
-
Less
More
- Posts: 116
- Thank you received: 10
4 years 5 months ago - 4 years 5 months ago #242523
by ftree
Replied by ftree on topic EtherCAT driver for a 6 axis robot
"If they realy work cyclic without the motion que thing, then velocity control with joint pos feedback will work..."
That's what I'm hoping. Reading the "JointSet" encoder positions should make this possible. See TxPdo 1A02, x6030, 1 to 6.
That's what I'm hoping. Reading the "JointSet" encoder positions should make this possible. See TxPdo 1A02, x6030, 1 to 6.
Last edit: 4 years 5 months ago by ftree.
Please Log in or Create an account to join the conversation.
Time to create page: 1.173 seconds