Jump to content
OMRON Forums

Tuning ECAT-drive in CSV-mode - howto set filter gains via SDO, ecattypedsdo() fails


sutty

Recommended Posts

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)

Link to comment
Share on other sites

  • Replies 36
  • Created
  • Last Reply

Top Posters In This Topic

It does look like that subindex is 4 bytes. Still try other sizes as Eric indicated (in case I'm misreading this), but try to also issue the ecattypedsdo command while EtherCAT is disabled.

 

the drive may be doing something to block you from accessing (even just reading) that parameter to prevent it from being changed on the fly. If it works with EtherCAT disabled, then there may be some other command you need to issue to the drive first to disable it before it lets you change gains, but since it'd be pretty drive specific, I'm not sure what it would be.

Link to comment
Share on other sites

I asked if this is Acontis because we have two SDO functions. ecattypedsdo is preferred for Acontis, but you can also try ecatsdo. The arguments are reordered and it doesn't need a number of bytes.

 

I would also try Alex's idea of disabling ecat with ECAT[0].Enable=0 before transferring SDOs in case there is a device specific issue.

 

Beyond those I would use another tool for viewing these registers to make sure index $8010 subindex 15 is correct. Can you view these values in twincat?

 

Are you sure it isn't more than 4 bytes?

 

Try listing the subindex as $F

Link to comment
Share on other sites

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:

698349424_200422_twincat_reg_0x801015.png.d5720e315e3826716bc189338ebd62ce.png

Link to comment
Share on other sites

It doesn't work, even with $15 as the subindex instead of 15? For some reason I spaced out entirely when I was looking into your drive and the correct subindex is absolutely 21 ($15), not 15, which does not appear to exist. Just to be sure, can you re-try these two commands and verify that they both fail?

 

l0=ecattypedsdo(0,0,1,$8010,$15,0,4) l0

 

l0=ecattypedsdo(0,0,1,$8010,21,0,4) l0

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

In our experience, Beckhoff implements EtherCAT through two different methods--one following the DS 402 profile, and one that is more similar to I/O, following the MDP 742 profile. Based on the responses, we believe that your unit is programmed to use the MDP 742 profile, and that is causing these issues. If you contact Beckhoff, you should be able to get a file that can be written to the EEPROM of the device to reprogram it for DS 402--it may even be available from their website, but I can't see it. Once you have that, if you contact odt (dash) support (at) omron (dot) com, we can send you a document that can help you load the file onto the device.
Link to comment
Share on other sites

Sutty,

 

Can you issue the following 3 commands exactly as-is and then post a screen shot of the terminal window/response? The first two may take a little bit to get a response (the second in particular may take a while), so I'd issue them one at a time and wait in between. This would be with EtherCAT disabled (the second command will re-initialize the ethercat stack entirely; if EtherCAT was enabled, this will disable it anyways and may fault slaves).

 

ecat slaves

ecat reset

l0=ecattypedsdo(0,0,1,$1000,0,0,4) l0

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Ah, sorry--I forgot that Beckhoff I/O shows up as individual slaves, as opposed to just multiple modules of a single slave, and didn't recognize the coupler part number. Yes, in that case please try with just the EK1100 and the EL7211-0011. If "ecat slaves" shows the EL7211 as Slave 1 instead of Slave 0 as I suspect it will (the 0 in the far left of the response, or the "0:1" in the middle of the response string), please change the second argument of ecattypedsdo to a "1" (so, ecattypedsdo(x,1,x,x,x,x,x) instead of ecattypedsdo(x,0,x,x,x,x,x)).
Link to comment
Share on other sites

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!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...