Issue描述
–disable-eoe 会导致 ec_r8169 插入失败
# /usr/local/etc/init.d/ethercat restart
Starting EtherCAT master 1.6.4 modprobe: ERROR: could not insert 'ec_r8169': Invalid argument
dmesg信息(内核信息)
[426163.348589] EtherCAT 0: Master thread exited.
[426163.348592] EtherCAT 0: Stopping EoE thread.
[426163.348608] EtherCAT 0: EoE thread exited.
[426163.348609] EtherCAT 0: Starting EoE thread.
[426163.348664] EtherCAT 0: Starting EtherCAT-OP thread.
[426163.348725] EtherCAT WARNING 0: 1 datagram UNMATCHED!
[426163.489821] EtherCAT WARNING 0-0: Invalid mailbox response for eoe0s0.
[426163.505818] EtherCAT WARNING 0-0: Other mailbox protocol response for eoe0s0.
[426163.521818] EtherCAT ERROR 0-0: Mailbox error response received - Unknown error reply code 0x0000.
[426163.521822] EtherCAT WARNING 0-0: Invalid mailbox response for eoe0s0.
[426163.537816] EtherCAT WARNING 0-0: Other mailbox protocol response for eoe0s0.
[426163.569373] EtherCAT 0: Domain 0: Working counter changed to 2/3.
[426163.579421] EtherCAT ERROR 0-0: Failed to set OP state, slave refused state change (SAFEOP + ERROR).
[426163.593756] EtherCAT ERROR 0-0: AL status message 0x0027: "Freerun not supported".
[426163.609782] EtherCAT 0-0: Acknowledged state SAFEOP.
[426164.571099] EtherCAT 0: Domain 0: 2 working counter changes - now 2/3.
[426169.069659] EtherCAT 0: Releasing master...
[426169.069681] EtherCAT 0: Master thread exited.
[426169.069683] EtherCAT 0: Stopping EoE thread.
[426169.069699] EtherCAT 0: EoE thread exited.
[426169.069707] EtherCAT 0: Starting EoE thread.
[426169.069799] EtherCAT 0: Starting EtherCAT-IDLE thread.
[426169.069839] EtherCAT 0: Released.
查看SV660N支持的协议
sudo ethercat slaves -v
=== Master 0, Slave 0 ===
Device: Main
State: PREOP
Flag: +
Identity:
Vendor Id: 0x00100000
Product code: 0x000c010d
Revision number: 0x00010000
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 - 2397802166 0 0
1 MII down closed no - - - -
2 N/A down closed no - - - -
3 N/A down closed no - - - -
Mailboxes:
Bootstrap RX: 0x0000/0, TX: 0x0000/0
Standard RX: 0x1000/256, TX: 0x1400/256
Supported protocols: EoE, CoE
General:
Group: InoServo
Image name:
Order number: InoSV660N
Device name: SV660_1Axis_00916
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
综上信息分析,因为Supported protocols中支持EoE,IGH 协议栈启用了EoE的流程,而实际上汇川的伺服却是使用的CoE协议。
Solution
Solution1 – disable eoe
这种方案会带上面的问题,加载ec_r8169实时网卡驱动失败
sudo ./configure --disable-8139too --enable-generic --enable-r8169 --disable-eoe
Starting EtherCAT master 1.6.4 modprobe: ERROR: could not insert 'ec_r8169': Invalid argument failed
[854209.848691] EtherCAT: Master driver 1.6.4 1.6.4
[854209.848953] EtherCAT: 1 master waiting for devices.
[854210.176686] ec_r8169: disagrees about version of symbol ecdev_close
[854210.176692] ec_r8169: Unknown symbol ecdev_close (err -22)
[854210.176796] ec_r8169: disagrees about version of symbol ecdev_set_link
[854210.176797] ec_r8169: Unknown symbol ecdev_set_link (err -22)
[854210.176810] ec_r8169: disagrees about version of symbol ecdev_receive
[854210.176811] ec_r8169: Unknown symbol ecdev_receive (err -22)
[854210.176901] ec_r8169: disagrees about version of symbol ecdev_offer
[854210.176902] ec_r8169: Unknown symbol ecdev_offer (err -22)
[854210.176943] ec_r8169: disagrees about version of symbol ecdev_withdraw
[854210.176944] ec_r8169: Unknown symbol ecdev_withdraw (err -22)
[854210.176949] ec_r8169: disagrees about version of symbol ecdev_open
[854210.176951] ec_r8169: Unknown symbol ecdev_open (err -22)
[854210.218583] r8169 0000:02:00.0 eth0: RTL8168h/8111h, 68:ed:a6:08:b1:77, XID 541, IRQ 130
[854210.218592] r8169 0000:02:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
[854210.221438] r8169 0000:02:00.0 enp2s0: renamed from eth0
[854210.243300] r8169 0000:03:00.0 eth0: RTL8168h/8111h, 68:ed:a6:08:b1:78, XID 541, IRQ 131
[854210.243308] r8169 0000:03:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
[854210.246325] r8169 0000:03:00.0 enp3s0: renamed from eth0
[854210.249479] EtherCAT: Master module cleaned up.
[854210.302429] Generic FE-GE Realtek PHY r8169-0-200:00: attached PHY driver (mii_bus:phy_addr=r8169-0-200:00, irq=MAC)
[854210.482501] r8169 0000:02:00.0 enp2s0: Link is Down
[854210.522422] Generic FE-GE Realtek PHY r8169-0-300:00: attached PHY driver (mii_bus:phy_addr=r8169-0-300:00, irq=MAC)
[854210.714490] r8169 0000:03:00.0 enp3s0: Link is Down
[854211.954446] r8169 0000:02:00.0 enp2s0: Link is Up - 100Mbps/Full - flow control rx/tx
[854211.954471] IPv6: ADDRCONF(NETDEV_CHANGE): enp2s0: link becomes ready
[426163.348589] EtherCAT 0: Master thread exited.
[426163.348592] EtherCAT 0: Stopping EoE thread.
[426163.348608] EtherCAT 0: EoE thread exited.
[426163.348609] EtherCAT 0: Starting EoE thread.
[426163.348664] EtherCAT 0: Starting EtherCAT-OP thread.
[426163.348725] EtherCAT WARNING 0: 1 datagram UNMATCHED!
[426163.489821] EtherCAT WARNING 0-0: Invalid mailbox response for eoe0s0.
[426163.505818] EtherCAT WARNING 0-0: Other mailbox protocol response for eoe0s0.
[426163.521818] EtherCAT ERROR 0-0: Mailbox error response received - Unknown error reply code 0x0000.
[426163.521822] EtherCAT WARNING 0-0: Invalid mailbox response for eoe0s0.
[426163.537816] EtherCAT WARNING 0-0: Other mailbox protocol response for eoe0s0.
[426163.569373] EtherCAT 0: Domain 0: Working counter changed to 2/3.
[426163.579421] EtherCAT ERROR 0-0: Failed to set OP state, slave refused state change (SAFEOP + ERROR).
[426163.593756] EtherCAT ERROR 0-0: AL status message 0x0027: "Freerun not supported".
[426163.609782] EtherCAT 0-0: Acknowledged state SAFEOP.
[426164.571099] EtherCAT 0: Domain 0: 2 working counter changes - now 2/3.
[426169.069659] EtherCAT 0: Releasing master...
[426169.069681] EtherCAT 0: Master thread exited.
[426169.069683] EtherCAT 0: Stopping EoE thread.
[426169.069699] EtherCAT 0: EoE thread exited.
[426169.069707] EtherCAT 0: Starting EoE thread.
[426169.069799] EtherCAT 0: Starting EtherCAT-IDLE thread.
[426169.069839] EtherCAT 0: Released.
Solution - 2
修改源码,暂时的方案,
DC SYNCH configuration
配置DC错误,需结合ESI文件种的DC配置来更新代码种DC的配置
ESI DC描述
<Dc>
<OpMode>
<Name>DC</Name>
<Desc>DC-Synchron</Desc>
<AssignActivate>#x300</AssignActivate>
<CycleTimeSync0 Factor="1">0</CycleTimeSync0>
<ShiftTimeSync0>0</ShiftTimeSync0>
<CycleTimeSync1 Factor="1">0</CycleTimeSync1>
</OpMode>
</Dc>
IGH代码配置
ecrt_slave_config_dc(sc, 0x0300, PERIOD_NS, 0, 0, 0);
[500956.067652] EtherCAT ERROR 0-0: Failed to set SAFEOP state, slave refused state change (PREOP + ERROR).
[500956.069655] EtherCAT ERROR 0-0: AL status message 0x0030: "Invalid DC SYNCH configuration".
[500956.073656] EtherCAT 0-0: Acknowledged state PREOP.
[500956.082001] EtherCAT 0: Releasing master...
[500956.082046] EtherCAT 0: Master thread exited.
[500956.082054] EtherCAT 0: Starting EtherCAT-IDLE thread.
[500956.082170] EtherCAT 0: Released.
[500956.082182] EtherCAT ERROR 0-2: Failed to receive AL state datagram: Datagram initialized.
[500956.373139] EtherCAT WARNING: Datagram 00000000047e5d5c (master-fsm) was SKIPPED 1 time.
SV660N TODO
TODO, SV660N需要在Pre-Op模式下设置PDO,
[518987.528022] EtherCAT: Requesting master 0...
[518987.528029] EtherCAT: Successfully requested master 0.
[518987.528128] EtherCAT 0: Domain0: Logical address 0x00000000, 40 byte, expected working counter 3.
[518987.528131] EtherCAT 0: Datagram domain0-0-main: Logical offset 0x00000000, 40 byte, type LRW.
[518987.528151] EtherCAT 0: Master thread exited.
[518987.528154] EtherCAT 0: Starting EtherCAT-OP thread.
[518987.528217] EtherCAT WARNING 0: 1 datagram UNMATCHED!
[518987.666277] EtherCAT ERROR 0-0: SDO download 0x1701:00 (1 bytes) aborted.
[518987.666284] EtherCAT ERROR 0-0: SDO abort message 0x06010002: "Attempt to write a read-only object".
[518987.666286] EtherCAT WARNING 0-0: Failed to clear PDO mapping.
[518987.666287] EtherCAT WARNING 0-0: Currently mapped PDO entries: 0x6040:00/16 0x607A:00/32 0x60B8:00/16 0x60FE:01/32. Entries to map: 0x6040:00/16 0x607A:00/32 0x60B8:00/16 0x60FE:01/32
[518987.666303] EtherCAT WARNING 0-0: Failed to configure mapping of PDO 0x1701.
[518987.685277] EtherCAT ERROR 0-0: SDO download 0x1B01:00 (1 bytes) aborted.
[518987.685282] EtherCAT ERROR 0-0: SDO abort message 0x06010002: "Attempt to write a read-only object".
[518987.685284] EtherCAT WARNING 0-0: Failed to clear PDO mapping.
[518987.685286] EtherCAT WARNING 0-0: Currently mapped PDO entries: 0x603F:00/16 0x6041:00/16 0x6064:00/32 0x6077:00/16 0x60F4:00/32 0x60B9:00/16 0x60BA:00/32 0x60BC:00/32 0x60FD:00/32. Entries to map: 0x603F:00/16 0x6041:00/16 0x6064:00/32 0x6077:00/16 0x60F4:00/32 0x60B9:00/16 0x60BA:00/32 0x60BC:00/32 0x60FD:00/32
[518987.685312] EtherCAT WARNING 0-0: Failed to configure mapping of PDO 0x1B01.
[518990.527089] EtherCAT WARNING 0: 6 datagrams UNMATCHED!
[518990.539264] EtherCAT WARNING: Datagram 00000000b8943496 (domain0-0-main) was SKIPPED 3 times.
[518992.699247] EtherCAT WARNING 0-0: Slave did not sync after 5000 ms.
[518992.705246] EtherCAT 0: Domain 0: Working counter changed to 2/3.