EBo | 1 Apr 2012 01:14

Re: adding araisrobo (aka artek) branch:

On Sat, 31 Mar 2012 16:04:24 -0500, Jon Elson wrote:

> Well, I don't know this part of the code, but I don't see the real 
> conflict.
> When in control of the motion system, meaning the G-code is 
> explicitly
> commanding all aspects of the motion, then the S-curve should be in
> force.  When in spindle-synchronized motion, all the trajectory 
> planning
> stuff is on hold, and the spindle rotation programs the movement of 
> the
> synchronized axis.  So, the S-curve code of the trajectory planner 
> would
> not be in control of the motion.  This is the way it is done now, as
> far as I know.
>
> What I'm trying to express above is that I can't see how Yishin's 
> S-curve
> causes a fundamental conflict with the spindle sync.  It may be that 
> he
> cut this
> out of the code for expedience, of course.

I do not see that there is a problem either, but it will take time to 
write and integrate things properly.

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
(Continue reading)

Yishin Li | 1 Apr 2012 03:53

Re: adding araisrobo (aka artek) branch:



On Sun, Apr 1, 2012 at 5:04 AM, Jon Elson <elson <at> pico-systems.com> wrote:

>>> On Sat, 31 Mar 2012 18:57:47 +0800, Yishin Li wrote:
>>>
>>>> IMHO, there's no technical limitations for implementing the spindle
>>>> synchronization. The only problem would be finding out a contract
>>>> to
>>>> support our living while we were busy developing this feature.
>>>>
Well, I don't know this part of the code, but I don't see the real conflict.
When in control of the motion system, meaning the G-code is explicitly
commanding all aspects of the motion, then the S-curve should be in
force.  When in spindle-synchronized motion, all the trajectory planning
stuff is on hold, and the spindle rotation programs the movement of the
synchronized axis.  So, the S-curve code of the trajectory planner would
not be in control of the motion.  This is the way it is done now, as
far as I know.

I don't think our modification breaks the existing spindle synchronization. And, I have no intention to do so. The comment for this issue was from the LinuxCNC community. Possibly because I put an assertion to tpAddRigidTap(). The reason that I have not deny this comment is because we do not have a platform to verify this with our USB/FPGA control board.

We are thinking of setup a platform to verify Rigid Tapping, and need advice for selecting spindle. 
Here are 3 options, which one should we better choose?
1. Inner Motor Spindle
2. Belt Spindle with Servo Motor 
3. Customized tool holder with Servo Motor

Thanks in advance,

Yishin Li
--
ARAIS ROBOT TECHNOLOGY
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Emc-developers mailing list
Emc-developers@...
https://lists.sourceforge.net/lists/listinfo/emc-developers
Jon Elson | 1 Apr 2012 06:54

Re: adding araisrobo (aka artek) branch:

Yishin Li wrote:
>
>
>  The reason that I have not deny this comment is because we do not 
> have a platform to verify this with our USB/FPGA control board.
>
OK, good, I couldn't imagine a fundamental reason why it shouldn't be 
compatible.
> We are thinking of setup a platform to verify Rigid Tapping, and need 
> advice for selecting spindle. 
> Here are 3 options, which one should we better choose?
> 1. Inner Motor Spindle
> 2. Belt Spindle with Servo Motor 
> 3. Customized tool holder with Servo Motor
It really doesn't matter.  The only place it becomes a problem is if the 
spindle reversal
is so quick that the linear axis cannot stay in sync.  A VFD can be 
programmed to
limit the rate at which the spindle speed can change, or a filter such 
as the HAL limit
component can be put in the spindle speed command to control the rate of 
reversal.
All you need is an encoder with index on the spindle.

Jon

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
Michael Haberler | 1 Apr 2012 08:12
Picon
Favicon

Re: adding araisrobo (aka artek) branch:


Am 01.04.2012 um 06:54 schrieb Jon Elson:

> Yishin Li wrote:
...

> All you need is an encoder with index on the spindle.

which might even be a simulated one to start with; Jeff came up with one and I merged it, also all the sim
configs use this simulated encoder:

http://git.mah.priv.at/gitweb/emc2-dev.git/commit/01448f442e1b4e45e5659dd0e4b9a38946b411a1

- Michael

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
Viesturs Lācis | 1 Apr 2012 08:52
Picon

Re: adding araisrobo (aka artek) branch:

2012/4/1 Yishin Li <ysli@...>:
>
> I don't think our modification breaks the existing spindle synchronization.
> And, I have no intention to do so. The comment for this issue was from the
> LinuxCNC community.

I feel little guilty for this one, as I have been mentioning this on
the list. I really hope that I have not made this up from nowhere -
here is a quote from Yishin's email, which I have based my opinion on:

2011/2/5 Yi-Shin Li <ysli@...>:
> On Thu, Feb 3, 2011 at 9:36 PM, Dave <EMC@...> wrote:
>>
>> S Curving?   How did you do that?
>>
> It's done with a finite state machine. Please refer to tpRunCycle() at tp.c
> at this link:
> https://github.com/artek/emc2/blob/master/src/emc/kinematics/tp.c
> We haven't implemented spindle synchronization yet.

Viesturs

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
Michael Haberler | 1 Apr 2012 10:48
Picon
Favicon

Re: adding araisrobo (aka artek) branch:

for the experimentally inclined, I've built the artek branch with the simulated spindle encoder thrown in

see notes here: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?ArtekBranch

changes from here: http://git.mah.priv.at/gitweb/emc2-dev.git/shortlog/refs/heads/arais-mah

-Michael

Am 01.04.2012 um 08:12 schrieb Michael Haberler:

> 
> Am 01.04.2012 um 06:54 schrieb Jon Elson:
> 
>> Yishin Li wrote:
> ...
> 
>> All you need is an encoder with index on the spindle.
> 
> which might even be a simulated one to start with; Jeff came up with one and I merged it, also all the sim
configs use this simulated encoder:
> 
> http://git.mah.priv.at/gitweb/emc2-dev.git/commit/01448f442e1b4e45e5659dd0e4b9a38946b411a1
> 
> - Michael
> 
> 
> 
> ------------------------------------------------------------------------------
> This SF email is sponsosred by:
> Try Windows Azure free for 90 days Click Here 
> http://p.sf.net/sfu/sfd2d-msazure
> _______________________________________________
> Emc-developers mailing list
> Emc-developers@...
> https://lists.sourceforge.net/lists/listinfo/emc-developers

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
Michael Haberler | 1 Apr 2012 17:50
Picon
Favicon

asking for feedback: sloc proposal (was: fixing interpreter "line numbers" and run-from-line)

I updated the proposal with a C implementation outline: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?LineNumbers

I'd appreciate if folks which got their hands oily on one of: task/motion/tp/interp/interplist 

would review proposal 

thanks in advance

- Michael

Am 21.03.2012 um 18:57 schrieb Michael Haberler:

> One of the glaring interpreter issues I consider repairing is the current state of affairs of "line numbers".
> 
> I have laid out the issue, and a sketch for a solution here:
> 
> http://wiki.linuxcnc.org/cgi-bin/wiki.pl?LineNumbers
> 
> I plan to do something about it - but only after the requirements have seen some peer review and consensus,
that is.
> 
> I encourage feedback, esp wrt to requirements and the open questions.
> 
> - Michael
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------------
> This SF email is sponsosred by:
> Try Windows Azure free for 90 days Click Here 
> http://p.sf.net/sfu/sfd2d-msazure
> _______________________________________________
> Emc-developers mailing list
> Emc-developers@...
> https://lists.sourceforge.net/lists/listinfo/emc-developers

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
Jan de Kruyf | 1 Apr 2012 18:50
Picon

Re: adding araisrobo (aka artek) branch:

good!

j.


On Sun, Apr 1, 2012 at 10:48 AM, Michael Haberler <mail17-Hlu4VFpx/Azk7+2FdBfRIA@public.gmane.org> wrote:
for the experimentally inclined, I've built the artek branch with the simulated spindle encoder thrown in

see notes here: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?ArtekBranch

changes from here: http://git.mah.priv.at/gitweb/emc2-dev.git/shortlog/refs/heads/arais-mah

-Michael

Am 01.04.2012 um 08:12 schrieb Michael Haberler:

>
> Am 01.04.2012 um 06:54 schrieb Jon Elson:
>
>> Yishin Li wrote:
> ...
>
>> All you need is an encoder with index on the spindle.
>
> which might even be a simulated one to start with; Jeff came up with one and I merged it, also all the sim configs use this simulated encoder:
>
> http://git.mah.priv.at/gitweb/emc2-dev.git/commit/01448f442e1b4e45e5659dd0e4b9a38946b411a1
>
> - Michael
>
>
>
> ------------------------------------------------------------------------------
> This SF email is sponsosred by:
> Try Windows Azure free for 90 days Click Here
> http://p.sf.net/sfu/sfd2d-msazure
> _______________________________________________
> Emc-developers mailing list
> Emc-developers <at> lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-developers


------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Emc-developers mailing list
Emc-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Emc-developers mailing list
Emc-developers@...
https://lists.sourceforge.net/lists/listinfo/emc-developers
Jon Elson | 1 Apr 2012 19:56

Re: adding araisrobo (aka artek) branch:

Michael Haberler wrote:
> Am 01.04.2012 um 06:54 schrieb Jon Elson:
>
>   
>> Yishin Li wrote:
>>     
> ...
>
>   
>> All you need is an encoder with index on the spindle.
>>     
>
> which might even be a simulated one to start with; Jeff came up with one and I merged it, also all the sim
configs use this simulated encoder:
>
> http://git.mah.priv.at/gitweb/emc2-dev.git/commit/01448f442e1b4e45e5659dd0e4b9a38946b411a1
>   
Yes, of course, if you only want to test gross functionality and not 
actually tap
a hole, then a very crude simulation should allow you to plot spindle 
rotation
vs. Z axis movement to verify the code is working properly.

Jon

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
Michael Haberler | 1 Apr 2012 23:51
Picon
Favicon

some more thoughts on line numbers

I'm really thinking aloud here - I'd be grateful for opionions nevertheless.

I'm puzzled at how line number is set on interplist nodes - I find 2 methods:

1. coming down from the interpreter as a canon/queuedcanon call parameter:

- in canon in: STRAIGHT_TRAVERSE RIGID_TAP STRAIGHT_PROBE UNLOCK_ROTARY ARC_FEED
- in queuedcanon in: enqueue_STRAIGHT_FEED enqueue_STRAIGHT_TRAVERSE enqueue_ARC_FEED

2. set by task, which calls interp.line() to and sets the line in interpl.set_line_number(), plus
emcStatus->task.readLine - this is the way how all other NML messages obtain their linenumber 

(1) seems logical - the interpreter always knows the current location

(2) worked as long as execution followed the 'read a line/execute a line' pattern, even if the source name,
type etc isnt passed along when calling oword procedures.

This strikes me as odd design - it assumes that task somehow is in the know when a line number changes, and that
knowledge isnt really task's business; it goes wrong as soon as the 'read a line/execute a line, and then
the line number changes' assumption is violated; in the very minimum it is violated by python glue code,
and there's the chance that stale location information is queued. Also, the negative
pseudoMdiLinenumber introduces a numbering scheme which is incompatible with the interpreters
internal view.  Actually its a wonder the whole thing lasted that long.

--

IMO it would be cleaner to retrieve that information at the point of use - namely whenever an interplist node
is appended, the interpl code would *call back* into the current interp (method interp.line() or
whatever it eventually will be)  to set location. 

I'd use the same method for the canon and queuedcanon commands in (1). The upside is that avoids a gazillion
of new canon call parameter just to pass location.

Then task could just retrieve linenumber/location from the interpl when the next NML command is fetched,
and mirror that in emcStatus->task.readLine and friends. Single source of information and no chance on a
missed update.

It's dawning on me that the right place to manage source contexts (filenames, MDI strings etc) and their
id's is also the interpl code - that's where everything has to go through.

--

what I'll do to as a first step to validate the approach:
- add a canon, and queuedcanon callback into the interp to retrieve location; with some extra care to obtain
the right information in the queuedcanon case
- same in the interplist code
- drop the set_line_number() use from task and exclusively *consume* that information from the
interplist, 
- the only authoritative source of location information will be the interpreter. That means
pseudoMdiLinenumber will vanish too.

and see how far I come. Actually. the strict oword checking code then can come back in too:
http://git.linuxcnc.org/gitweb?p=emc2.git;a=commit;h=73dcf03ed13064416219f2eff7150bb683e53530 .

-Michael

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure

Gmane