Advanced Search

Search Results (Searched for: )

  • endian
  • endian's Avatar
Today 19:08
Replied by endian on topic Ethercat random jitter fix

Ethercat random jitter fix

Category: EtherCAT

Synchronization of slave clocks can sometimes take a long time at start.
There is a warning in syslog if it takes more than 5 seconds, or is it 30?
Don't know how to fix it, more than hope the slaves' clocks run more equal
when not being nudged by the master.
Add pll-err to the halscope plot. 
 

I saw at my own eyes synchronization of 120 seconds with beckhoff SoE AX5125 driver with older firmware ... its not odd behaviour 

beckhoff IPCs have sometime very similar behaviour with their own hardware from my close experiences...
  • endian
  • endian's Avatar
Today 18:52 - Today 19:03
Replied by endian on topic AX5201 does not change to SAFEOP / OP

AX5201 does not change to SAFEOP / OP

Category: EtherCAT

hi there,

if you do not want to change timing in the TC3 to 1ms (easiest way and no play to errors) then change -
<EtherCATMailbox>
<script id="eppiocemhmnlbhjplcgkofciiegomcon"/>
<script/>
<script/>
<SoE>
<InitCmds>
<InitCmd>
<Transition>PS</Transition>
<Comment>
<![CDATA[ Tncyc - NC cycle time ]]>
</Comment>
<Timeout>0</Timeout>
<OpCode>3</OpCode>
<DriveNo>0</DriveNo>
<IDN>1</IDN>
<Elements>64</Elements>
<Attribute>0</Attribute>
<Data>d007</Data>                      to                  <Data>e803</Data>
</InitCmd>
<InitCmd>
<Transition>PS</Transition>
<Comment>
<![CDATA[ Tscyc - Comm cycle time ]]>
</Comment>
<Timeout>0</Timeout>
<OpCode>3</OpCode>
<DriveNo>0</DriveNo>
<IDN>2</IDN>
<Elements>64</Elements>
<Attribute>0</Attribute>
<Data>d007</Data>                      to                  <Data>e803</Data>
</InitCmd>

and in ethercat conf xml change -
<masters>
<script id="eppiocemhmnlbhjplcgkofciiegomcon"/>
<script/>
<script/>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="-1">

and in .ini file change - 
[TASK]
TASK                    = milltask
#CYCLE_TIME              = 0.002
CYCLE_TIME = 0.001

[EMCMOT]
EMCMOT                  = motmod
COMM_TIMEOUT            = 1.0
BASE_PERIOD             = 0
#SERVO_PERIOD            = 2000000
SERVO_PERIOD = 1000000


check cabling CAT5e with shielding ... its pretty sensitive stuff

check if you have non generic driver ... it has to be native NIC driver at network card with EoE turned off => very important

set time of task in TC3 to 1ms and export it ... 

connect just and only AX5201 to ethercat master... export config and translate it (problem isolation)

change 0x0740 to 0x0730 ... timing have to be correct because it is direct timing extraction from beckhoff master and exported to our shape ... 
  • Aciera
  • Aciera's Avatar
Today 18:35
Replied by Aciera on topic CSS/G96 for other than X-axis?

CSS/G96 for other than X-axis?

Category: Advanced Configuration


Just so Im clear, the pos->v = 2*j[2];function results in the V-axis moving twice the distance of JOINT_2?

And the reverse forj[2] =0.5* pos->v;in the Inverse section?

yes, the dro readout for V will show the double of the joint_2 position or, in other words, joint_2 will move half the commanded V axis position.


Don't adjust the case 1 X-axis/joint_2 relationship, because X-axis will move at half-distance when in diameter mode.
DO adjust the case 1 V-axis/joint_0 relationship, because LCNC doesn't have a diameter mode for any axis other than X.

Sounds correct. Famous last words :)
  • spumco
  • spumco
Today 18:08
Replied by spumco on topic CSS/G96 for other than X-axis?

CSS/G96 for other than X-axis?

Category: Advanced Configuration

Well that's a clever idea.

Just so Im clear, the pos->v = 2*j[2];function results in the V-axis moving twice the distance of JOINT_2?

And the reverse forj[2] =0.5* pos->v;in the Inverse section?

Which means in case 1 I'd want to adjust the X-axis:pos->tran.x = 2*j[2];So the X-axis moves the correct distance when connected to the parting slide joint?


Which means I can adjust the INI stepgen position scale so it's not cut in half, and then adjust both case 0 and case 1 so the V-axis moves half the distance (diameter mode).

case 0:
            pos->tran.x = j[0];
            pos->tran.z = j[1];
            pos->v        = 0.5*j[2];
            break;
        case 1:
            pos->tran.x = j[2];
            pos->tran.z = j[1];
            pos->v        = 0.5*j[0];
            break;
  • Don't adjust the case 1 X-axis/joint_2 relationship, because X-axis will move at half-distance when in diameter mode.
  • DO adjust the case 1 V-axis/joint_0 relationship, because LCNC doesn't have a diameter mode for any axis other than X.

Make sense, or have I got something wrong?
  • Aciera
  • Aciera's Avatar
Today 17:38 - Today 17:41
Replied by Aciera on topic CSS/G96 for other than X-axis?

CSS/G96 for other than X-axis?

Category: Advanced Configuration

You could also try to create V-axis/joint3 diameter mode in the kinematics component.
Using the initial example with V-axis/joint2:

Forward:
case 0:
pos->tran.x = j[0];
pos->tran.z = j[1];
pos->v = 2*j[2];
break;
case 1:
pos->tran.x = j[2];
pos->tran.z = j[1];
pos->v = 2*j[0];
break;

Inverse:
switch (switchkins_type) {
case 0:
j[0] = pos->tran.x;
j[1] = pos->tran.z;
j[2] = 0.5* pos->v;
break;
case 1:
j[2] = pos->tran.x;
j[1] = pos->tran.z;
j[0] = 0.5*pos->v;
break;
}
  • endian
  • endian's Avatar
Today 17:32 - Today 17:34
Replied by endian on topic LinuxCNC S-Curve Accelerations

LinuxCNC S-Curve Accelerations

Category: General LinuxCNC Questions

@PCW
Agreed that an ideal TP should always obey constraints, and the full stop fallback is the correct mechanism to achieve that. No argument there.
The question is whether strict enforcement should be mandatory or an integrator choice. A 20% jerk overshoot on a 1ms grid at a G1 corner is not an unknown uncontrolled violation, it is small, bounded, and predictable, and on drives with internal interpolation the mechanical system never sees it. That is a different situation from the uncontrolled external factors you are rightly warning about.
The practical concern is cycle time. On a complex CAM toolpath with many short segments, mandatory stops at every corner that fails the jerk test could multiply execution time significantly. That is a real regression for integrators who have matched their drive capabilities to their application.
So the proposal is: implement the jerk-aware full stop as an option, off by default to preserve existing behavior, and let integrators who need provably clean command streams or are running drives without internal interpolation opt in. That gives you the mathematically correct behavior when it is needed, without penalizing everyone else.
 

non budget drives always have more step filtering to suppress these behaviour... I think from differential calculus it is exactly that we need count with some limits of movememt caused by curving, jerk implementation fundamentally ...

it should be switchable from Gcode directly by user, who knows whats is doing... if the trajecotry tolerance is too high and velocity in that moment is non sensing plus path is small segmenting... some overlimit during small amount of time are acceptable(timing tolerance and spiking toleracne should be controlled by the user)

bending(trajectory) the tolerance - to handle this situation is non sense 
  • spumco
  • spumco
Today 17:08
Replied by spumco on topic CSS/G96 for other than X-axis?

CSS/G96 for other than X-axis?

Category: Advanced Configuration

So here's an interesting problem for anyone following along...

I cut the parting slide stepgen scale by half (JOINT_3) so the V-axis can be programmed in diameter mode.  When set like this jogging/MDI/g-code is just like X in diameter mode - very intuitive.

Getting ready to test G96 CSS and double-checking everything - set G54 offsets, etc.  I enable switchkins and everything's fine...

But now the virtual X parting slide is only moving half the distance it should.  DRO is following the movement - it's moving at half the distance it should as well.

Ok, got it - I've got the scale cut in half, and LCNC is cutting that in half again when I switch the kinematics and am commanding an X move.

Easy solution: change the JOINT_3 scale back to full-distance value when switchkins is active.  But...

LCNC instantly throws a JOINT_3 following error when the scale switches.  Bugger.

I can double the V-axis/JOINT_3 scale and fiddle with the jog values, but that will still leave the V-axis G54 offset wonky.  I write the V-axis offset to the X-axis when switchkins is enabled (along with max/min limits) so the parting slide tool-tip at centerline can be set to "X0" for CSS.

How can I have my cake and eat it, too?
  • V-axis/JOINT_3 to be in diameter mode when switchkins is not enabled, and
  • X-axis/JOINT_3 to be in diameter mode when switchkins is enabled
  • No following error when enabling switchkins
  • All programming in G7 mode - switching back and forth between G7/G8 is going to cause my brain to hurt and a crash.
  • grandixximo
  • grandixximo's Avatar
Today 15:59
Replied by grandixximo on topic LinuxCNC S-Curve Accelerations

LinuxCNC S-Curve Accelerations

Category: General LinuxCNC Questions

@PCW
Agreed that an ideal TP should always obey constraints, and the full stop fallback is the correct mechanism to achieve that. No argument there.
The question is whether strict enforcement should be mandatory or an integrator choice. A 20% jerk overshoot on a 1ms grid at a G1 corner is not an unknown uncontrolled violation, it is small, bounded, and predictable, and on drives with internal interpolation the mechanical system never sees it. That is a different situation from the uncontrolled external factors you are rightly warning about.
The practical concern is cycle time. On a complex CAM toolpath with many short segments, mandatory stops at every corner that fails the jerk test could multiply execution time significantly. That is a real regression for integrators who have matched their drive capabilities to their application.
So the proposal is: implement the jerk-aware full stop as an option, off by default to preserve existing behavior, and let integrators who need provably clean command streams or are running drives without internal interpolation opt in. That gives you the mathematically correct behavior when it is needed, without penalizing everyone else.
  • Lcvette
  • Lcvette's Avatar
Today 15:21
Replied by Lcvette on topic Does auto-leveling for Probe Basic exist?

Does auto-leveling for Probe Basic exist?

Category: QtPyVCP

there was a surface map project a while back, not sure if that would be something that was useful or not. but i never really used it much, it seems like it was for larger routers that may have uneven beds, so im sure it could be configured for your use case. maybe the creator of it can chime in. I will ping them on the chat and ask if they can step in and reply.
  • tommylight
  • tommylight's Avatar
Today 14:56
Replied by tommylight on topic LinuxCNC python

LinuxCNC python

Category: General LinuxCNC Questions

OK, thank you.
  • PCW
  • PCW's Avatar
Today 14:53 - Today 14:59
Replied by PCW on topic LinuxCNC S-Curve Accelerations

LinuxCNC S-Curve Accelerations

Category: General LinuxCNC Questions

I would tend to disagree. An ideal TP should always obey constraints, and this is possible
even with a zero P value (motion simply stops at the corner) and enough lookahead.
The TP slows enough on non-differentiable features that it can both obey constraint
bounds and deviate less than P from the programmed path.

If the TP does not obey constraints, some external and likely less controllable
factor will determine the bounds.
 
  • Donb9261
  • Donb9261's Avatar
Today 13:32
Replied by Donb9261 on topic LinuxCNC python

LinuxCNC python

Category: General LinuxCNC Questions

I made this work around that seems to be robust.

if cur_task_mode_mon == 1 and cur_interp_state_mon == 1 and cur_queue_mon == 0:
cmd.abort()

M30 is actually read into the buffer and executed, but the inerp has already reset before updating the line number que. That is a bug in Linuxcnc and breaks the standard function of M30 in RS274.

I may simply modify my lcnc to fix the issue. But for now, the above works and should only activate if the yask_mode is manual, which M30 does actually set on M30 read, the task_state is idle, which it should be, and the queue is empty. Which is the planner que.
  • grandixximo
  • grandixximo's Avatar
Today 12:59
Replied by grandixximo on topic LinuxCNC S-Curve Accelerations

LinuxCNC S-Curve Accelerations

Category: General LinuxCNC Questions

@ruediger123

Think of it like a train on tracks. Your train has a strict rule: it must never jerk the passengers more than a certain amount. It approaches a sharp 45° bend in the track. The only way to respect the jerk rule through that bend is to slow down enough before it. Fine so far.

But now imagine the track is divided into fixed 1 meter segments and the train can only change speed at the boundary between segments, never in between. The bend does not fall exactly on a segment boundary. So no matter how carefully the train slows down, the moment it crosses the bend it is mid-segment, and the direction change happens in one step. That step is a spike, regardless of how slow the train is going.

Your 1ms cycle time is those fixed segments. The corner of your octagon is the bend that never lands exactly on a boundary. The jerk spike is that one unavoidable step.

The only way to eliminate it completely is to stop the train at the bend, let it come to a full standstill, change direction, then start again. That respects every rule. But it is slow.

Everything else is a compromise: the spike exists, it is small, and a good drive smooths it out internally before it reaches the wheels. For most machines that is perfectly acceptable. But if you need the command stream itself to be clean, a full stop at sharp corners is the only option within your parameters.
  • grandixximo
  • grandixximo's Avatar
Today 12:55
Replied by grandixximo on topic LinuxCNC S-Curve Accelerations

LinuxCNC S-Curve Accelerations

Category: General LinuxCNC Questions

@ruediger123
For your exact parameters: 1ms cycle, 50 m/s³ jerk, 5 m/s² acceleration, P0.01 on a 45° corner, the only cornering speed that mathematically fits within the jerk limit on a 1ms grid is zero. Any non-zero cornering speed produces a direction change that cannot be absorbed within the jerk limit given the grid resolution. This is not a tuning issue, it is a fundamental property of discrete-time trajectory execution on a fixed clock.
In practice the planner currently exceeds the limit only slightly, and for most servo drives this is acceptable because the drive interpolates internally at a much higher rate and the mechanical system never sees the spike. What HALscope shows is the command stream quantized at 1ms, not what the motor actually does.
That said, an option to automatically fall back to a complete stop when the jerk-constrained cornering speed rounds down to effectively zero could be useful, giving integrators a way to get mathematically clean HALscope traces at the cost of cycle time on sharp corners. Worth considering as a TP option.
  • Donb9261
  • Donb9261's Avatar
Today 12:32
Replied by Donb9261 on topic LinuxCNC python

LinuxCNC python

Category: General LinuxCNC Questions

Tommy,

The replies demo what is actually happening in hopes I may get some guidance to fix it. My question is above them.
Displaying 1 - 15 out of 284780 results.
Time to create page: 2.895 seconds
Powered by Kunena Forum