ASD-A2 EtherCAT on LinuxCNC

More
14 Apr 2021 20:52 #205938 by arvidb
Replied by arvidb on topic ASD-A2 EtherCAT on LinuxCNC
Could it be that you have marginally unstable servo loops where sometimes a resonance is triggered? Have you tried different tunings?

(I'm absolutely no expert on servo tuning, but it's an idea, anyway...)

Please Log in or Create an account to join the conversation.

More
14 Apr 2021 20:58 #205939 by jirkam
Replied by jirkam on topic ASD-A2 EtherCAT on LinuxCNC
Good day.

Thanks for the idea.
We tried everything.
He does it in positional control and in speed control.

Jirka

Please Log in or Create an account to join the conversation.

More
15 Apr 2021 19:55 #206038 by chimeno
Replied by chimeno on topic ASD-A2 EtherCAT on LinuxCNC
Hello @Jirkam,
are you sure you have the DC-MODE mode configured correctly?
<slave idx = "12" type = "DeASDA" name = "X">
      <dcConf assignActivate = "730" sync0Cycle = "250000" sync0Shift = "0" sync1Cycle = "750000" sync1Shift = "0" />
    </slave>


It seems to me that it only supports these two modes, but not the event in SYNC1
1-Free Run Mode (Asynchronous)
2-DC-Synchronous Mode (SYNC0 synchronization)
Supported SYNC0 cycle time
1 ms (PDO cycle time = 1 ms)
2 ms (PDO cycle time = 2 ms)
3 ms (PDO cycle time = 3 ms)

I think the correct option is this
<slave idx = "12" type = "DeASDA" name = "X">
      <dcConf assignActivate = "300" sync0Cycle = "*1" sync0Shift = "0" />
    </slave>

*1 = set to 1ms
SERVO_PERIOD = 1000000


have if this helps??

Greeting
Chimeno

Please Log in or Create an account to join the conversation.

More
15 Apr 2021 19:55 #206039 by jirkam
Replied by jirkam on topic ASD-A2 EtherCAT on LinuxCNC
Hello.
I have something wrong in .xml.
I modified an .xml that is not in my configuration. By mistake.
That's why we didn't see any change.
Now I have edited the correct .xml and the Lcnc will load without error, but after F2 the servos can be rotated manually. And it shouldn't be.
What's wrong with me?
<masters>
  <master idx="0" appTimePeriod="1000000" refClockSyncCycles="-1">
    <slave idx="0" type="EK1100" name="EK1100"/>
    <slave idx="1" type="EL1819" name="DIN1"/>
    <slave idx="2" type="EL1819" name="DIN2"/>
    <slave idx="3" type="EL1088" name="DIN3"/>
    <slave idx="4" type="EL2809" name="DOUT1"/>
    <slave idx="5" type="EL2809" name="DOUT2"/>
    <slave idx="6" type="EL3064" name="AIN"/>
    <slave idx="7" type="EL4004" name="AOUT"/>
    <slave idx="8" type="EL2622" name="RELE1"/>
    <slave idx="9" type="EL2622" name="RELE2"/>
    <slave idx="10" type="EL2622" name="RELE3"/>
    <slave idx="11" type="EL2622" name="RELE4"/>
    <slave idx="12" type="DeASDA_pos" name="X">
      <dcConf assignActivate="730" sync0Cycle="250000" sync0Shift="0" sync1Cycle="750000" sync1Shift="0"/>
    </slave>
    <slave idx="13" type="DeASDA_pos" name="Y1">
      <dcConf assignActivate="730" sync0Cycle="250000" sync0Shift="0" sync1Cycle="750000" sync1Shift="0"/>
    </slave>
    <slave idx="14" type="DeASDA_pos" name="Y2">
      <dcConf assignActivate="730" sync0Cycle="250000" sync0Shift="0" sync1Cycle="750000" sync1Shift="0"/>
    </slave>
    <slave idx="15" type="DeASDA_pos" name="Z">
      <dcConf assignActivate="730" sync0Cycle="250000" sync0Shift="0" sync1Cycle="750000" sync1Shift="0"/>
    </slave>
  </master>
</masters>

Thank you very much.
Jirka

Please Log in or Create an account to join the conversation.

More
15 Apr 2021 19:59 #206041 by jirkam
Replied by jirkam on topic ASD-A2 EtherCAT on LinuxCNC
Hi @Chimeno

We wrote it at the same time.

I'm not sure I'm right.
I'll try as you write.

Thank you very much.
Jirka

Please Log in or Create an account to join the conversation.

More
01 May 2021 21:33 #207576 by jirkam
Replied by jirkam on topic ASD-A2 EtherCAT on LinuxCNC
Hi @Chinemo.
So I tried it and since then it's ok.
So I hope it lasts.

Thank you very much for the tip.
Have a nice weekend.
Jirka
The following user(s) said Thank You: chimeno

Please Log in or Create an account to join the conversation.

More
06 Sep 2021 20:27 #219789 by jirkam
Replied by jirkam on topic ASD-A2 EtherCAT on LinuxCNC
Hello.
So I'm back.
It lasted without a mistake for a few weeks. I managed to record the behavior on video.
Here is the video
1.red - joint.0.f-error ("X" axis)
2.blue - joint.1.f-error ("Y" axis)
3.green - joint.2.f-error ("Y" axis)
4.purple - joint.3.f-error ("Z" axis)
5.orange - lcec.0.pll-out
6.green - lcec.0.pll-err (it is marked on the video - therefore it is white)

Sometimes he doesn't do it all week.
Sometimes he does it twice a day.
Sometimes he does it all day.
Sometimes it stops making mistakes on its own.
Sometimes I have to restart Linuxcnc to stop making mistakes.

Does anyone know where the problem might be?

Thank you very much Jirka

Please Log in or Create an account to join the conversation.

More
05 Dec 2022 05:49 #258559 by mehdidadash
Hi jirkam
Can you attach your final configuration files like XML, INI, HAL,... ?

Please Log in or Create an account to join the conversation.

More
05 Dec 2022 12:45 #258589 by jirkam
Replied by jirkam on topic ASD-A2 EtherCAT on LinuxCNC
Hi
I found out that if I turn on the drivers first and only the PC after about 10 seconds, then it doesn't make the error.
Thank you.
Jirka
Attachments:
The following user(s) said Thank You: mehdidadash

Please Log in or Create an account to join the conversation.

More
05 Dec 2022 13:09 #258592 by db1981
Replied by db1981 on topic ASD-A2 EtherCAT on LinuxCNC
Hello Jirka,

i have noticed an "~big" error in your hal file.

you adding lcec.real-all and write-all at the beginning of the hal file.

caused that liunxcnc builds its execution order of task functions in the order they are placed in the hal file, your servo-thread calls ec-read and then immediatly writes out lcec-write. So nothing is done with the Data in the meantime. Lcec.write-all uses "old"data from the last cycle . Which causes timing issues and leads to an bad servo tuning.

the right order would be:

addf lcec.read-all (gets data from hardware)
addf motion, value-converts, pids, classicladder etc.. (works with the data)

last addf lcec.write-all (send new data to hardware).


In your case lcec.write-all is called in front of motion and pids. So it sends "old" data from the last cylce to the drives without the new calculations. You got an 1
cycle offset between input and output data.

(you can search for "execution order" in the forum, i have descripted this in detail somewhere)

Please Log in or Create an account to join the conversation.

Time to create page: 0.187 seconds
Powered by Kunena Forum