sutty
-
Posts
80 -
Joined
-
Last visited
-
Days Won
2
Content Type
Profiles
Forums
Events
Downloads
Posts posted by sutty
-
-
Hi Alex!
After changing phase/servo/RTI from 32/16/4 to 8/2/2 ecattypedsdo() work fine.
So back to the drive-enable-fail - which still is present.
I set Motor[8].EcatAmpFaultLimit=$1000
Then on a "#8j/" the motor produces torque after about 2s for about 2s. Motor[8].AmpEna never get set.
Can you offer some quick fix for this and how long will it take - day/week/month/year/ever?!
-
Hi Alex!
I've changed Phase/Servo/RTI from 32/16/4 to 8/2/2 kHz - now ecattypedsdo() reads values:
l0=ecattypedsdo(0,1,1,$1000,$0,0,4) l0
L0=131474
l0=ecattypedsdo(0,1,1,$2002,$14,0,4) l0
L0=150
l0=ecattypedsdo(0,1,1,$2002,$15,0,4) l0
L0=37
But in the motor topology still the drive EL7211-0011 does not show up!!
Will you provide a bugfix for ecattypedsdo() in case of high phase-frequencies (32kHz)?
-
Hi Alex!
I set up EK1100 and EL7211-0011 and issued ecatslaves, ecatreset, ecattypedsdo(). Still bad results:
ecatslaves
0 VID=$00000002 PC=$044C2C52 0:0 PREOP + Slave_001
1 VID=$00000002 PC=$1C2B3052 0:1 PREOP + Slave_002
ecatreset
Stopping ACONTIS communication
Starting ACONTIS communication
Restarting ACONTIS stack
Licenses granted by /opt/etherlab/etc/sysconfig/.ethercat: 8; MACID:00:50:C2:4D:79:9D
Ecat Type: 1; ECAT License for 32 axis
0 VID=$00000002 PC=$044C2C52 0:0 PREOP + ?v?"
1 VID=$00000002 PC=$1C2B3052 0:1 PREOP + ?v?"
l0=ecattypedsdo(0,1,1,$8010,$15,0,4) l0
L0=nan
l0=ecattypedsdo(0,1,1,$1000,0,0,4) l0
L0=nan
ECAT[0].Enable=1
ecatslaves
0 VID=$00000002 PC=$044C2C52 0:0 OP + Slave_1001 [EK1100]
1 VID=$00000002 PC=$1C2B3052 0:1 OP + Slave_1002 [EL7211-0011]
l0=ecattypedsdo(0,1,1,$8010,$15,0,4) l0
requested data size: 4 and received data size: 20 do not match
L0=nan
l0=ecattypedsdo(0,1,1,$1000,0,0,4) l0
L0=nan
l0=ecattypedsdo(0,1,1,$8010,$15,0,4) l0
requested data size: 4 and received data size: 20 do not match
L0=nan
??
We could start a remote-session - if that would help to advance here!
-
Yes, AmpEnable PDO is a single bit in 0x7010:01 (all pdo-mappings are shown in the pic above)
You did not tell me yet how to set up the drive so it shows up as servo drive in the motor topology view
-
EK1100 is the ECAT-coupler, and needed absolutely. I could test EK1100 together with EL7211-0011
-
On the EL7211 and 1S-drive those 2 bits (AmpFault, AmpEna) are important to set them right.
On the EL7031 I have to set them to 0 since related PDOs are bit-wide.But still, the Amp-Enable Motor[8].AmpEna does not come up at all!!
-
Hi Alex!
Well the setting changes now and then. At the moment I run 3 drives (EL7211-0011, EL7031, EL7211-0010) and 5 IO-terminals.
Here the results of the 3 cmds:
ecat slaves
0 VID=$00000002 PC=$044C2C52 0:0 OP + Slave_1001 [EK1100]
1 VID=$00000002 PC=$1C2B3052 0:1 OP + Slave_1002 [EL7211-0011]
2 VID=$00000002 PC=$1B773052 0:2 OP + Slave_1003 [EL7031]
3 VID=$00000002 PC=$1C2B3052 0:3 OP + Slave_1004 [EL7211-0010]
4 VID=$00000002 PC=$07D43052 0:4 OP + Slave_1005 [EL2004]
5 VID=$00000002 PC=$07D43052 0:5 OP + Slave_1006 [EL2004]
6 VID=$00000002 PC=$03FA3052 0:6 OP + Slave_1007 [EL1018]
7 VID=$00000002 PC=$03EC3052 0:7 OP + Slave_1008 [EL1004]
8 VID=$00000002 PC=$03EC3052 0:8 OP + Slave_1009 [EL1004]
ecatreset
Stopping ACONTIS communication
Starting ACONTIS communication
Restarting ACONTIS stack
Licenses granted by /opt/etherlab/etc/sysconfig/.ethercat: 8; MACID:00:50:C2:4D:79:9D
Ecat Type: 1; ECAT License for 32 axis
0 VID=$00000002 PC=$044C2C52 0:0 OP + ??v?"
1 VID=$00000002 PC=$1C2B3052 0:1 SAFEOP + ??v?"
2 VID=$00000002 PC=$1B773052 0:2 SAFEOP + ??v?"
3 VID=$00000002 PC=$1C2B3052 0:3 SAFEOP + ??v?"
4 VID=$00000002 PC=$07D43052 0:4 OP + ??v?"
5 VID=$00000002 PC=$07D43052 0:5 OP + ??v?"
6 VID=$00000002 PC=$03FA3052 0:6 OP + ??v?"
7 VID=$00000002 PC=$03EC3052 0:7 OP + ??v?"
8 VID=$00000002 PC=$03EC3052 0:8 OP + ??v?"
l0=ecattypedsdo(0,0,1,$1000,0,0,4) l0
L0=nan
-
Manual setup of Acontis EtherCAT motors may be a bit complicated...
I did setup EL7211 manually - and it runs! I "copied" it from a 1S-drive.
But in all cases, if both, Motor[x].AmpEnableBit and Motor[x].AmpFaultBit are not set right, it would not run - in contratiction to the manual...
I believe there may be something else you can do to the drive to get it to show up as a servo drive.
Well, let me know Eric!!
At last, I guess, the MDP703, which this EL7031 runs on, causes the problems (it has not MDP742 nor DS402). Therein I only get the status bitwise - check out the pic with the pdo-mapping above.
-
Hi Eric!
There is no way to integrate the ECAT-drive EL7031 using motor topology.
See thread: http://forums.deltatau.com/showthread.php?tid=3056
I did a plot where you can see, Motor8].AmpEna remains 0 all the time.
The same for ECAT[0].IO[4101].Data whereto Motor[8].pAmpFault is pointing to.
Here the most important settings for motor #8:
Motor[8].pDac=ECAT[0].IO[5].Data.a
Motor[8].AmpEnableBit=0
Motor[8].pAmpEnable=ECAT[0].IO[2].Data.a
Motor[8].AmpFaultBit=0
Motor[8].pAmpFault=ECAT[0].IO[4101].Data.a
Motor[8].EcatAmpFaultLimit=$500
Here PDO-Mapping ECATconfig.cfg:
ECAT[0].IO[4098].BitLength=1
ECAT[0].IO[4098].Index=24592
ECAT[0].IO[4098].SubIndex=1
ECAT[0].IO[4098].Input=1
ECAT[0].IO[4098].Offset=6
ECAT[0].IO[4098].BitPosition=0
ECAT[0].IO[4098].Slave=2
ECAT[0].IO[4099].BitLength=1
ECAT[0].IO[4099].Index=24592
ECAT[0].IO[4099].SubIndex=2
ECAT[0].IO[4099].Input=1
ECAT[0].IO[4099].Offset=6
ECAT[0].IO[4099].BitPosition=1
ECAT[0].IO[4099].Slave=2
ECAT[0].IO[4100].BitLength=1
ECAT[0].IO[4100].Index=24592
ECAT[0].IO[4100].SubIndex=3
ECAT[0].IO[4100].Input=1
ECAT[0].IO[4100].Offset=6
ECAT[0].IO[4100].BitPosition=2
ECAT[0].IO[4100].Slave=2
ECAT[0].IO[4101].BitLength=1
ECAT[0].IO[4101].Index=24592
ECAT[0].IO[4101].SubIndex=4
ECAT[0].IO[4101].Input=1
ECAT[0].IO[4101].Offset=6
ECAT[0].IO[4101].BitPosition=3
ECAT[0].IO[4101].Slave=2
ECAT[0].IO[4102].BitLength=1
ECAT[0].IO[4102].Index=24592
ECAT[0].IO[4102].SubIndex=5
ECAT[0].IO[4102].Input=1
ECAT[0].IO[4102].Offset=6
ECAT[0].IO[4102].BitPosition=4
ECAT[0].IO[4102].Slave=2
ECAT[0].IO[4103].BitLength=1
ECAT[0].IO[4103].Index=24592
ECAT[0].IO[4103].SubIndex=6
ECAT[0].IO[4103].Input=1
ECAT[0].IO[4103].Offset=6
ECAT[0].IO[4103].BitPosition=5
ECAT[0].IO[4103].Slave=2
ECAT[0].IO[4104].BitLength=1
ECAT[0].IO[4104].Index=24592
ECAT[0].IO[4104].SubIndex=7
ECAT[0].IO[4104].Input=1
ECAT[0].IO[4104].Offset=6
ECAT[0].IO[4104].BitPosition=6
ECAT[0].IO[4104].Slave=2
ECAT[0].IO[4105].BitLength=1
ECAT[0].IO[4105].Index=24592
ECAT[0].IO[4105].SubIndex=12
ECAT[0].IO[4105].Input=1
ECAT[0].IO[4105].Offset=7
ECAT[0].IO[4105].BitPosition=3
ECAT[0].IO[4105].Slave=2
ECAT[0].IO[4106].BitLength=1
ECAT[0].IO[4106].Index=24592
ECAT[0].IO[4106].SubIndex=13
ECAT[0].IO[4106].Input=1
ECAT[0].IO[4106].Offset=7
ECAT[0].IO[4106].BitPosition=4
ECAT[0].IO[4106].Slave=2
ECAT[0].IO[4107].BitLength=1
ECAT[0].IO[4107].Index=24592
ECAT[0].IO[4107].SubIndex=14
ECAT[0].IO[4107].Input=1
ECAT[0].IO[4107].Offset=7
ECAT[0].IO[4107].BitPosition=5
ECAT[0].IO[4107].Slave=2
ECAT[0].IO[4108].BitLength=1
ECAT[0].IO[4108].Index=24592
ECAT[0].IO[4108].SubIndex=16
ECAT[0].IO[4108].Input=1
ECAT[0].IO[4108].Offset=7
ECAT[0].IO[4108].BitPosition=7
ECAT[0].IO[4108].Slave=2
ECAT[0].IO[4109].BitLength=32
ECAT[0].IO[4109].Index=24592
ECAT[0].IO[4109].SubIndex=21
ECAT[0].IO[4109].Input=1
ECAT[0].IO[4109].Offset=8
ECAT[0].IO[4109].BitPosition=0
ECAT[0].IO[4109].Slave=2
ECAT[0].IO[2].BitLength=1
ECAT[0].IO[2].Index=28688
ECAT[0].IO[2].SubIndex=1
ECAT[0].IO[2].Input=0
ECAT[0].IO[2].Offset=6
ECAT[0].IO[2].BitPosition=0
ECAT[0].IO[2].Slave=2
ECAT[0].IO[3].BitLength=1
ECAT[0].IO[3].Index=28688
ECAT[0].IO[3].SubIndex=2
ECAT[0].IO[3].Input=0
ECAT[0].IO[3].Offset=6
ECAT[0].IO[3].BitPosition=1
ECAT[0].IO[3].Slave=2
ECAT[0].IO[4].BitLength=1
ECAT[0].IO[4].Index=28688
ECAT[0].IO[4].SubIndex=3
ECAT[0].IO[4].Input=0
ECAT[0].IO[4].Offset=6
ECAT[0].IO[4].BitPosition=2
ECAT[0].IO[4].Slave=2
ECAT[0].IO[5].BitLength=16
ECAT[0].IO[5].Index=28688
ECAT[0].IO[5].SubIndex=33
ECAT[0].IO[5].Input=0
ECAT[0].IO[5].Offset=8
ECAT[0].IO[5].BitPosition=0
ECAT[0].IO[5].Slave=2
With Motor[8].EcatAmpFaultLimit=$500 (@4kHz RTI it is 320 ms) the plot looks like as follows:
ECAT[0].IO[2].Data which is bitlenght 1 in the pdo-mapping goes 14 - 7 - 15 - 14 - at the end is set during 640 ms to 1 but then reset again.
The drive itself also gets enable for about that time (640 ms).
-
Hi Alex!
I've changed from MDP472 to DS402, but still the same bad result as before. The function ecattypedsdo() returns nan all the way.
???!
-
-
Hi everybody!
Testing an EL7031, a stepper drive terminal, everything works so far until I added that ECAT-drive to PPMAC-motor #8, concerning Motor[8].AmpEna:
Entering "#8j/" or "#8out0" will enable the drive and power the motor just for the length of Motor[8].EcatAmpFaultLimit. Meanwhile Motor[8].AmpEna does not go to 1 a single time - and so at the end causes an amp-fault-indication at the status for motor #8.
By hand I can enable the drive steadily by writing to ECAT[0].IO[2].Data=1 as long until I reset it back to 0. I can move the motor forth and back by writing to another register (drive is in Pos-Mode). No deal.
I tried everything around Motor[8].pAmpEnable, AmpEnableBit... no chance.
Apparently it runs on MDP 703:
https://download.beckhoff.com/download/document/io/ethercat-terminals/el70x1en.pdf
Does anybody has an idea about that issue?
Probably this is a terminal never been tested with PPMAC - nevertheless, since this is the only missing link, does anybody know a way to fix this so I can implement that ECAT-drive entirely as a PPMAC-motor
-
Until now I used MDP742 (default for all Beckhoff terminals) - but will change to DS402 soon. Maybe this will help to let the drive show up in the motor topology...
-
Hi Alex!
That is right - the device is setup with MDP742. I will follow your advice and get back to you by then.
Thank you so long, Anton
-
Hi Eric!
I gave it a try - both, with ECAT disabled / enabled. No good:
ecat[0].enable=0
l0=ecattypedsdo(0,0,1,$6061,0,0,1) l0
L0=nan
l0=ecattypedsdo(0,0,1,$6061,0,0,1) l0
L0=nan
l0=ecattypedsdo(0,0,1,$6060,0,0,1) l0
L0=nan
l0=ecattypedsdo(0,0,1,$6060,0,0,1) l0
L0=nan
l0=ecatregreadwrite(0,0,1,$6060,0,1) l0
L0=nan
l0=ecatregreadwrite(0,0,1,$6060,0,2) l0
L0=nan
l0=ecatregreadwrite(0,0,1,$6060,0,4) l0
L0=nan
l0=ecatregreadwrite(0,0,1,$92c,0,4) l0
L0=nan
ecat[0].enable=1
l0=ecatregreadwrite(0,0,1,$92c,0,4) l0
L0=-731329157
l0=ecatregreadwrite(0,0,1,$6060,0,1) l0
L0=nan
l0=ecatregreadwrite(0,0,1,$6060,0,2) l0
L0=nan
l0=ecatregreadwrite(0,0,1,$6060,0,4) l0
L0=nan
l0=ecattypedsdo(0,0,1,$6061,0,0,1) l0
L0=nan
l0=ecattypedsdo(0,0,1,$6061,0,0,1) l0
L0=nan
l0=ecattypedsdo(0,0,1,$6060,0,0,1) l0
L0=nan
l0=ecattypedsdo(0,0,1,$6060,0,0,1) l0
L0=nan
-
PPMAC V2.5.4.0 (with V2.5.0.3 same problems)
IDE V4.3.2.19
-
I can read registers with ecatregreadwrite(). Eg:
p4=ecatregreadwrite(0,0,1,$92c,0,4) p4
P4=106128631
p4=ecatregreadwrite(0,0,1,$928,0,4) p4
P4=0
p4=ecatregreadwrite(0,0,1,$904,0,4) p4
P4=-239087290
I cannot read anything with ecattypedsod(), like
p4=ecattypedsdo(0,0,1,$92c,0,0,4) p4
P4=nan
p4=ecattypedsdo(0,0,1,$904,0,0,4)
p4
l0=ecattypedsdo(0,0,1,$6000,$11,0,4) l0
L0=nan
-
I tried it all:
root@10.0.0.103:/opt/ppmac# gpascii
STDIN Open for ASCII Input
l0=ecattypedsdo(0,0,1,$8010,$15,0,4) l0
L0=nan
l0=ecattypedsdo(0,0,1,$8010,$15,0,4) l0
L0=nan
l0=ecattypedsdo(0,0,1,$8010,21,0,4) l0
L0=nan
l0=ecattypedsdo(0,0,1,$8010,21,0,4) l0
L0=nan
&1a
#1k
ecat[0].enable=0
l0=ecattypedsdo(0,0,1,$8010,21,0,4) l0
L0=nan
l0=ecattypedsdo(0,0,1,$8010,21,0,4) l0
L0=nan
l0=ecattypedsdo(0,0,1,$8010,$15,0,4) l0
L0=nan
l0=ecattypedsdo(0,0,1,$8010,$15,0,4) l0
L0=nan
vers
2.5.4.0
cpu
arm,LS1021A
sys.ecattype
Sys.EcatType=1
-
Unfortunately no results.
Does not matter if ECAT enabled/disabled.
Tried both functions ecatsdo() ecattypedsdo()
-
Yes, I am using Acontis
Both cmds don't work for me, ecatsdo() nor ecattypedsdo()
Also not when ECAT disabled
hex subindex doesn't help either
And yes, it is 4 bytes
Funny thing- in diagnosis mode I can change 0x8010:18, gain for current amplifier
0x8010:15 is not listed their
By time I will try it with TwinCat. There the parameter is listed:
-
Thank you Eric and Alex!
I tried all but without success. Always nan
The register ist 4 bytes, by the way.
Does anybody know something else?!
-
Hi!
Running Beckhoff-dirve EL7211-0010 in CSV-Mode, I need to tune the drives PI-gains before closing position loop on PPMAC.
After activating ECAT I tried writing to the drives velocity P-gain with follwoing command:
p1=ecattypedsdo(0,0,1,$8010,15,0,4)
where
0..master 0
0..slave 0
1..read
$8010..index for dirve amplifier settings
15.. subindex for velocity proportional gain
0..read/write-value
4..# bytes
p1=nan
Any idea?
For now I use the init-table to set those values - but it's quite laborious, since this approach needs many steps (deactivating ECAT, set value inside init-table, loading mapping to PPMAC, issue ecatreset, activating ECAT, agitate motor)
-
-
I could recover and successfully install V2.5.4.0, thanks to great support from Lucien / ODT Switzerland.
Looks like the device-tree "ls1021a-twr-ck3m.dtb" wasn't updated at all.
Anyhow, now bus shift mode seems to work fine.
Thanks!
ECAT Beckhoff EL7031 stepper drive - unstable Amp-Enable on open/closed loop cmd
in Power PMAC
Posted
Hey, Alex, great, this is all it needed. Now the stepper runs as PPMAC motor #8 as usually known!
Thank you for your troubles!!