Search Results (Searched for: halpin)
Marco Reps video on youtube about EtherCAT
Category: EtherCAT
I don't quite understand what I should doWhen I configured my xml file I used the halrun to load lcec_conf from the command line without the GUI to check it was all okay.
Can you do "ethercat -v slaves" to grab the model numbers etc just to check they match your XML. After that you will need to catch a more specific error out of the lcec_conf output to narrow down what is wrong.
cnc@cnc:~$ ethercat -v slaves
=== Master 0, Slave 0 ===
Device: Main
State: PREOP
Flag: +
Identity:
Vendor Id: 0x00004321
Product code: 0x000010c2
Revision number: 0x00000001
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 up open yes - 3389267290 0 0
1 MII up open yes 1 3389271570 4280 640
2 N/A down closed no - - - -
3 N/A down closed no - - - -
Mailboxes:
Bootstrap RX: 0x1000/124, TX: 0x1100/128
Standard RX: 0x1000/124, TX: 0x1100/124
Supported protocols: CoE, FoE
General:
Group: Servo Drive
Image name:
Order number: EL8-EC400
Device name: EL8-EC400(COE)
CoE details:
Enable SDO: yes
Enable SDO Info: no
Enable PDO Assign: yes
Enable PDO Configuration: yes
Enable Upload at startup: no
Enable SDO complete access: no
Flags:
Enable SafeOp: no
Enable notLRW: no
Current consumption: 0 mA
=== Master 0, Slave 1 ===
Device: Main
State: PREOP
Flag: +
Identity:
Vendor Id: 0x00004321
Product code: 0x000010c2
Revision number: 0x00000001
Serial number: 0x00000000
DL information:
FMMU bit operation: no
Distributed clocks: yes, 64 bit
DC system time transmission delay: 640 ns
Port Type Link Loop Signal NextSlave RxTime [ns] Diff [ns] NextDc [ns]
0 MII up open yes 0 3385674850 0 640
1 MII up open yes 2 3385677850 3000 620
2 N/A down closed no - - - -
3 N/A down closed no - - - -
Mailboxes:
Bootstrap RX: 0x1000/124, TX: 0x1100/128
Standard RX: 0x1000/124, TX: 0x1100/124
Supported protocols: CoE, FoE
General:
Group: Servo Drive
Image name:
Order number: EL8-EC400
Device name: EL8-EC400(COE)
CoE details:
Enable SDO: yes
Enable SDO Info: no
Enable PDO Assign: yes
Enable PDO Configuration: yes
Enable Upload at startup: no
Enable SDO complete access: no
Flags:
Enable SafeOp: no
Enable notLRW: no
Current consumption: 0 mA
=== Master 0, Slave 2 ===
Device: Main
State: PREOP
Flag: +
Identity:
Vendor Id: 0x00004321
Product code: 0x000010c2
Revision number: 0x00000001
Serial number: 0x00000000
DL information:
FMMU bit operation: no
Distributed clocks: yes, 64 bit
DC system time transmission delay: 1260 ns
Port Type Link Loop Signal NextSlave RxTime [ns] Diff [ns] NextDc [ns]
0 MII up open yes 1 3414406970 0 620
1 MII up open yes 3 3414408730 1760 580
2 N/A down closed no - - - -
3 N/A down closed no - - - -
Mailboxes:
Bootstrap RX: 0x1000/124, TX: 0x1100/128
Standard RX: 0x1000/124, TX: 0x1100/124
Supported protocols: CoE, FoE
General:
Group: Servo Drive
Image name:
Order number: EL8-EC400
Device name: EL8-EC400(COE)
CoE details:
Enable SDO: yes
Enable SDO Info: no
Enable PDO Assign: yes
Enable PDO Configuration: yes
Enable Upload at startup: no
Enable SDO complete access: no
Flags:
Enable SafeOp: no
Enable notLRW: no
Current consumption: 0 mA
=== Master 0, Slave 3 ===
Device: Main
State: PREOP
Flag: +
Identity:
Vendor Id: 0x00000002
Product code: 0x044c2c52
Revision number: 0x00110000
Serial number: 0x00000000
DL information:
FMMU bit operation: no
Distributed clocks: yes, 64 bit
DC system time transmission delay: 1840 ns
Port Type Link Loop Signal NextSlave RxTime [ns] Diff [ns] NextDc [ns]
0 MII up open yes 2 3342102522 0 580
1 EBUS up open yes 4 3342103122 600 145
2 MII down closed no - - - -
3 N/A down closed no - - - -
General:
Group: SystemBk
Image name:
Order number: EK1100
Device name: EK1100 EtherCAT-Koppler (2A E-Bus)
Flags:
Enable SafeOp: no
Enable notLRW: no
Current consumption: -2000 mA
=== Master 0, Slave 4 ===
Device: Main
State: PREOP
Flag: +
Identity:
Vendor Id: 0x00000002
Product code: 0x03f03052
Revision number: 0x00100000
Serial number: 0x00000000
DL information:
FMMU bit operation: no
Distributed clocks: yes, 64 bit
DC system time transmission delay: 1985 ns
Port Type Link Loop Signal NextSlave RxTime [ns] Diff [ns] NextDc [ns]
0 EBUS up open yes 3 3343222302 0 145
1 EBUS up open yes 5 3343222612 310 155
2 N/A down closed no - - - -
3 N/C down closed no - - - -
General:
Group: DigIn
Image name: TERM_DI
Order number: EL1008
Device name: EL1008 8K. Dig. Eingang 24V, 3ms
Flags:
Enable SafeOp: no
Enable notLRW: no
Current consumption: 90 mA
=== Master 0, Slave 5 ===
Device: Main
State: PREOP
Flag: +
Identity:
Vendor Id: 0x00000002
Product code: 0x07d83052
Revision number: 0x00100000
Serial number: 0x00000000
DL information:
FMMU bit operation: no
Distributed clocks: yes, 64 bit
DC system time transmission delay: 2140 ns
Port Type Link Loop Signal NextSlave RxTime [ns] Diff [ns] NextDc [ns]
0 EBUS up open yes 4 3342558942 0 155
1 EBUS down closed no - - - -
2 N/A down closed no - - - -
3 N/C down closed no - - - -
General:
Group: DigOut
Image name:
Order number: EL2008
Device name: EL2008 8K. Dig. Ausgang 24V, 0.5A
Flags:
Enable SafeOp: no
Enable notLRW: no
Current consumption: 110 mA
cnc@cnc:~$
HelloHI
I think in the .xml file slave idx should start from 0
Yes, it confused me too, I redid it, but it didn't change anything
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="5">
<!-- Z axis EL8 Servo Drive -->
<slave idx="0" type="generic" vid="00004321" pid="000010c2" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1601">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
</pdo>
</syncManager>
<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="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<!-- Y axis EL8 Servo Drive -->
<slave idx="1" type="generic" vid="00004321" pid="000010c2" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1601">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
</pdo>
</syncManager>
<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="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<!-- X axis EL8 Servo Drive -->
<slave idx="2" type="generic" vid="00004321" pid="000010c2" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1601">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
</pdo>
</syncManager>
<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="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<slave idx="3" type="EK1100"/>
<slave idx="4" type="EL1008"/>
<slave idx="5" type="EL2008"/>
</master>
</masters>
SCATECH EV1616DN - Example config
Category: EtherCAT
I have tested the SCATECH 16 in 16 out EtherCAT board. Below is my config.
<slave idx="3" type="generic" vid="00000d37" pid="000f0001" configPdos="false" name="EV1616DN-V2.2">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1601">
<pdoEntry idx="7010" subIdx="01" bitLen="1" halPin="out1" halType="bit"/>
<pdoEntry idx="7010" subIdx="02" bitLen="1" halPin="out2" halType="bit"/>
<pdoEntry idx="7010" subIdx="03" bitLen="1" halPin="out3" halType="bit"/>
<pdoEntry idx="7010" subIdx="04" bitLen="1" halPin="out4" halType="bit"/>
<pdoEntry idx="7010" subIdx="05" bitLen="1" halPin="out5" halType="bit"/>
<pdoEntry idx="7010" subIdx="06" bitLen="1" halPin="out6" halType="bit"/>
<pdoEntry idx="7010" subIdx="07" bitLen="1" halPin="out7" halType="bit"/>
<pdoEntry idx="7010" subIdx="08" bitLen="1" halPin="out8" halType="bit"/>
<pdoEntry idx="7010" subIdx="09" bitLen="1" halPin="out9" halType="bit"/>
<pdoEntry idx="7010" subIdx="0a" bitLen="1" halPin="out10" halType="bit"/>
<pdoEntry idx="7010" subIdx="0b" bitLen="1" halPin="out11" halType="bit"/>
<pdoEntry idx="7010" subIdx="0c" bitLen="1" halPin="out12" halType="bit"/>
<pdoEntry idx="7010" subIdx="0d" bitLen="1" halPin="out13" halType="bit"/>
<pdoEntry idx="7010" subIdx="0e" bitLen="1" halPin="out14" halType="bit"/>
<pdoEntry idx="7010" subIdx="0f" bitLen="1" halPin="out15" halType="bit"/>
<pdoEntry idx="7010" subIdx="10" bitLen="1" halPin="out16" halType="bit"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="6000" subIdx="01" bitLen="1" halPin="e-stop" halType="bit"/>
<pdoEntry idx="6000" subIdx="02" bitLen="1" halPin="carousel-unlocked" halType="bit"/>
<pdoEntry idx="6000" subIdx="03" bitLen="1" halPin="carousel-locked" halType="bit"/>
<pdoEntry idx="6000" subIdx="04" bitLen="1" halPin="input4" halType="bit"/>
<pdoEntry idx="6000" subIdx="05" bitLen="1" halPin="input5" halType="bit"/>
<pdoEntry idx="6000" subIdx="06" bitLen="1" halPin="input6" halType="bit"/>
<pdoEntry idx="6000" subIdx="07" bitLen="1" halPin="input7" halType="bit"/>
<pdoEntry idx="6000" subIdx="08" bitLen="1" halPin="input8" halType="bit"/>
<pdoEntry idx="6000" subIdx="09" bitLen="1" halPin="input9" halType="bit"/>
<pdoEntry idx="6000" subIdx="10" bitLen="1" halPin="input10" halType="bit"/>
<pdoEntry idx="6000" subIdx="11" bitLen="1" halPin="input11" halType="bit"/>
<pdoEntry idx="6000" subIdx="12" bitLen="1" halPin="input12" halType="bit"/>
<pdoEntry idx="6000" subIdx="13" bitLen="1" halPin="input13" halType="bit"/>
<pdoEntry idx="6000" subIdx="14" bitLen="1" halPin="input14" halType="bit"/>
<pdoEntry idx="6000" subIdx="15" bitLen="1" halPin="input15" halType="bit"/>
<pdoEntry idx="6000" subIdx="16" bitLen="1" halPin="input16" halType="bit"/>
</pdo>
</syncManager>
</slave>
Problems with Lichuan Ethercat servo drive
Category: EtherCAT
I added the following lines inside <pdo idx="1600">, but to no avail.
<pdoEntry idx="60FE" subIdx="01" bitLen="32" halType="complex">
<complexEntry bitLen="16"/>
<complexEntry bitLen="1" halPin="do-0" halType="bit"/>
<complexEntry bitLen="1" halPin="do-1" halType="bit"/>
<complexEntry bitLen="1" halPin="do-2" halType="bit"/>
</pdoEntry>
LCEC creating Danfoss VFD config
Category: EtherCAT
Hey folks,
i'm trying to retrofit an old Maho400E in the near future with a Beckhoff EM7004 in combination with a costum adaptor-board for the 3 axis and wanted to prepare the electronics as far as possible. In addition to that i also want to implement a Danfoss VFD FC302 with its EtherCAT optioncard MCA124. I started to read out all the PDO mappings and so on, like in many other forum posts described, but now i don't know how to proceed with the Flag E and the dmesg output, that the VFD would not support distributed clocks. You can find all configs and readouts of the VFD on my Github . The most important stuff is also attached here.
Thank you guys for your help
Best regards
Patrick
EtherCAT network (ethercat slaves output while machine is running)
0 0:0 PREOP E FC-302
1 0:1 OP + EK1100 EtherCAT-Koppler (2A E-Bus)
2 0:2 OP + EM7004 4-Achs Interface
dmesg output of EtherCAT related messages
[ 5.972506] EtherCAT: Master driver 1.6.0 1.6.0.gcafd367-1+1.1
[ 5.972663] EtherCAT: 1 master waiting for devices.
[ 5.993635] ec_generic: EtherCAT master generic Ethernet device module 1.6.0 1.6.0.gcafd367-1+1.1
[ 5.993664] EtherCAT: Accepting F8:75:A4:86:9A:F4 as main device for master 0.
[ 6.025021] EtherCAT 0: Starting EtherCAT-IDLE thread.
[ 8.676976] EtherCAT 0: Link state of ecm0 changed to UP.
[ 8.961049] EtherCAT 0: 3 slave(s) responding on main device.
[ 8.961055] EtherCAT 0: Slave states on main device: PREOP.
[ 8.961492] EtherCAT 0: Scanning bus.
[ 9.035903] EtherCAT WARNING 0-0: Received mailbox protocol 0x02 as response.
[ 9.035906] EtherCAT ERROR 0-0: Failed to read number of assigned PDOs for SM2.
[ 9.044901] EtherCAT ERROR 0-0: Received upload response for wrong SDO (0x1C12:00, requested: 0x1C13:00).
[ 9.044904] EtherCAT DEBUG: 00 30 4F 12 1C 00 01 00 00 00
[ 9.585876] EtherCAT 0: Bus scanning completed in 624 ms.
[ 9.585880] EtherCAT 0: Using slave 1 as DC reference clock.
[ 9.585883] EtherCAT 0: Starting EoE thread.
[ 9.626324] EtherCAT ERROR 0-0: Failed to set SAFEOP state, slave refused state change (PREOP + ERROR).
[ 9.626621] EtherCAT ERROR 0-0: AL status message 0x001E: "Invalid input configuration".
[ 9.636234] EtherCAT 0-0: Acknowledged state PREOP.
[ 24.746151] EtherCAT: Requesting master 0...
[ 24.746156] EtherCAT: Successfully requested master 0.
[ 24.748381] EtherCAT 0: Domain0: Logical address 0x00000000, 64 byte, expected working counter 6.
[ 24.748385] EtherCAT 0: Datagram domain0-0-main: Logical offset 0x00000000, 64 byte, type LRW.
[ 24.748399] EtherCAT 0: Master thread exited.
[ 24.748402] EtherCAT 0: Stopping EoE thread.
[ 24.748416] EtherCAT 0: EoE thread exited.
[ 24.748417] EtherCAT 0: Starting EoE thread.
[ 24.748455] EtherCAT 0: Starting EtherCAT-OP thread.
[ 24.748492] EtherCAT WARNING 0: 33 datagrams TIMED OUT!
[ 24.773374] EtherCAT ERROR 0-0: Mailbox error response received - Unknown error reply code 0x0000.
[ 24.773380] EtherCAT WARNING 0-0: Invalid mailbox response for eoe0s0.
[ 36.885422] EtherCAT WARNING 0-0: Slave seems not to support distributed clocks!
[ 36.887420] EtherCAT ERROR 0-0: Failed to set DC cycle times: No response.
[ 36.940945] EtherCAT 0: Slave states on main device: PREOP, OP.
ethercat-conf.xml file:
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="5" name="m0">
<!-- Danfoss FC302 in CiA402/DSP402 mode -> needs CiA402 mode vl -->
<slave idx="0" type="generic" vid="0200008d" pid="00000064" configPdos="true" name="2001_FC302">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="2" dir="out">
<pdo idx="1616">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="ControlWord" halType="u32"/>
<pdoEntry idx="6042" subIdx="00" bitLen="16" halPin="TargetVelocity" halType="s32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a16">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="StatusWord" halType="u32"/>
<pdoEntry idx="6044" subIdx="00" bitLen="16" halPin="ActualVelocity" halType="s32"/>
<!-- <pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="ModeOfOperationDisplay" halType="u32"/>-->
</pdo>
</syncManager>
</slave>
<!-- Beckhoff IO modules -->
<slave idx="1" type="EK1100" name="0501_EK1101"/>
<slave idx="2" type="EM7004" name="0501_EM7004"/>
</master>
</masters>
Exotic data types in .xml config
Category: EtherCAT
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6000" subIdx="01" bitLen="64" halType="complex" />
<complexEntry bitLen="16" halPin="statusWord" halType="u32"/>
<complexEntry bitLen="16" halPin="actualSpeed" halType="s32"/>
<complexEntry bitLen="16" halPin="actualCurrent" halType="u32"/>
<complexEntry bitLen="16" halPin="motorTourqe" halType="s32"/>
</pdoEntry>
<pdoEntry idx="6000" subIdx="02" bitLen="64" halType="complex"/>
<complexEntry bitLen="16" halPin="analogIn1" halType="u32"/>
<complexEntry bitLen="16" halPin="analogIn2" halType="s32"/>
<complexEntry bitLen="16" halPin="DIOstatus" halType="u32"/>
<complexEntry bitLen="16" halPin="actualTemp" halType="u32"/>
</pdoEntry>
</pdo>
<pdo idx="1A80">
<pdoEntry idx="A000" subIdx="01" bitLen="08" halPin="slaveNodeState" halType="u32"/>
<pdoEntry idx="F100" subIdx="01" bitLen="08" halPin="canMasterError" halType="u32"/>
<pdoEntry idx="F100" subIdx="03" bitLen="16" halPin="canMasterState" halType="u32"/>
<pdoEntry idx="F100" subIdx="05" bitLen="08" halPin="canMasterRxErrorCounter" halType="u32"/>
<pdoEntry idx="F100" subIdx="04" bitLen="08" halPin="canMasterTxErrorCounter" halType="u32"/>
<pdoEntry idx="F100" subIdx="02" bitLen="01" halPin="canMasterDiagFlag" halType="bit"/>
<pdoEntry idx="A000" subIdx="02" bitLen="07" halType="complex" />
<complexEntry bitLen="01" halPin="slaveDiagFlag" halType="bit"/>
<complexEntry bitLen="06"/>
</pdoEntry>
</pdo>
Problems with Lichuan Ethercat servo drive
Category: EtherCAT
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
<slave idx="0" type="generic" vid="00000766" pid="00000402" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="0" dir="out">
</syncManager>
<syncManager idx="1" dir="in">
</syncManager>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-speed" halType="s32"/>
</pdo>
</syncManager>
<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="16" halPin="actual-torque" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halType="complex">
<complexEntry bitLen="1" halPin="di-state-01-reverse-overtravel" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-02-forward-overtravel" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-03-origin-switch" halType="bit"/>
<complexEntry bitLen="13"/>
<complexEntry bitLen="1" halPin="di-state-16-zsignal" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-17-probe1" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-18-probe2" halType="bit"/>
<complexEntry bitLen="1"/>
<complexEntry bitLen="1" halPin="di-state-20-di0" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-21-di1" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-22-di2" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-23-di3" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-24-di4" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
</slave>
<slave idx="1" type="generic" vid="00000766" pid="00000402" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="0" dir="out">
</syncManager>
<syncManager idx="1" dir="in">
</syncManager>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-speed" halType="s32"/>
</pdo>
</syncManager>
<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="16" halPin="actual-torque" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halType="complex">
<complexEntry bitLen="1" halPin="di-state-01-reverse-overtravel" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-02-forward-overtravel" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-03-origin-switch" halType="bit"/>
<complexEntry bitLen="13"/>
<complexEntry bitLen="1" halPin="di-state-16-zsignal" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-17-probe1" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-18-probe2" halType="bit"/>
<complexEntry bitLen="1"/>
<complexEntry bitLen="1" halPin="di-state-20-di0" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-21-di1" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-22-di2" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-23-di3" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-24-di4" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
</slave>
<slave idx="2" type="generic" vid="00000766" pid="00000402" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="0" dir="out">
</syncManager>
<syncManager idx="1" dir="in">
</syncManager>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-speed" halType="s32"/>
</pdo>
</syncManager>
<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="16" halPin="actual-torque" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halType="complex">
<complexEntry bitLen="1" halPin="di-state-01-reverse-overtravel" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-02-forward-overtravel" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-03-origin-switch" halType="bit"/>
<complexEntry bitLen="13"/>
<complexEntry bitLen="1" halPin="di-state-16-zsignal" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-17-probe1" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-18-probe2" halType="bit"/>
<complexEntry bitLen="1"/>
<complexEntry bitLen="1" halPin="di-state-20-di0" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-21-di1" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-22-di2" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-23-di3" halType="bit"/>
<complexEntry bitLen="1" halPin="di-state-24-di4" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
</slave>
</master>
</masters>
Problems with Lichuan Ethercat servo drive
Category: EtherCAT
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
<slave idx="0" type="generic" vid="00000766" pid="00000402" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="0" dir="out">
</syncManager>
<syncManager idx="1" dir="in">
</syncManager>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-speed" halType="s32"/>
</pdo>
</syncManager>
<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="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
</master>
</masters>
EtherCat - CATIO module Help
Category: EtherCAT
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="-1">
<slave idx="0" type="generic" vid="00090588" pid="00109252" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0" />
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="2300" subIdx="00" bitLen="16" halType="complex">
<complexEntry bitLen="1" halPin="out-00" halType="bit" />
<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" />
</pdoEntry>
<!--模拟量转电压关系为 DA=V*4096/10 DA为模拟量数值 V为电压-->
<pdoEntry idx="2310" subIdx="00" bitLen="16" halPin="Analog-Output-0" halType="u32" /> <!-- 第一路模拟量输出-->
<pdoEntry idx="2311" subIdx="01" bitLen="16" halPin="Analog-Output-1" halType="u32" /> <!-- 第二路模拟量输出-->
<!--PWM输出频率要乘65536 例如要输出10HZ 设定为10×65536=655360-->
<pdoEntry idx="2320" subIdx="00" bitLen="32" halPin="PWM-OUT-0" halType="u32" /> <!-- 第一路PWM输出-->
<pdoEntry idx="2321" subIdx="01" bitLen="32" halPin="PWM-OUT-1" halType="u32" /> <!-- 第二路PWM输出-->
<!--占空比范围0-1 例如要输出占空比50% 设定为0.5×65536=32768-->
<pdoEntry idx="2330" subIdx="00" bitLen="16" halPin="占空比-OUT-0" halType="u32" /> <!-- 第一路占空比输出-->
<pdoEntry idx="2331" subIdx="01" bitLen="16" halPin="占空比-OUT-1" halType="u32" /> <!-- 第二路占空比输出-->
<pdoEntry idx="2400" subIdx="00" bitLen="16" halPin="清零" halType="u32" /> <!-- 没搞定-->
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="2000" subIdx="00" bitLen="16" halType="complex">
<complexEntry bitLen="1" halPin="in-00" halType="bit" />
<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" />
</pdoEntry>
<!--电压转模拟量关系为 V=AD*10/4096 AD为模拟量数值 V为电压-->
<pdoEntry idx="2010" subIdx="00" bitLen="16" halPin="Analog-Input-1" halType="u32" /> <!-- 第一路模拟量输入-->
<pdoEntry idx="2011" subIdx="01" bitLen="16" halPin="Analog-Input-2" halType="u32" /> <!-- 第二路模拟量输入-->
<!--编码器-->
<pdoEntry idx="2020" subIdx="00" bitLen="32" halPin="Encoder-Input" halType="s32" /> <!-- 编码器输入-->
<!--计数器-->
<pdoEntry idx="2030" subIdx="00" bitLen="32" halPin="计数器输入-0" halType="u32" /> <!-- 第一路模计数器输入-->
<pdoEntry idx="2031" subIdx="01" bitLen="32" halPin="计数器输入-1" halType="u32" /> <!-- 第二路模计数器输入-->
<!--设置PWM 计数器极性和计数器方向-->
<pdoEntry idx="2401" subIdx="00" bitLen="16" halPin="计数器方向" halType="u32" /> <!-- 没搞定-->
</pdo>
</syncManager>
</slave>
</master>
</masters>
EtherCat - CATIO module Help
Category: EtherCAT
I have been trying to setup a "CAT-IO" ethercat IO board, it's not unlike the DIEWU DIO board RodW made a config for.
Using the rpi-4-debian-bookworm-6.1.54-rt15-arm64-ext4-2023-11-17-1731 image, worked well.
Ethercat is up and running, ethecat-conf.xml seems to be accepted, I have only set up the outputs so far as I'm trying to do it piecemeal to reduce complexity.
Issue is, while I can see the pins in halshow, and I can set them - the outputs don't actually turn on at the IO device.
dmesg shows:
[18011.371947] EtherCAT: Requesting master 0...
[18011.371968] EtherCAT: Successfully requested master 0.
[18011.372513] EtherCAT 0: Domain0: Logical address 0x00000000, 42 byte, expected working counter 1.
[18011.372518] EtherCAT 0: Datagram domain0-0-main: Logical offset 0x00000000, 42 byte, type LWR.
[18011.372664] EtherCAT 0: Master thread exited.
[18011.372673] EtherCAT 0: Starting EtherCAT-OP thread.
I also don't see it going OP in $ethercat slaves, is it supposed to show OP here after linuxcnc is started and dmseg shows 'Starting EtherCAT-OP thread' as above?
cnc@CNC:~$ ethercat slaves
0 0:0 PREOP + IMC IO MODEL with EtherCAT
Here is The ethercat-conf.xml - sadly I cannot find anywhere any documentation on the spec for this document, so some is a guess, parts I'm unsure about are in bold.
<!--
Slave0 EtherCat IO Card "CAT-IO"
www.aliexpress.us/item/3256805154534518....pt=glo2usa4itemAdapt
-->
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
<slave idx="0" type="generic" vid="0x00090588" pid="0x00109252" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<syncManager idx="3" dir="out">
<pdo idx="1600">
<!-- Digtial Outputs -->
<pdoEntry idx="2300" 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>
</pdo>
</syncManager>
</slave>
</master>
</masters>
Im just testing it in a simple my-mill sim setup, that I have added the lcec lines to:
Top of my-mill.hal file:
# If you make changes to this file, they will be
# overwritten when you run stepconf again
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W lcec_conf ethercat-conf.xml
loadrt lcec
loadrt sim_parport names=parport.0
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
loadrt pwmgen output_type=1
[code]I'm sorry to ask whats likely a simple question - I have tried for a few days and read everything I can before coming here to get help!
Can anyone pick the issue with my setup?
Help Needed: Cracking the Code on LinuxCNC Servo Homing Setup!
Category: EtherCAT
My appologies I'll have to fix that, or your hal entries wont work.
[edit]
Ok, I fixed the halpin names in the component posted above and also the screen shots. So make sure to download the fixed component and install it again.
Problems with Lichuan Ethercat servo drive
Category: EtherCAT
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="mydigitalin" halType="u32"/>
only returns the DIN values if the input is assigned to some function. Please ask if there is some null function that I can spoof the drive with, so it will return the present value of all the inputs even if the input is not assigned a real function. I am actually just going to add a parallel port card or use the arduino usb link project for IO so even this doesn't really matter.
What I am trying to accomplish for gantry homing is to use the home marker inputs and the index pulses from paired drives to home my gantry. What I want to do is to drive the gantry in the home direction until one home marker is triggered, then drive the gantry in the opposite direction, while capturing the Index pulses until the other drive is off it's home marker. I can then use one of the marker values as the home position, and the difference (modulus cnt ppr) of the two counters and an offset to zero the geared axis. Then all will be good. If anyone is a homing expert, any help is appreciated.
I do have one criticism, and that is that the drives do not have Safe Disable Inputs(dual). Yes you can program an input to stop the drive, and that does work, but it won't pass any Canadian safety inspection. With these drives you need 2 external relays in serial, with monitoring etc... to cut power to the drive. I will have to have a please stop button, and an EStop button.
LinuxCNC Beckhoff EK1100 EL2004 EL1014 Failed to register PDO entry
Category: EtherCAT
<slave idx="1" type="generic" vid="00000002" pid="07D43052" name="el2004_dout">
<syncManager idx="0" dir="out">
<pdo idx="1600">
<pdoEntry idx="3001" subIdx="01" bitLen="1" halPin="dout-0" halType="bit"/>
</pdo>
<pdo idx="1601">
<pdoEntry idx="3001" subIdx="02" bitLen="1" halPin="dout-1" halType="bit"/>
</pdo>
<pdo idx="1602">
<pdoEntry idx="3001" subIdx="03" bitLen="1" halPin="dout-2" halType="bit"/>
</pdo>
<pdo idx="1603">
<pdoEntry idx="3001" subIdx="04" bitLen="1" halPin="dout-3" halType="bit"/>
</pdo>
</syncManager>
</slave>
Try your setup with just the EK1100 and EL2004, take the other module off for now. I think the EL1014 is probably also old and may need a similar manual configuration. It's easier to get one working at a time.
Problems with Lichuan Ethercat servo drive
Category: EtherCAT
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="mydigitalin" halType="u32"/>
DIN 3 and 4 still do nothing.
Has anyone got the DINs 3/4 working?
Help,Leadshine DM556 open-loop stepper config
Category: EtherCAT
Connected in "OP" mode or "SAFEOP"?in the terminal ,while I used "ethercat sl" command ,it did show up connected to DM3E-556 but while
LCNC starts?
if it starts in halpin lcec.0. your device with connection pins, are they visible?
Adding digital inpouts to Rtelligent ECT60 cia402
Category: EtherCAT
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>