Jump to content
OMRON Forums

sutty

Members
  • Posts

    80
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by sutty

  1. 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)?

  2. 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!

  3. 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

  4. 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.

  5. 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).

    200504_EL7031_PDO_Mapping.thumb.jpg.1a53b12039a5b6f01156816d988d9c9c.jpg

    200504_EL7031_AmpEna_remains_0.thumb.jpg.8b77fa1592e711d2a0cc0d33bf1b8471.jpg

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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)

×
×
  • Create New...